SQL VIEW nedir
- Ali
- | 30 Nis 2025
- | SQL
Herkese merhaba Ben Ali,
Veritabanı uygulamalarında çoğu zaman belirli sorguları tekrar tekrar yazmamız gerekebilir. Bu durum hem zaman kaybına yol açar hem de kodun okunabilirliğini ve bakımını zorlaştırır. İşte bu gibi durumlarda SQL VIEW (Görünüm) devreye girer.
View Nedir
SQL'de View, bir veya birden fazla tablodan elde edilen sorgu sonucunun sanal bir tablo gibi kullanılmasını sağlayan bir yapıdır. Bir view, fiziksel olarak veri saklamaz; sadece arkasında yatan sorguyu çalıştırarak sonuç üretir. Bu sayede sık kullanılan karmaşık sorgular daha sade ve okunabilir hale getirilir.
- View, sanal bir tablodur.
- Gerçek bir tablo gibi
SELECT
sorgularında kullanılabilir. - Verileri saklamaz, sadece hazır sorgu sonucunu sunar.
View Nasıl Oluşturulur?
View oluşturmak için CREATE VIEW
komutu kullanılır.
Aynı şekilde bir view silmek için DROP VIEW
, değiştirmek için ise ALTER VIEW
komutları kullanılır.
CREATE VIEW View_adi AS SELECT ... FROM ... WHERE ...
Örnek View Uygulaması
Aşağıda birçok tabloyu birleştiren ve müşteri sipariş, ürün, çalışan, tedarikçi ve nakliyeci bilgilerini içeren bir sorgu örneği yer alıyor. Bu tür sorgular genellikle raporlamalarda ya da ekranlarda tekrar tekrar ihtiyaç duyulur.
Bu örneği oluşturabilmeniz için NORTHWIND veritabanına ihtiyacınız var. Eğer yoksa ve nasıl kurulacağını bilmiyorsanız "NORTHWIND veritabanı kurulumu" makaleme göz atabilirsiniz.
SELECT ISNULL(O.OrderDate,'') AS [Sipariş Tarihi], ISNULL(O.ShipCountry,'') AS [Sipariş Ülke], ISNULL(O.ShipCity,'') AS [Sipariş Şehir], ISNULL(O.ShipRegion,'') AS [Sipariş Bölge], ISNULL(O.ShipAddress,'') AS [Sipariş Adres], ISNULL(OD.Discount,0) AS [Sipariş İndirim Oranı], ISNULL(OD.UnitPrice,0) AS [Sipariş Birim Fiyat], ISNULL(OD.Quantity,0) AS [Sipariş Miktar], ISNULL(C.CompanyName,'') AS [Müşteri Firma Adı], ISNULL(C.Country,'') AS [Müşteri Ülke], ISNULL(C.City,'') AS [Müşteri Şehir], ISNULL(C.Address,'') AS [Müşteri Adres], ISNULL(C.Phone,'') AS [Müşteri Telefon Numarası], ISNULL(C.ContactTitle,'') AS [Müşteri İletişim Pozisyon], ISNULL(P.ProductName,'') AS [Ürün Adı], ISNULL(P.UnitPrice,0) AS [Ürün Birim Fiyat], ISNULL(P.UnitsInStock,0) AS [Ürün Stok], ISNULL(S.CompanyName,'') AS [Tedarikçi Firma Adı], ISNULL(S.Country,'') AS [Tedarikçi Ülke], ISNULL(S.City,'') AS [Tedarikçi Şehir], ISNULL(S.Address,'') AS [Tedarikçi Adres], ISNULL(S.Phone,'') AS [Tedarikçi Telefon Numarası], ISNULL(E.FirstName,'') AS [Çalışan Adı], ISNULL(E.LastName,'') AS [Çalışan Soyadı], ISNULL(SS.CompanyName,'') AS [Nakliyeci Adı] FROM Orders O LEFT JOIN [Order Details] OD WITH(NOLOCK) ON OD.OrderID = O.OrderID LEFT JOIN Customers C WITH(NOLOCK) ON O.CustomerID = C.CustomerID LEFT JOIN Products P WITH(NOLOCK) ON OD.ProductID = P.ProductID LEFT JOIN Suppliers S WITH(NOLOCK) ON P.SupplierID = S.SupplierID LEFT JOIN Employees E WITH(NOLOCK) ON O.EmployeeID = E.EmployeeID LEFT JOIN Shippers SS WITH(NOLOCK) ON O.ShipVia = SS.ShipperID
Bu sorgu oldukça uzun ve karmaşık yapıda gelebilir. Sürekli yazmak zahmetli olabilir. Bunun yerine aşağıdaki gibi bir view ile sanal bir tablo oluşturarak ihtiyaç duyduğumuz durumda tek satır ile çağırabiliriz.
CREATE VIEW vm_SiparisDetaylari AS -- Yukarıdaki hazır sorgu buraya yapıştırılmalıdır
Artık bu sorguyu kullanmak istediğimizde sadece şu şekilde çağırmamız yeterlidir:
SELECT * FROM vm_SiparisDetaylari
View Kullanmanın Avantajları
- Tekrar Kullanılabilirlik: Aynı sorguyu defalarca yazmak yerine bir kez yazılır ve her yerde kullanılır.
- Okunabilirlik: Kod daha sade ve anlaşılır hale gelir.
- Bakım Kolaylığı: Sorguda değişiklik yapılması gerekiyorsa sadece view üzerinde değişiklik yapılır.
- Güvenlik: Kullanıcılara sadece gerekli veriler gösterilebilir; örneğin sadece belirli kolonları içeren bir view tanımlanabilir.
Dikkat Edilmesi Gerekenler
- View'ler genellikle salt okunur yapıdadır. Yani her zaman
INSERT
,UPDATE
,DELETE
işlemleri yapılmayabilir. - Karmaşık view'lerde performans sorunları yaşanabilir. Özellikle çok sayıda tablo birleştiriliyorsa dikkatli olunmalıdır.
- View, her çalıştırıldığında arkasındaki sorgu tekrar çalışır. Bu nedenle gereksiz ve yoğun kullanımlarda sunucu performansını etkileyebilir.
Özet
SQL View, veritabanı tasarımında her zaman kazandıran hem de sistemin sürdürülebilirliğini artıran önemli bir araçtır. Özellikle tekrar eden, karmaşık sorgular için kullanıldığında kodun hem kalitesini hem de yönetilebilirliğini artırır.