09 December 2016

SQL View’ler Konusu

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.

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

Ö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 2 şekilde oluşturulabilir:

  1. T-SQL kod yazarak
  2. Object Explorer’da veritabanı görünümünden New View komutunu vererek.

Oluşturulan view aşağıdaki şekilde çalıştırılır

select * from view_adı

View’de Değişiklik Yapmak

View üzerinde değişiklik yapmak için ALTER deyimi kullanılır.

 ALTER VIEW view_adı
 WITH seçenekler
 AS
 SELECT ifadesi

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ı kilitleyip o kolonların silinmesini engeller.

 ALTER VIEW view_adı
 WITH schemabinding
 AS
 SELECT ifadesi

with encryption ifadesi

Viewleri şifreleyip sorguların görünür olmasını engeller

 ALTER VIEW view_adı
 WITH encryption
 AS
 SELECT ifadesi

Viewlerde CRUD işlemleri

Kural: View içerisinde bir tablo bulunuyorsa Insert, Delete gibi işlemleri yapabiliriz, aksi halde yapamayız.

Örnek:

create view vwProductsLite
 as
 select ProductName, UnitPrice, UnitsInStock
 from Products
insert into vwProductsLite(ProductName, UnitPrice, UnitsInStock)
 values('Karpuz', 12, 1000)
delete vwProductsLite
 where ProductName = 'Karpuz'

Viewlerde Kayıp Veri Olayı

with check option – görünmeyen bir kayıtın eklenmesini istemiyorsak bu durumda With Check Option devreye alınmalı.

 ALTER VIEW DENEME10 AS
 SELECT * FROM SHIPPERS
 WHERE SHIPPERID WITH CHECK OPTION

Artık bu view kendi gösteremediği kayıtların kendi üzerinde işlenmesine izin vermeyecek.

Comments

  1. c# kodlama tarafında view sorgusunu nasıl çalıştırır nasıl tablo çekeriz.