SQL · 8/8
Tabloları birleştirme: INNER JOIN
İlişkisel veritabanlarının temel özelliği olan farklı tabloları ortak anahtar üzerinden birleştirmek.
Önerilen çalışma: 25–45 dakika; örnekleri kendin uygula. Süre kişiye göre değişir.
Bu sayfada · 9 başlık
Başlamadan önce
Önceki dersteki örneği çalıştırmış olman ve dosya/çıktı ayrımını biliyor olman yararlı.
Öğrenme sırası: konuyu oku → çıktıyı tahmin et → örneği değiştir → alıştırmayı çöz → cevabını gerekçelendir.

Videoyla adım adım izle
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Tabloları birleştirme: INNER JOIN
İlişkisel veritabanlarının temel özelliği olan farklı tabloları ortak anahtar üzerinden birleştirmek.
Kavramı kur
İyi tasarlanmış bir veritabanında veriler tekrar etmez. Çalışan bilgileri calisanlar tablosunda, departman bilgileri departmanlar tablosunda tutulur. calisanlar tablosundaki departman_id sütunu departmanlar tablosunun id sütununa bağlanır (Foreign Key).
Neden böyle çalışıyor?
İki tabloyu tek bir sorguda birleştirmek için INNER JOIN kullanılır. ON ifadesi ile hangi sütunların birbirine eşitleneceği belirtilir: ON calisanlar.departman_id = departmanlar.id.
Çalışma sırası
INNER JOIN yalnızca her iki tabloda da karşılığı olan eşleşen satırları getirir. Sol tablodaki tüm satırları eşleşme olmasa da getirmek için LEFT JOIN kullanılır.
İkinci örnek · 1
FROM calisanlar ana tablo olarak seçilir. Kodun tamamı yazılı derste bulunur.
Kod
SELECT calisanlar.ad, departmanlar.departman_adi
FROM calisanlar
INNER JOIN departmanlar ON calisanlar.departman_id = departmanlar.id;Beklenen sonucu oku
Sorgu iki tablonun birleşmiş halinden istenen sütunları döndürür.
Beklenen çıktı: ad | departman_adi Ahmet | Bilgi Teknolojileri Ayşe | Ürün Tasarımı Mehmet | Kurumsal İletişim
Bir değeri sen değiştir
calisanlar ve projeler tablosunu INNER JOIN ile birleştirip kimin hangi projede çalıştığını listele. Tablo isimleri uzunsa AS c ve AS d şeklinde takma adlar (alias) tanımla.
Hata nereden gelir?
ON koşulunu yazmayı unutmak iki tablonun kartezyen çarpımını yaparak devasa ve anlamsız veri üretir.
Kendi çözümünü kur
LEFT JOIN kullanarak henüz bir projeye atanmamış çalışanları da listele. Tablo takma adı için: FROM calisanlar AS c INNER JOIN departmanlar AS d ON c.departman_id = d.id
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
SELECT c.ad, d.departman_adi
FROM calisanlar AS c
INNER JOIN departmanlar AS d ON c.departman_id = d.id;Kendini kontrol et
INNER JOIN ile LEFT JOIN arasındaki temel fark nedir? Yanıt: INNER JOIN yalnızca her iki tabloda eşleşen kayıtları getirir; LEFT JOIN ise sol tablodaki tüm kayıtları, sağda eşleşme olmasa bile listeler.
Beklenen çıktı: ad | departman_adi Ahmet | Bilgi Teknolojileri Ayşe | Ürün Tasarımı Mehmet | Kurumsal İletişim
Konu anlatımı
İyi tasarlanmış bir veritabanında veriler tekrar etmez. Çalışan bilgileri calisanlar tablosunda, departman bilgileri departmanlar tablosunda tutulur. calisanlar tablosundaki departman_id sütunu departmanlar tablosunun id sütununa bağlanır (Foreign Key).
İki tabloyu tek bir sorguda birleştirmek için INNER JOIN kullanılır. ON ifadesi ile hangi sütunların birbirine eşitleneceği belirtilir: ON calisanlar.departman_id = departmanlar.id.
INNER JOIN yalnızca her iki tabloda da karşılığı olan eşleşen satırları getirir. Sol tablodaki tüm satırları eşleşme olmasa da getirmek için LEFT JOIN kullanılır.
İlk örneği oku ve dene
Tabloları birleştirme: INNER JOIN
İlişkisel veritabanlarının en büyük gücü farklı tabloları birbirine bağlamaktır. JOIN ile çalışan tablosu ile departman tablosunu ortak id üzerinden birleştiririz.
SELECT calisanlar.ad, departmanlar.departman_adi
FROM calisanlar
INNER JOIN departmanlar ON calisanlar.departman_id = departmanlar.id;
▶ Sonuç
ad | departman_adi Ahmet | Bilgi Teknolojileri Ayşe | Ürün Tasarımı
Adım adım neden böyle çalışıyor?
- FROM calisanlar ana tablo olarak seçilir.
- INNER JOIN departmanlar ikinci tabloyu ekler.
- ON calisanlar.departman_id = departmanlar.id eşleşen satırları birbirine bağlar.
- Sorgu iki tablonun birleşmiş halinden istenen sütunları döndürür.
İkinci çözümlü örnek
İlişkisel veritabanlarının temel özelliği olan farklı tabloları ortak anahtar üzerinden birleştirmek.
SELECT calisanlar.ad, departmanlar.departman_adi
FROM calisanlar
INNER JOIN departmanlar ON calisanlar.departman_id = departmanlar.id;
▶ Sonuç
ad | departman_adi Ahmet | Bilgi Teknolojileri Ayşe | Ürün Tasarımı Mehmet | Kurumsal İletişim
Kolaydan zora sen dene
- calisanlar ve projeler tablosunu INNER JOIN ile birleştirip kimin hangi projede çalıştığını listele.
- Tablo isimleri uzunsa AS c ve AS d şeklinde takma adlar (alias) tanımla.
- LEFT JOIN kullanarak henüz bir projeye atanmamış çalışanları da listele.
İpucunu aç
Tablo takma adı için: FROM calisanlar AS c INNER JOIN departmanlar AS d ON c.departman_id = d.id
Üç görevin açıklamalı çözümünü oku
- calisanlar ve projeler tabloları sorumlu_id üzerinden INNER JOIN ile eşleştirilir.
- Tablo takma adları (AS c, AS d) karmaşık sorguları kısaltır ve okunabilir kılar.
- LEFT JOIN eşleşmeyen çalışanları da sol tarafta listeler ve sağ sütunlara NULL atar.
Bir çözüm varyasyonu gör
Çözüm varyasyonu
Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.
SELECT c.ad, d.departman_adi
FROM calisanlar AS c
INNER JOIN departmanlar AS d ON c.departman_id = d.id;
▶ Sonuç
ad | departman_adi Ahmet | Bilgi Teknolojileri Ayşe | Ürün Tasarımı Mehmet | Kurumsal İletişim
Yaygın hata ve çözümü
- ON koşulunu yazmayı unutmak iki tablonun kartezyen çarpımını yaparak devasa ve anlamsız veri üretir.
- Her iki tabloda da aynı isimde sütun varsa (örneğin id) mutlaka tablo_adi.id olarak açıkça belirtilmelidir.
Kendini değerlendir
Ezberlemeden açıklayabiliyor musun?
INNER JOIN ile LEFT JOIN arasındaki temel fark nedir?
Açıklamalı yanıt
INNER JOIN yalnızca her iki tabloda eşleşen kayıtları getirir; LEFT JOIN ise sol tablodaki tüm kayıtları, sağda eşleşme olmasa bile listeler.
Kendi çözümünde bir girdiyi değiştir. Çalıştırmadan önce beklenen sonucu yaz; gerçek sonuçla karşılaştır ve fark varsa hangi satırdan kaynaklandığını açıkla.
Kaynak ve çalışma ortamı
Örnekler küçük öğretim senaryolarıdır. Java/C#/PHP/Swift çalışma ortamını kendi cihazında ayrıca doğrula; yazılı sonuçlar beklenen davranışı açıklar.
Resmî dil belgeleriBu içerik işine yaradı mı?
Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.