MySQL Görünümleri: Örneklerle Tablolardan Görünüm Nasıl Oluşturulur

İçindekiler:

Anonim

MySQL'de Görünümler nedir?

GÖRÜNÜMLER , kendilerine ait herhangi bir veriyi depolamayan ancak diğer tablolarda depolanan verileri görüntüleyen sanal tablolardır. Diğer bir deyişle, GÖRÜNÜMLER SQL Sorgularından başka bir şey değildir. Bir görünüm, bir tablodan tüm veya birkaç satırı içerebilir. Bir MySQL görünümü, bir tablodan veya birçok tablodaki verileri gösterebilir.

MySQL Görünümleri sözdizimi

Şimdi MySQL'de bir görünüm oluşturmak için kullanılan temel sözdizimine bakalım.

CREATE VIEW `view_name` AS SELECT statement;

NEREDE

  • "CREATE VIEW" görünüm_adı " , MySQL sunucusuna " görünüm_adı " adlı veritabanında bir görünüm nesnesi oluşturmasını söyler.
  • "AS SELECT ifadesi" MySQL Görünümlerinde paketlenecek SQL ifadeleridir. Bir SELECT deyimi olabilir, bir tablodan veya birden çok tablodan veri içerebilir.

MySQL'de Görünümler Nasıl Oluşturulur

Aşağıda, MySQL'de görünüm oluşturmak için adım adım bir işlem yer almaktadır:

Şimdi "myflixdb" yi kullanarak ilk görünümümüzü oluşturalım, üyeler tablosunda görülen sütunları kısıtlayan basit bir görünüm oluşturacağız.

Yetkilendirme gereksinimlerinin, hesap departmanının üye tablosundan sadece üye numarasını, adını ve cinsiyetini görebileceğini belirttiğini varsayalım. Bunu başarmak için bir GÖRÜNÜM oluşturabilirsiniz -

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

Yukarıdaki betiği MySQL çalışma tezgahında myflixdb'ye karşı çalıştırmak ve veritabanı gezgininde views düğümünü genişletmek bize aşağıdaki sonuçları verir.

Account_v_members nesnesinin artık veritabanı görünümleri nesnelerinde göründüğünü unutmayın. Şimdi aşağıdaki MySQL oluşturma görünümü örneğinde gösterildiği gibi görünümden tüm alanları seçen bir SELECT deyimi yürütelim.

SELECT * FROM `accounts_v_members`;

Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb'ye karşı çalıştırmak bize aşağıda gösterilen aşağıdaki sonuçları verir.

 
membership_number full_names gender
1 Janet Jones Female
2 Janet Smith Jones Female
3 Robert Phil Male
4 Gloria Williams Female
5 Leonard Hofstadter Male
6 Sheldon Cooper Male
7 Rajesh Koothrappali Male
8 Leslie Winkle Male
9 Howard Wolowitz Male

Yalnızca hesap departmanı için yetkili sütunlar iade edildi. Üyeler tablosunda bulunan diğer ayrıntılar gizlendi.

Belirli bir görünümü oluşturan SQL ifadelerini görmek istiyorsak, bunu yapmak için aşağıda gösterilen komut dosyasını kullanabiliriz.

GÖSTER OLUŞTURUN GÖRÜNÜM `accounts_v_members`;

Yukarıdaki komut dosyasını çalıştırmak size görünüm adını ve görünümü oluşturmak için kullanılan SQL SELECT deyimlerini verir.

MySQL'de Birleşimler ve Görünümler

Şimdi birden çok tabloyu içeren ve birleşimleri kullanan oldukça karmaşık bir örneğe bakalım.

Üyeler, filmler ve film kiralamaları olmak üzere üç (3) tablodan bilgi alan JOIN'i paketleyeceğiz. Bunu başarmamıza yardımcı olan senaryo aşağıdadır.

CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;

Yukarıdaki komut dosyalarını yürütmek, myflixdb'mizde general_v_movie_rentals adlı görünümü oluşturur.

Şimdi general_v_movie_rentals adlı tablodan tüm alanları seçelim.

SELECT * FROM `general_v_movie_rentals`;

Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen aşağıdaki sonuçları verir.

 
membership_number full_names title transaction_date return_date
1 Janet Jones Pirates of the Caribean 4 20-06-2012 28-06-2012
1 Janet Jones Forgetting Sarah Marshal 22-06-2012 25-06-2012
3 Robert Phil Forgetting Sarah Marshal 22-06-2012 25-06-2012
2 Janet Smith Jones Forgetting Sarah Marshal 21-06-2012 24-06-2012
3 Robert Phil X-Men 23-06-2012 28-06-2012

Üyeler, filmler ve film kiralama ayrıntıları hakkında bilgi almak için karmaşık JOIN sorgusu yazmamız gerekmediğini unutmayın. Görünümü sıradan bir SELECT deyiminde diğer sıradan tablolar gibi kullandık. Görünüm, myflixdb'nin üzerinde çalışan uygulama sisteminin herhangi bir yerinden çağrılabilir.

MySQL'de Görünümleri Bırakma

DROP komutu, artık gerekli olmayan bir görünümü veritabanından silmek için kullanılabilir. Bir görünümü düşürmek için temel sözdizimi aşağıdaki gibidir.

DROP VIEW ` general_v_movie_rentals `;

Görünümler neden kullanılmalı?

Görünümleri öncelikle aşağıdaki 3 nedenden dolayı kullanmak isteyebilirsiniz

  • Nihayetinde, veri gereksinimleri için bir veritabanı kullanacak uygulamalar oluşturmak için SQL bilginizi kullanacaksınız. Tabloları kullanmak yerine uygulamanızda orijinal tablo yapısının VIEWS'lerini kullanmanız önerilir. Bu, DB'nizi yeniden düzenlediğinizde, eski kodunuzun uygulamayı bozmadan görünüm aracılığıyla orijinal şemayı görmesini sağlar.
  • GÖRÜNÜMLER yeniden kullanılabilirliği artırır. Tekrar tekrar birleştirme içeren karmaşık sorgular oluşturmanız gerekmez. Tüm karmaşıklık tek bir sorgu satırına dönüştürülür VIEWS kullanın. Bu tür sıkıştırılmış kodun uygulamanıza entegre edilmesi daha kolay olacaktır. Bu, yazım hatası olasılığını ortadan kaldıracak ve kodunuz daha okunaklı olacaktır.
  • VIEWS veri güvenliğinde yardım. Kullanıcılara yalnızca yetkili bilgileri göstermek ve kredi kartı numaraları gibi hassas verileri gizlemek için görünümleri kullanabilirsiniz.

Özet

  • Görünümler sanal tablolardır; döndürülen verileri içermezler. Veriler, SELECT deyiminde belirtilen tablolarda saklanır.
  • Görünümler, yetkili kullanıcılara yalnızca amaçlanan verileri göstererek veritabanının güvenliğini artırır. Hassas verileri gizlerler.
  • Tekrar tekrar karmaşık sorgular yazmadığınız için görünümler hayatı kolaylaştırır.
  • Bir GÖRÜNÜM üzerinde INSERT, UPDATE ve DELETE kullanmak mümkündür. Bu işlemler, GÖRÜNÜM'ün temel tablolarını değiştirecektir. Göz önünde bulundurulması gereken tek nokta, GÖRÜNÜM'ün referans verdiği tabloların tüm NOT NULL sütunlarını içermesidir. İdeal olarak, güncelleme için VIEWS kullanmamalısınız.