SQL Server’da Common Table Expression Kullanımı
Herkese merhaba,
Bu yazıda SQL Server’da Common Table Expression kullanımından bahsedeceğim. Common Table Expression’a ortak tablo ifadeleri de denir. Sorguların yürütülmesi anında elde edilmiş olan geçici sonuçlardır. Bir veya daha fazla sefer kullanılabilirler.
CTE’nin özelliklerine değinirsek;
- Bir tablo ya da view değildir herhangi bir veri içermezler.
- Kendi kendini çağırabilir ve aynı sorgu içerisinde birden fazla çalıştırılabilirler.
- Daha çok recursive işlemlerde kullanılırlar.
- Common Table Expression’larda table ve view yapılarından farklı olarak primary key, unique, not null, default. gibi constraint ifadeleri desteklenmez.
- Common Table Expression’lar yalnızca SELECT işlemlerinde değil INSERT, UPDATE ve DELETE işlemlerinde de kullanılabilir.
- Kendi indexleri yoktur. İçeriğindeki tabloların indexlerini kullanırlar.
- Sadece çalıştığı sorgu bloğunda geçerlidir.
- Farklı tablolarda bulunan bilgi içeriklerinin birbiriyle karşılaştırılması gibi karmaşık işlerde kullanılabilir.
- Common Table Expression’ların okunurluğu yüksektir.
Konu ile ilgili örneği Northwind veritabanını kullanarak yaptık. Örneği inceleyelim.
WITH OnDolarUzerindekiUrunlerveKategorileri (ÜrünAd, KategoriAd, BirimFiyat) AS ( SELECT p.ProductName AS ÜrünAd, c.CategoryName AS KategoriAd, p.UnitPrice AS BirimFiyat FROM Products p INNER JOIN Categories c ON c.CategoryID = p.CategoryID WHERE p.UnitPrice > 10.0 ) SELECT * FROM OnDolarUzerindekiUrunlerveKategorileri ORDER BY KategoriAd ASC, BirimFiyat ASC, ÜrünAd ASC
Burada With ile CTE yapımızı oluşturuyoruz. Sonrasında CTE’ye isim veriyoruz ve içteki sorguda çekmek istediğimiz alanları parantez içinde belirtiyoruz. Ben alias değerlerini yazdım. En altta ise verdiğimiz CTE ismini from ifadesinden sonra çağırıyoruz. CTE oluştururken kaç adet alanı parantez içinde belirttiyseniz o kadar alanı select ifadesinde çekebilirsiniz. Son olarak sorgu bütün halde çalışır. Sadece select sorgusunu çağırırsanız hata alacaksınız.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.