Bazı tablo ifadelerinin ömrü, tanımlandıkları ve çağrıldıkları sorgu ile sınırlıdır. Ancak view ve TVF’ler kalıcı olarak bir veri tabanında saklanabilir ve tekrar kullanılabilir. View, bir SQL Server veri tabanında depolanan bir tablo ifadesidir. Türetilmiş tablolar ve CTE’ler gibi, view’lar da SELECT ifadeleriyle tanımlanır. Böylelikle, yalnızca türetilmiş tablo ve CTE’lerde mümkün olan modülerlik ve sarmalama işlemleri avantajlarının yanı sıra, aynı zamanda sorgu kapsamındaki tablo ifadelerinden daha fazla güvenlik ve yeniden kullanılabilirlik sağlar.

View Şeklinde Sonuç Döndüren Sorgular Yazma

View, bir SQL Server veri tabanında tanımı meta veri olarak depolanan isimlendirilmiş tablo ifadesidir. View’lar, tablolar gibi aynı şekilde sorgular için veri  kaynağı olarak kullanılabilir. Ancak, view’lar verileri kalıcı olarak depolamaz; view runtime’da çalıştırılarak sorgu atılır.

Veri kaynağı bir view kullanan sorgu yazmak için, tablo kaynağının kullanılacağı her yerde (örneğin FROM veya JOIN ifadesi gibi) view ismini kullanın:

SELECT <select_list>
FROM <view_name>
ORDER BY <sort_list>; 

Bu örnekte view’ın tanımında herhangi bir sıralama düzeni bulunmadığından sıralama ORDER BY ifadesiyle sağlanmıştır.

Aşağıdaki sorgu, TSQL veri tabanında depolanan örnek amaçlı bir view kullanılmıştır. FROM ifadesinde tablo mu yoksa view mı kullanıldığını belirlemenin bir yolu yoktur:

SELECT custid, ordermonth, qty
FROM Sales.CustOrders;

Dönen sonuçlar, aynı tablo kullanan herhangi başka bir sorgu sonucundan ayırt edilemez:

custid ordermonth qty
7 2006-07-01 00:00:00.00050
13 2006-07-01 00:00:00.00011
14 2006-07-01 00:00:00.00057

Bir tablo ve view arasındaki benzerlik bize avantaj sağlar; bir uygulamada, tablolar yerine view’ları kullanılabilir ve böylece uygulama tablolarda herhangi bir değişiklik halinde korunmuş olur. View aynı sütun yapısını sunmaya devam ederse uygulama tutarlı sonuçlar alır. View’lar, verileri çekmek amacıyla veri tabanında bulunan bir API olarak düşünülebilir.

Veri tabanı yöneticileri ayrıca view’ları güvenlik katmanı olarak kullanabilir ve diğer kullanıcılara temel kaynak tablolara erişmelerine izin vermeden view kullanmalarına izin verilir.

View Oluşturma

Sorgunuzda bir view kullanırken, view’ın veri tabanında uygun izne sahip bir veri tabanı geliştiricisi veya yöneticisi tarafından oluşturulması gerekir. Veri tabanı güvenliğinin kapsamı bu dersin kapsamı dışında olsa da örnek veri tabanında view oluşturmak için izne gerek olmayacaktır.

Bir view oluşturmak için, SELECT ifadesini adlandırarak depolamak üzere CREATE VIEW TSQL deyimini kullanın. View tanımlanırken içerisinde TOP, OFFSET/FETCH veya FOR XML ifadesi kullanılmadıkça, ORDER BY ifadesinin kullanımına izin verilmez. CREATE VIEW ifadesinin syntax’ı şu şekildedir:

CREATE VIEW <schema_name.view_name> [<column_alias_list>]
[WITH <view_options>]
AS select_statement; 

Aşağıdaki örnek, TSQL örnek veri tabanında Sales.CustOrders adlı bir view oluşturur. Örnekteki kodun çoğu SELECT ifadesi tanımlamasıdır:

CREATE VIEW Sales.CustOrders
AS
SELECT
 O.custid,
 DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0) AS ordermonth,
 SUM(OD.qty) AS qty
FROM Sales.Orders AS O
 JOIN Sales.OrderDetails AS OD
 ON OD.orderid = O.orderid
GROUP BY custid, DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0);

Daha sonraki bölümlerde öğreneceğimiz sys.views gibi sistem kataloğu view’ları kullanarak sistem meta verilerini sorgulayabiliriz.

Bir view’ı sorguda kullanmak için, tabloyu kullanır gibi FROM ifadesinde view ismini yazın:

SELECT custid, ordermonth, qty
FROM Sales.CustOrders; 

Kaynak:
Views