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.