SQL VIEW
View View’ler select ifadesi ile tanımlanmış sanal tablolardır. Temel amacı base tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal tabloymuş gibi yeniden sorgulayabilmemizi sağlamaktır.
View’ler; karmaşık sorguları basitleştirmek; sorgu süresini kısaltmak ve ağ üzerindeki trafiği düşürmek; erişim izinlerini düzenlemek; farklı sunuculardaki benzer verileri karşılaştırmak için kullanılır.
Özellikleri 1- Bir adet select sorgusundan oluşur. 2- Tablo gibi sorgulanabilir. 3- Yeni kayıt eklenebilir (Gruplama sorguları ve diğer bazı durumlar hariç) 4- Mevcut kayıtlar değiştirilebilir. (Gruplama sorguları ve diğer bazı durumlar hariç) 5- Kayıtlar silinebilir(Gruplama sorguları ve diğer bazı durumlar hariç) 6- Bazı kolonlar hesaplama ile oluşur. Bu kolonlar güncellenemez. 7- Tablodaki kısıtlamalar view’leri de etkiler. 8- View’i oluşturan sorguda ORDER BY deyimi bulunamaz.
View 2 şekilde oluşturulabilir: T-SQL kod yazarak Object Explorer’da veritabanı görünümünden New View komutunu vererek.
View Oluşturma View oluşturmak için CREATE VIEW ifadesi kullanılır. Kullanımı CREATE VIEW view_adı AS SELECT sütun_adları FROM temel_tablo
View çalıştırma Oluşturulan view aşağıdaki şekilde çalıştırılır. select * from view_adı [varsa where ile şartlar]
Örnek create view vwComp as select CompanyName, OrderDate from Customers as c join Orders as o on c.CustomerID=o.CustomerID En fazla 1024 sütun oluşturulabilir.
View’de Değişiklik Yapmak View üzerinde değişiklik yapmak için ALTER deyimi kullanılır. ALTER VIEW view_adı AS SELECT ifadesi WITH seçenekler
View Silmek View’leri silmek için DROP deyimi kullanılır. DROP VIEW view_adı
with schemabinding ifadesi with schemabinding view’in bağlı bulunduğu tablodaki kolonların silinip silinmemesi için onay ister. ALTER VIEW view_adı WITH schemabinding AS SELECT ifadesi
with encryption ifadesi Viewleri şifreleyip sorguların görünür olmasını engeller. Dolayısıyla view’in tekrar açılıp güncellenmesi engellenmiş olur. ALTER VIEW view_adı WITH encryption AS SELECT ifadesi
With Check Option 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. ALTER VIEW view_adı AS SELECT ifadesi WITH check option
Örnek: SiparisDetay tablosu
Soru 1 SiparisDetay tablosundan, tutar değerini de içeren vw_SiparisDetay isminde bir view oluşturunuz (tutar = miktar * fiyat)
Soru 2 vw_SiparisDetay view’ini sorgulayarak 4 nolu siparişin içeriğini listeleyiniz.
Soru 3 vw_SiparisDetay viewini sorgulayarak 4 nolu siparişte bulunun ürünlerin miktar toplamını ve tutar toplamını bulan sorgu yazınız.
Soru 4 Vw_SiparisDetay view’ine aşağıdaki veriyi ekleyiniz. Sipariş No:1 Urun Kodu: F Fiyat: 1.7 Miktar: 3 Birimi: Paket
Soru 5 Vw_MiktarGoster ismiyle bir view oluşturunuz. Bu view; Miktar alanında 5 ve 5 den büyük miktarda olan siparişleri göstersin. Ayrıca daha sonra veri eklenmesi yada güncellenmesi durumunda şart kurallarına uyulsun. create view vw_MiktarGoster as select * from SiparisDetay where Miktar>=5 WITH check option
Soru 6 Vw_MiktarGoster view’i kullanılarak 4. soruda verilen veriyi yeniden ekleyelim. Sipariş No:1 Urun Kodu: F Fiyat: 1.7 Miktar: 3 Birimi: Paket insert into Vw_MiktarGoster (SiparisNo,UrunKodu,Fiyat,Miktar, Birimi) Values (1,'F',1.7,3,'PAKET') Msg 550, Level 16, State 1, Line 1 The attempted insert or update failed because the target view either specifies WITH CHECK OPTION or spans a view that specifies WITH CHECK OPTION and one or more rows resulting from the operation did not qualify under the CHECK OPTION constraint. The statement has been terminated.