SQL Server View Nedir?, View Kullanımı

İlk olarak view nedir, niye ihtiyaç duyulmuştur, nasıl kullanılır gibi sorulara cevap verip uygulama içerisinde örneklerle açıklayalım.
View En basit haliyle sanal tablodur, yani aslında olmayan daha önceden oluşturulan tablolardan sizin seçtiğiniz kriterlere uyan bilgileri içeren sanal tablodur.
Peki View’lere niye ihtiyaç duyulmuştur, birden fazla tablosu olan bir veritabanı içerisinde yapacağınız sorgularda sürekli olarak innerjoin veya daha farklı sorgu ifadeleri ile karmaşık bilgileri seçiyorsunuz, yada tablonuz da size veya firmanıza ait özel bilgiler bunlara herkesin ulaşmasını istemiyorsunuz sadece belli alanları seçerek oluşturacağınız tablo ile verilerinizin güvenliğini sağlayabilirsiniz. İşte bu yapıya verilen İsim “View” dir.
İyi hoşda nasıl kullanacağız diyorsanız Aşağıdaki örnek tablo işinize yarar…

Özellikleri aşağıda verilen SiparisDetay tablosunu oluşturunuz.
Kolon Adı Data Tipi Kısıtlamalar
SiparisNo int
UrunKodu char(10)
Miktar Float
Fiyat Money
Birimi char(5)
Aciklama varchar(50)

CREATE TABLE SiparisDetay (
SiparisNo int, UrunKodu char(10), Miktar float, Fiyat money, Birimi char(5),Aciklama varchar(50))

SiparisDetay tablosuna bilgileri girin

insert SiparisDetay (SiparisNo, UrunKodu, Miktar, Fiyat, Birimi,Aciklama) VALUES (1,'A',5,1,'ADET',null)
go
insert SiparisDetay (SiparisNo, UrunKodu, Miktar, Fiyat, Birimi,Aciklama) VALUES (1,'B',1,2,'ADET','Hediyelik')
go
insert SiparisDetay (SiparisNo, UrunKodu, Miktar, Fiyat, Birimi,Aciklama) VALUES (2,'C',7,1.5,'KG',null)
go
insert SiparisDetay (SiparisNo, UrunKodu, Miktar, Fiyat, Birimi,Aciklama) VALUES (4,'B',2,2,'ADET',null)
go
insert SiparisDetay (SiparisNo, UrunKodu, Miktar, Fiyat, Birimi,Aciklama) VALUES (3,'D',8,1.5,'PAKET','ÖZEL PAKET')
go
insert SiparisDetay (SiparisNo, UrunKodu, Miktar, Fiyat, Birimi,Aciklama) VALUES (3,'A',1,3,'ADET',null)
go
insert SiparisDetay (SiparisNo, UrunKodu, Miktar, Fiyat, Birimi,Aciklama) VALUES (4,'D',2,4,'PAKET',null)
go
insert SiparisDetay (SiparisNo, UrunKodu, Miktar, Fiyat, Birimi,Aciklama) VALUES (4,'A',10,1,'ADET',null)
go
insert SiparisDetay (SiparisNo, UrunKodu, Miktar, Fiyat, Birimi,Aciklama) VALUES (4,'A',10,1,'ADET',null)

SiparisDetay tablosunu tutar değerini de içerecek şekilde vwSiparisDetay adında bir view oluşturunuz.

CREATE VIEW vwSiparisDetay AS SELECT *, Miktar * Fiyat AS Tutar FROM SiparisDetay

Örnek 5
Tüm vwSiparisDetay View içeriğini veren sorguyu yazınız.

use ornekLtd
go
SELECT * FROM vwSiparisDetay

Örnek 6
vwSiparisDetay view’ini sorgulayarak 4 nolu siparişte bulunan ürünlerin urunkodu, miktari, fiyati ve tutarını veren sorgu yazınız.

-- İstediğimiz bilgi
SELECT UrunKodu, Miktar, Fiyat, Tutar FROM vwSiparisDetay WHERE SiparisNo=4
-- Tüm liste
SELECT * FROM vwSiparisDetay
Go

Örnek 7
vwSiparisDetay view’ini sorgulayarak 4 nolu siparişte bulunan urunlerin toplam tutarı ve toplam miktarını veren sorgu yazınız.

-- İstediğimiz bilgi (HAVING ile)
SELECT SiparisNo, SUM(Miktar) as ToplamMiktar, SUM(Tutar) as ToplamTutar FROM vwSiparisDetay 
GROUP BY SiparisNo HAVING SiparisNo=4
-- ikinci yazım şekli (WHERE deyimi)
SELECT SiparisNo, SUM(Miktar) as ToplamMiktar, SUM(Tutar) as ToplamTutar FROM vwSiparisDetay 
WHERE SiparisNo=4 GROUP BY SiparisNo
-- Tüm liste
SELECT * FROM vwSiparisDetay
Go

Örnek 8
vwSiparisDetay view’ine aşağıdaki bilgiyi ekleyiniz.

insert vwSiparisDetay (SiparisNo, UrunKodu, Fiyat, Miktar, Birimi) VALUES (1,'D',1.5,3,'PAKET')
go
-- Tüm liste
SELECT * FROM vwSiparisDetay
Go

Örnek 9
SiparisDetay tablosunun ilk 4 kaydını listeleyiniz.

-- İstediğimiz bilgi
SELECT TOP 4 * FROM SiparisDetay
-- Tüm liste
SELECT * FROM vwSiparisDetay
Go

Örnek 10
SiparisDetay tablosunun ilk %20 kaydını listeleyiniz.

-- İstediğimiz bilgi
SELECT TOP 20 PERCENT * FROM SiparisDetay
-- Tüm liste
SELECT * FROM vwSiparisDetay
Go

Örnek 11
SiparisDetay tablosunda SiparisNo 4 olan kayıtları benzersiz olarak listeleyiniz.

-- İstediğimiz bilgi
SELECT DISTINCT * FROM SiparisDetay WHERE SiparisNo=4
-- Tüm siparisno=4 olan liste
SELECT * FROM SiparisDetay 
WHERE SiparisNo=4

Örnek 12
SiparisDetay tablosunda bulunan ürünlerin listesini veren sorguyu yazınız.

-- İstediğimiz bilgi 
-- (DISTINCT) kullanarak
SELECT DISTINCT urunkodu FROM SiparisDetay 
-- İstediğimiz bilgi
-- (DISTINCT) kullanmadan
SELECT urunkodu FROM SiparisDetay 

Örnek 13
En çok satılan ilk 2 ürünü bulan sorguyu yazınız.

-- İstediğimiz bilgi 
SELECT TOP 2 UrunKodu, SUM(Miktar) as ToplamMiktar FROM SiparisDetay GROUP BY UrunKodu ORDER BY SUM(Miktar) DESC
Go
-- Tüm ürün satislari
SELECT UrunKodu, SUM(Miktar) as ToplamMiktar FROM SiparisDetay GROUP BY UrunKodu ORDER BY SUM(Miktar) DESC
Go

Örnek 14
Urun Satış miktarı veren sorgunun bulunduğu bir view oluşturunuz. View adı : vwSatisMiktar

-- View oluşturan sorgu
CREATE VIEW vwSatisMiktar AS 
SELECT UrunKodu, SUM (Miktar) as ToplamMiktar FROM SiparisDetay GROUP BY UrunKodu

Örnek 15
vwSatisMiktar view’inden faydalanarak A ve C toplam satisini veren sorgu oluþturunuz.

-- İstediğimiz bilgi 
SELECT * FROM vwSatisMiktar WHERE UrunKodu in ('A','C') 
-- Tüm tablo
SELECT * FROM vwSatisMiktar
go

Örnek 16
vwSatisMiktar view’inin içindeki sorguyu
toplam miktar ve toplam sayıyı verecek şekilde oluşturunuz.

ALTER VIEW vwSatisMiktar AS SELECT UrunKodu, SUM (Miktar) as ToplamMiktar, COUNT(*) as Sayi FROM SiparisDetay 
GROUP BY UrunKodu

Örnek 17
Notlar tablosunu BölümNo’suna göre gruplayıp, ortalama notu ve sayısını veren sorguyu yazınız.

-- İstediğimiz bilgi 
SELECT * FROM vwSatisMiktar WHERE UrunKodu in ('A','C')
-- Tüm tablo
SELECT * FROM vwSatisMiktar
go

Örnek 18
vwSiparisDetay view’inden tüm siparişlerin toplam tutarını veren view oluşturunuz. View adı : vwToplamTutarlar

-- İstediğimiz bilgi 
CREATE VIEW vwToplamTutarlar AS SELECT SiparisNo, SUM(Tutar) AS ToplamTutar FROM vwSiparisDetay GROUP BY SiparisNo

Örnek 19
vwToplamTutarlar tablosunu sorgulayarak Toplam Tutarı en büyük olan ilk iki kaydı getirin

-- İstediğimiz bilgi 
SELECT TOP 2 * FROM vwToplamTutarlar ORDER BY ToplamTutar DESC
-- Tüm tablo
SELECT * FROM vwToplamTutarlar
go

Örnek 20
vwToplamTutarlar tablosunu sorgulayarak Toplam Tutarı enbüyük olan ilk iki kaydı getirin

-- İstediğimiz bilgi 
SELECT TOP 2 * FROM vwToplamTutarlar ORDER BY ToplamTutar 
-- Tüm tablo
SELECT * FROM vwToplamTutarlar

Pin It on Pinterest