Thread Starter
#0
Common Table Expressions (CTE), SQL dilindeki güçlü ve esnek yapılar arasında yer almaktadır. CTE'ler, özellikle karmaşık sorguların daha okunabilir ve yönetilebilir hale getirilmesinde önemli bir rol oynamaktadır. Bu yazıda, CTE'lerin ne olduğu, nasıl oluşturulduğu ve avantajları üzerinde duracağız.
CTE, bir SQL sorgusunda geçici bir sonuç seti oluşturmak için kullanılan bir yapıdadır. WITH anahtar kelimesi ile başlar ve ardından sonuç setinin adını ve sorgusunu tanımlar. CTE, bir sorgunun içinde birden fazla kez kullanılabilir; bu, karmaşık sorgularda tekrar eden kodların azaltılmasına yardımcı olur. Örneğin:
Yukarıdaki örnekte, CTE_Satis adlı bir CTE tanımlanmakta ve bu CTE daha sonra ana sorguda kullanılmaktadır. Bu yapı, sorgunun okunabilirliğini artırmakta ve aynı sorgunun tekrar yazılmasını engellemektedir.
CTE'lerin bir diğer avantajı, rekürsif sorgular oluşturmaya olanak tanımasıdır. Örneğin, bir hiyerarşi yapısında (örneğin, çalışanlar ve yöneticileri) verilerin sorgulanması gerektiğinde, CTE'ler oldukça faydalıdır. Bir rekürsif CTE şu şekilde tanımlanabilir:
Bu örnekte, RECURSIVE anahtar kelimesi kullanılarak, çalışanlar ve yöneticiler arasındaki hiyerarşik ilişki sorgulanmıştır.
Sonuç olarak, CTE'ler SQL sorgularında hem okunabilirliği artırmakta hem de karmaşık veri yapılarının yönetilmesine olanak tanımaktadır. Hem basit hem de karmaşık sorgular için CTE kullanımını değerlendirmenin, veritabanı sorgulamalarında önemli bir avantaj sağladığı aşikardır.
CTE, bir SQL sorgusunda geçici bir sonuç seti oluşturmak için kullanılan bir yapıdadır. WITH anahtar kelimesi ile başlar ve ardından sonuç setinin adını ve sorgusunu tanımlar. CTE, bir sorgunun içinde birden fazla kez kullanılabilir; bu, karmaşık sorgularda tekrar eden kodların azaltılmasına yardımcı olur. Örneğin:
CODE
123456789
WITH CTE_Satis AS (
SELECT UrunID, SUM(SatisMiktari) AS ToplamSatis
FROM Satislar
GROUP BY UrunID
)
SELECT UrunID
FROM CTE_Satis
WHERE ToplamSatis > 100;
Yukarıdaki örnekte, CTE_Satis adlı bir CTE tanımlanmakta ve bu CTE daha sonra ana sorguda kullanılmaktadır. Bu yapı, sorgunun okunabilirliğini artırmakta ve aynı sorgunun tekrar yazılmasını engellemektedir.
CTE'lerin bir diğer avantajı, rekürsif sorgular oluşturmaya olanak tanımasıdır. Örneğin, bir hiyerarşi yapısında (örneğin, çalışanlar ve yöneticileri) verilerin sorgulanması gerektiğinde, CTE'ler oldukça faydalıdır. Bir rekürsif CTE şu şekilde tanımlanabilir:
CODE
1234567891011
WITH RECURSIVE CTE_Hiyerarsi AS (
SELECT CalisanID, YoneticiID, Ad
FROM Calisanlar
WHERE YoneticiID IS NULL
UNION ALL
SELECT c.CalisanID, c.YoneticiID, c.Ad
FROM Calisanlar c
INNER JOIN CTE_Hiyerarsi ch ON c.YoneticiID = ch.CalisanID
)
SELECT * FROM CTE_Hiyerarsi;
Bu örnekte, RECURSIVE anahtar kelimesi kullanılarak, çalışanlar ve yöneticiler arasındaki hiyerarşik ilişki sorgulanmıştır.
Sonuç olarak, CTE'ler SQL sorgularında hem okunabilirliği artırmakta hem de karmaşık veri yapılarının yönetilmesine olanak tanımaktadır. Hem basit hem de karmaşık sorgular için CTE kullanımını değerlendirmenin, veritabanı sorgulamalarında önemli bir avantaj sağladığı aşikardır.