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.

906 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!