SQL’de Alt Sorgular (Subqueries)

Alt sorgular (subqueries), bir SQL sorgusu içinde başka bir SQL sorgusunun çalıştırılmasını sağlayan güçlü bir tekniktir. Özellikle karmaşık veri analizlerinde ve filtreleme işlemlerinde kullanılır. Alt sorgular genellikle SELECT, INSERT, UPDATE ve DELETE ifadelerinde kullanılabilir.


1. Alt Sorguların Temel Kullanımı

📌 Alt sorgular parantez ()` içerisinde yazılır ve ana sorguya veri sağlamak için kullanılır.

Genel yapı:

SELECT sütun_adı FROM tablo_adı  
WHERE sütun_adı = (ALT SORGU);

📌 Alt sorgular genellikle WHERE, HAVING veya FROM içinde kullanılır.


2. WHERE İçinde Alt Sorgu Kullanımı

Örnek: En yüksek maaşı alan çalışanı bulalım.

SELECT * FROM çalışanlar  
WHERE maaş = (SELECT MAX(maaş) FROM çalışanlar);

Açıklama:

  • İç sorgu (SELECT MAX(maaş) FROM çalışanlar) çalışan tablosundaki en yüksek maaşı bulur.
  • Dış sorgu, maaşı bu değere eşit olan çalışanı döndürür.

3. IN ile Alt Sorgu Kullanımı

Örnek: Belirli bir departmanda çalışan kişileri listeleyelim.

SELECT * FROM çalışanlar  
WHERE departman_id IN (SELECT departman_id FROM departmanlar WHERE departman_adı = 'Muhasebe');

Açıklama:

  • İç sorgu, “Muhasebe” departmanına ait departman_id değerlerini bulur.
  • Dış sorgu, bu departman_id değerine sahip çalışanları getirir.

4. FROM İçinde Alt Sorgu Kullanımı

📌 Alt sorgular, sanal tablolar oluşturmak için FROM içinde kullanılabilir.

Örnek: Maaş ortalamasını bulan bir alt sorgu ile çalışanların durumunu listeleyelim.

SELECT ad, maaş,  
       (SELECT AVG(maaş) FROM çalışanlar) AS ortalama_maas  
FROM çalışanlar;

Açıklama:

  • İç sorgu (SELECT AVG(maaş) FROM çalışanlar) tüm çalışanların maaş ortalamasını hesaplar.
  • Bu değer dış sorguda her satır için bir sütun olarak görüntülenir.

5. EXISTS ile Alt Sorgu Kullanımı

📌 EXISTS, alt sorgunun sonuç döndürüp döndürmediğini kontrol eder.

Örnek: En az bir çalışanı olan departmanları listeleyelim.

SELECT * FROM departmanlar d  
WHERE EXISTS (SELECT * FROM çalışanlar c WHERE c.departman_id = d.departman_id);

Açıklama:

  • İç sorgu, her bir departmanın en az bir çalışanı olup olmadığını kontrol eder.
  • Eğer çalışanı olan bir departman varsa, dış sorgu o departmanı listeler.

6. ALT Sorgular ile UPDATE Kullanımı

📌 Bir tabloyu güncellerken alt sorgular kullanılabilir.

Örnek: Tüm çalışanların maaşlarını, departmanlarının ortalama maaşına eşitleyelim.

UPDATE çalışanlar  
SET maaş = (SELECT AVG(maaş) FROM çalışanlar AS c WHERE c.departman_id = çalışanlar.departman_id);

Açıklama:

  • İç sorgu, her departmanın maaş ortalamasını hesaplar.
  • Dış sorgu, çalışanların maaşlarını ilgili departmanın maaş ortalamasına ayarlar.

7. ALT Sorgular ile DELETE Kullanımı

📌 Belli bir koşula uyan satırları silerken alt sorgular kullanılabilir.

Örnek: Maaşı en düşük olan çalışanı silelim.

DELETE FROM çalışanlar  
WHERE maaş = (SELECT MIN(maaş) FROM çalışanlar);

Açıklama:

  • İç sorgu, en düşük maaşı hesaplar.
  • Dış sorgu, bu maaşa sahip olan çalışanı siler.

8. ALT Sorgular ile INSERT Kullanımı

📌 Başka bir tablodan veri eklemek için alt sorgular kullanılabilir.

Örnek: Maaşı 20.000’den yüksek olan çalışanları yüksek_maaşlılar tablosuna ekleyelim.

INSERT INTO yüksek_maaşlılar (çalışan_id, ad, maaş)  
SELECT çalışan_id, ad, maaş FROM çalışanlar WHERE maaş > 20000;

Açıklama:

  • İç sorgu, maaşı 20.000’den yüksek çalışanları seçer.
  • Dış sorgu, bu verileri yüksek_maaşlılar tablosuna ekler.

SQL ALT Sorgular Özet

Kullanım AlanıAçıklama
WHERE içindeBir değeri karşılaştırmak için kullanılır.
IN içindeListe döndürerek sorgu sonucunu filtreler.
FROM içindeSanal tablo oluşturur.
EXISTS içindeAlt sorgunun veri içerip içermediğini kontrol eder.
UPDATE ileBaşka bir tablodan veri alarak güncelleme yapar.
DELETE ileBelirli bir koşula uyan veriyi siler.
INSERT ileBir tablodan veri seçerek başka bir tabloya ekler.
guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
0
YORUM YAPx