Sql Komutlarından View Oluşturma Ve Faydaları, Myadminde Gösterimi
İçindekiler
View Oluşturmanın Yararları
Veri güvenliği;
Veri tabanı içinde bulunan tablolardaki bazı sütunlarda bulunan bilgilerin, herkes tarafından görülmesi istenmeyebilir.
Örneğin, personelin maaşlarının herkes tarafından listelenebilir olması mahsurlu olabilir. Bu durumda, Personel adlı temel (base) tablodan, persview adlı bir view oluşturulabilir.
CREATE VIEW persview
AS SELECT sicil,sos_g_no,ad,soyad,dog_tar,adres,cinsiyet,bol_no,yon_s_g_n
FROM Personel;
persview adlı view, herkesin kullanımına açık, Personel adlı temel (base) tablo ise, yetkili kişiler dışındakilere, erişilemez hale getirilirse, maaşların herkes tarafından erişilebilir bilgi olması önlenmiş olur.
Bir view’den bilgi listelenmesi temel tablodan bilgi listelenmesinden farklı değildir.
SELECT *
FROM persview;
persview’den maaşlar hariç, tüm personel bilgileri listelenecektir.
Bir temel tablodan bir view oluşturulurken, temel tablodaki aynı sütun (alan) isimlerini kullanmak zorunda değildir. Örneğin, Parça adlı ve par_no, par_ad, pr_no, fiyat ve ağırlık adlı sütun (alan) isimlerini içeren tablo kullanılarak oluşturulan parview içinde, par_no yerine parc_no, fiyat yerine fiy ve ağırlık yerine ağır isimleri kullanılmıştır:
CREATE VIEW
Parview(parc_no,fiy,ağır)
AS SELECT par_no,fiyat,ağırlık
FROM Parça;
Sorgulamanın daha basit hale gelmesi
Karmaşık sorgulamalarda, bazı SELECT komutlarının sonuçları diğer SELECT komutlarınca kullanıldığında, sorgulamanın düzenlenmesinde yanlışlıklar yapma olasılığı artar.
Karmaşık sorgulamalar, VIEW özelliği kullanılarak daha basit hale getirilebilir. Burada temel fikir şudur: Madem ki bir view, bir sorgulama sonucu elde edilen bilgiyi (tabloyu) isimlendirerek elde edilen bir virtüel tablodur; o halde karmaşık SELECT komutu içinde, sonucu kullanılacak başka bir SELECT komutu kullanmak yerine, bu sonucu bir view olarak isimlendirerek, view adını kullanmak. Bazı durumlarda ise, işletmenin veri tabanı uygulamasında çok sık olarak sorulan karmaşık soruları bir view yapısı içinde saklayarak, daha sonra aynı tip sorgulamalar için bu view yapısını kullanarak daha basit ifadeler kullanmakta olasıdır.
Örnek: Satış bölümünde çalışan personelin herhangi birinden daha düşük maaş alan ve mühendislik bölümünde çalışan kişileri listelemek.
SELECT *
FROM Personel
WHERE maas<ANY(SELECT maas
FROM Personel
WHERE bol_no=2) AND
bol_no=1;
(Satış bölümü kodu 2 ve mühendislik bölümü kodu ise 1 kabul ediliyor.)
Şimdi bu örneğin tablosu bir view olarak saklanırsa:
CREATE VIEW S1view
AS SELECT *
FROM Personel
WHERE maas<ANY(SELECT maas
FROM Personel
WHERE bol_no=2) AND
bol_no=1;
bundan sonra aynı tip sorgulama için sadece
SELECT *
FROM S1view;
yazmak yeterli olacaktır.
Sadece view kullanılarak gerçekleşebilen sorgulamalar
Bir tablodan elde edilecek bilgiler için, iki kademeli işlem gerektiren sorgulamalarda, ilk adımda bir view oluşturup ikinci adımda esas sorgulamayı bu view yardımı ile gerçekleştirmek, çoğu kez kaçınılmaz bir durumdur.
Aşağıdaki örnek SQL ifadeleri bu konuda bir fikir verecektir:
Örnek: Her bölümde, o bölümdeki ortalama maaştan daha yüksek maaş alanları listeleyiniz.
Bu örnek için önce her bölümdeki ortalama maaşların bulunması gereklidir.
CREATE VIEW BOL_OR_VIEW(bol_no,ort,maas)
AS SELECT bol_no,AVG(maas)
FROM Personel
GROUP BY bol_no;
Daha sonra, yaratılan BOL_OR_VIEW yardımı ile (bu view, bölüm no’ları ve bölüm ortalama maaşlarını saklamaktadır) sorulan sorunun cevabı elde edilebilir:
SELECT *
FROM Personel
WHERE bol_no=BOL_OR_VIEW.bol_no
. AND.maas>ort_maas;
(Bu sorunun cevabını, şu ana kadar anlatılan diğer bilgilerle bulmaya çalışınız.)
Veri bütünlüğünün sağlanması
View oluşturma esnasında CHECK sözcüğünün kullanılması ile, o view’i oluştururken sağlanması gereken koşulların, daha sonra view içine veri ekleme ya da değişiklik işlemlerinde de ihmal edilmesi engellenmiş olur.
Örneğin aşağıdaki gibi bir VIEW oluşturulsun:
CREATE VIEW UST_PER_VIEW
AS SELECT FROM Personel
WHERE maas>25000000,
WITH CHECK OPTION;
Burada,maaşı 25000000’un üstünde olan personelden oluşan bir UST_PEVIEW adlı view oluşturulmuştur. Daha sonra bu view içine;
INSERT INTO UST_PER_VIEW
VALUES(27521,’27865427’,’Ayşe’
‘Okan’,{01/05/62},’Cumh. Cad. 46-Taksim’,
.F.,13000000,1,’27651112’);
komutu ile maaşı 13000000 olan bir personel eklenmek istendiği zaman şu hata mesajı alınacaktır.
Error: not enough non-null values
Eğer CHECK opsiyonu kullanılmasaydı hata mesajı alınmadan bu veri view içine yüklenecekti. Bir tablo ya da view üzerinde veri ekleme, güncelleme ve silme işlemleri bir sonraki bölümde incelenecektir.