
SQL'de Alt Sorgular (Subqueries): İleri Seviye Veri Çekme Teknikleri
Alt sorgular (subqueries), SQL sorgularında sıkça kullanılan, özellikle karmaşık veri işlemlerinde hayat kurtaran bir tekniktir. Alt sorgular, bir ana sorgunun parçası olarak çalışır ve genellikle dinamik veri çekme işlemleri için kullanılır. Bu yazıda, alt sorguların nasıl çalıştığını, ne zaman ve nasıl kullanılacağını detaylı örneklerle açıklayacağız.
Alt Sorgu Nedir?
Alt sorgu, başka bir SQL sorgusunun içinde yazılan ve genellikle bir sonuç döndüren iç içe bir sorgudur. Bir alt sorgu, şu amaçlarla kullanılabilir:
- Veri setini filtrelemek (WHERE, HAVING gibi ifadelerle).
- Dinamik veri sağlayarak ana sorguya yardımcı olmak.
- Karmaşık ilişkileri basitleştirerek sorgu performansını artırmak.
Alt sorgular şu alanlarda kullanılabilir:
- SELECT: Veri çekme sırasında.
- FROM: Geçici bir tablo gibi davranarak.
- WHERE: Şartları belirlemek için.
Alt Sorguların Türleri
1. Tek Satır Döndüren Alt Sorgular
Bu tür alt sorgular, yalnızca bir satır ve bir sütun döndürür. Genellikle eşitlik operatörleriyle (==
, >
, <
) kullanılır.
Örnek:
En yüksek maaş alan çalışanın adı:
SELECT employee_name FROM employees WHERE salary = (SELECT MAX(salary) FROM employees);
2. Çok Satır Döndüren Alt Sorgular
Birden fazla sonuç döndüren alt sorgular, genellikle IN
, ANY
, ALL
gibi operatörlerle kullanılır.
Örnek:
En yüksek maaş alan departmanlardaki çalışanlar:
SELECT employee_name, department_id FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE budget > 100000);
3. Korelasyonlu Alt Sorgular (Correlated Subqueries)
Korelasyonlu alt sorgular, ana sorgudan bir veri alır ve bu verilere göre çalışır. Genellikle daha karmaşıktır ve performans açısından dikkatli kullanılmalıdır.
Örnek:
Her çalışanın, kendi departmanındaki ortalama maaştan yüksek maaş alıp almadığını kontrol etme:
SELECT employee_name, salary FROM employees e1 WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);
Alt Sorgular Nerelerde Kullanılır?
Veri Filtreleme (WHERE ve HAVING ile)
Alt sorgular, belirli bir koşula uyan verileri filtrelemek için kullanılır.Geçici Tablolar (FROM ile)
Alt sorgular, bir tablo gibi davranarak ana sorguya veri sağlar.
Örnek:
En düşük maaş alan çalışanların bilgileri:
SELECT * FROM (SELECT employee_name, salary FROM employees ORDER BY salary ASC LIMIT 1) AS lowest_salary;
- Agrega Fonksiyonlarıyla
Alt sorgular, toplam, ortalama gibi hesaplamaları dinamik olarak gerçekleştirebilir.
Alt Sorguların Avantajları ve Dezavantajları
Avantajları:
- Karmaşık sorguları daha okunabilir hale getirir.
- Tek sorguda birden fazla işlem yapılmasına olanak tanır.
- Dinamik veri analizi için esneklik sağlar.
Dezavantajları:
- Büyük veri setlerinde performans sorunlarına yol açabilir.
- Bazı durumlarda sorguyu yeniden yazmak gerekebilir (örneğin, JOIN kullanımıyla).
Alt Sorgular mı JOIN mi?
Alt sorgular yerine JOIN kullanmanın daha uygun olduğu durumlar vardır. JOIN, özellikle büyük veri setlerinde daha performanslı çalışabilir.
Örnek:
Alt sorguyla yapılan bir işlem:
SELECT employee_name FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE budget > 100000);
JOIN ile daha hızlı hale getirilebilir:
SELECT e.employee_name FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.budget > 100000;
Sonuç
Alt sorgular, SQL'de veri çekme ve analiz etme sürecini kolaylaştıran güçlü bir araçtır. Ancak doğru senaryolarda kullanılmaları gerekir. Performans sorunları yaşanabilecek durumlarda JOIN gibi alternatifler tercih edilebilir. Alt sorguların türlerini ve kullanım alanlarını anlamak, karmaşık SQL sorgularını daha etkin bir şekilde yazmanıza yardımcı olur.
Powered by Froala Editor