SQL JOIN türleri tek örnekle: INNER, LEFT, RIGHT, FULL

JOIN’leri ezberlemek yerine tek bir örnekle görelim. İki tablomuz var:

ogrenciler

id ad sinif_id
1 Ayşe 10
2 Mehmet 20
3 Zeynep NULL

siniflar

id sinif_adi
10 9-A
20 9-B
30 10-C
-- INNER JOIN: sadece iki tarafta da eşleşenler
SELECT o.ad, s.sinif_adi
FROM ogrenciler o
INNER JOIN siniflar s ON s.id = o.sinif_id;
-- Ayşe 9-A | Mehmet 9-B

-- LEFT JOIN: soldaki herkes + eşleşen varsa sağdan bilgi
SELECT o.ad, s.sinif_adi
FROM ogrenciler o
LEFT JOIN siniflar s ON s.id = o.sinif_id;
-- Ayşe 9-A | Mehmet 9-B | Zeynep NULL

-- RIGHT JOIN: sağdaki her sınıf + varsa öğrencisi
SELECT o.ad, s.sinif_adi
FROM ogrenciler o
RIGHT JOIN siniflar s ON s.id = o.sinif_id;
-- Ayşe 9-A | Mehmet 9-B | NULL 10-C

-- FULL OUTER JOIN: iki taraftaki herkes (MySQL desteklemez, PostgreSQL/SQL Server destekler)
SELECT o.ad, s.sinif_adi
FROM ogrenciler o
FULL OUTER JOIN siniflar s ON s.id = o.sinif_id;
-- Ayşe 9-A | Mehmet 9-B | Zeynep NULL | NULL 10-C

Pratik ipucu: “Sınıfı olmayan öğrencileri bul” gibi sorular LEFT JOIN + WHERE s.id IS NULL ile çözülür:

SELECT o.ad
FROM ogrenciler o
LEFT JOIN siniflar s ON s.id = o.sinif_id
WHERE s.id IS NULL;   -- Zeynep

MySQL’de FULL OUTER JOIN gerekiyorsa LEFT JOIN ve RIGHT JOIN sonuçlarını UNION ile birleştirebilirsin.