İçeriğe geç

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.

SQL · Tabloları birleştirme: INNER JOIN — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.

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

8

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.

SQL
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?

  1. FROM calisanlar ana tablo olarak seçilir.
  2. INNER JOIN departmanlar ikinci tabloyu ekler.
  3. ON calisanlar.departman_id = departmanlar.id eşleşen satırları birbirine bağlar.
  4. Sorgu iki tablonun birleşmiş halinden istenen sütunları döndürür.
108

İkinci çözümlü örnek

İlişkisel veritabanlarının temel özelliği olan farklı tabloları ortak anahtar üzerinden birleştirmek.

SQL
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

  1. calisanlar ve projeler tablosunu INNER JOIN ile birleştirip kimin hangi projede çalıştığını listele.
  2. Tablo isimleri uzunsa AS c ve AS d şeklinde takma adlar (alias) tanımla.
  3. 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
  1. calisanlar ve projeler tabloları sorumlu_id üzerinden INNER JOIN ile eşleştirilir.
  2. Tablo takma adları (AS c, AS d) karmaşık sorguları kısaltır ve okunabilir kılar.
  3. LEFT JOIN eşleşmeyen çalışanları da sol tarafta listeler ve sağ sütunlara NULL atar.
Bir çözüm varyasyonu gör
208

Çözüm varyasyonu

Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.

SQL
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ü

  1. ON koşulunu yazmayı unutmak iki tablonun kartezyen çarpımını yaparak devasa ve anlamsız veri üretir.
  2. Her iki tabloda da aynı isimde sütun varsa (örneğin id) mutlaka tablo_adi.id olarak açıkça belirtilmelidir.

Kendini değerlendir

İki tabloyu ortak anahtar üzerinden birleştiren komut hangisidir?

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 belgeleri
Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.