65 SQL Görünümler (Views)
Görünümler, seçme sorgularınızı veritabanlarında veri sözlüğünde saklamınıza izin verir. Bu şekilde saklanan görünümler sanal tablo gibi çalışırlar. Özellikle yaygın ve karmaşık sorguları soyutlamak için çok kullanışlıdır. Aşağıdaki şekil, birden fazla tablodan sütunlar içeren bir görünümü göstermektedir:
Görünümler veritabanlarında yaygın bir kavramdır ve tüm veritabanları bunu destekler. Örnek veritabanlarımız için belgelere bakın.
Basit lab
- Chinook veritabanı join örnek sorgusu
SELECT A.Name AS ArtistName
AS AlbumTitle
, B.Title AS TrackName
, T.Name FROM Artist A
INNER JOIN Album B
ON A.ArtistId = B.ArtistId
INNER JOIN Track T ON T.AlbumId = B.AlbumId
- “create view name as select” kullanarak görünüm oluşturma
CREATE VIEW ArtistTracks
AS
SELECT A.Name AS ArtistName
AS AlbumTitle
, B.Title AS TrackName
, T.Name FROM Artist A
INNER JOIN Album B
ON A.ArtistId = B.ArtistId
INNER JOIN Track T ON T.AlbumId = B.AlbumId
- select from view
select * from ArtistTracks;
Kitaplardaki yaygın bir örnek erişim kontrolü (access control) üzerinedir. Tablolara kendisine erişim vermek yerine, görünümün kendisine erişim verebilirsiniz. Bu kullanımı hiç görmedim.
Kitaplardaki yaygın bir örnek erişim kontrolü (access control) üzerinedir. Tablolara kendisine erişim vermek yerine, görünümün kendisine erişim verebilirsiniz. Bu kullanımı hiç görmedim.
Görünümlerdeki satırlar, altta yatan tablolara 1’e 1 karşılık geliyorsa, görünümler INSERT ifadelerinin hedefi olabilir; örneğin, toplu sorgular (min,max) için asla çalışmayacaktır. Sqlite, görünüm yalnızca tek tablo olduğunda bu özelliğe izin verir. Ben bu özelliği sevmiyorum ve asla kullanmıyorum.
65.1 Somutlaştırılmış görünümler (materializedViews )
Normalde, bir görünümü sorgulamak sanal bir tabloyu sorgulamak gibidir. Sorgu sırasında gerekli veriler kullanılan tablolardan çekilir. Performans nedenlerinden dolayı, görünümlerden elde edilen sonuçların daha hızlı olması gerekebilir. SQL Server ve Oracle bu amaç için somutlaştırılmış görünümler sunar. Sql Server terminolojisi için hem dizinlenmiş (indexed) hem de somutlaştırılmış görünümleri kullanır. Dizinlenmiş görünümler, daha hızlı hale getirmek için somutlaştırılmış görünümlere eklenebilir.
PostgreSQL, IBM DB2 ve Sybase SQL Anywhere gibi diğer veritabanları da bu kavramı destekler
Sonuçların fiziksel depolamada ne sıklıkla güncellendiğine yenileme sıklığı denir. Bu tür görünümler sıklıkla güncellenen tablolarla ilgili sorunlara sahip olabilir ancak toplu sorgular için çok faydalıdır.
65.2 Bilgi Şeması (Information Schema) görünümleri
Sistem görünümleri, veritabanı sisteminin kendisi hakkında dinamik bilgiler verir.
Sistem görünümlerine en yararlı örnek SQL Standard Information şema görünümleridir: Bu görünümler, veritabanlarından tablo, sütun, görünüm ve diğer nesne bilgilerini almak için kullanılır.
- INFORMATION_SCHEMA.TABLES
- INFORMATION_SCHEMA.COLUMNS
- INFORMATION_SCHEMA.VIEWS
- and others
SQL Standard’ın bu çok kullanışlı özelliği için veritabanının kendi yardım belgelerine bakınız. Bilgi şeması görünümleri aşağıdaki veritabanları tarafından desteklenmektedir.
- Sql server
- mysql
- postgre sql and other databases.
Ne yazık ki hem sqlite hem de oracle bu standardı desteklemiyor. Bağlantı wikipedia sayfası hangi veri tabanlarının bu özelliği desteklediğini gösterir.
Bu bilgilere veritabanına özgü tablo ve görünümlerden de ulaşılabilir.
65.2.1 Performans Görünümler
Veritabanlarındaki sistem performans kullanımını görmek için sistem görünümleri de mevcuttur. Örneğin: hangi işlemlerin CPU yoğunluğunun yüksek olduğunu, hangilerinin çok uzun sürdüğünü vb.