# SQL JOIN

Adres: https://softwaredictionary.org/tr/terimler/sql-join
Kategori: Veritabanları
Son güncelleme: 2026-09-30
Okunuşu: es-kyu-el coyn ya da sikuıl coyn

Kısaca: SQL JOIN, iki ya da daha fazla tablonun satırlarını yabancı anahtar gibi ilişkili sütunlar üzerinden eşleştirerek tek bir sonuçta birleştiren sorgu işlemidir.

## SQL JOIN nedir?

JOIN, birkaç tabloya yayılmış veriyi tek bir sonuçta birleştirir. İyi tasarlanmış bir ilişkisel veritabanında müşteriler ve siparişleri ayrı tablolarda yaşar; JOIN, bir tablodaki `orders.customer_id` gibi bir sütunu diğerindeki `customers.id` gibi bir sütunla karşılaştırarak her siparişi müşterisiyle eşleştirir. Hangi satırların eşleşeceğine karar veren koşul `ON` anahtar sözcüğünden sonra yazılır.

Birkaç tür JOIN vardır. `INNER JOIN` (yalnızca `JOIN` yazdığınızda elde ettiğiniz), yalnızca her iki tabloda da eşleşmesi olan satırları döndürür. `LEFT JOIN`, sol tablonun her satırını ve sağdan eşleşenleri döndürür, boşlukları `NULL` ile doldurur; `RIGHT JOIN` bunun tersini yapar, `FULL OUTER JOIN` iki taraftaki eşleşmeyen satırları da tutar ve `CROSS JOIN` bir tablonun her satırını diğerinin her satırıyla eşler.

Bir parti için iki davetli listesi düşünün: inner join yalnızca her iki listede de yer alan kişileri listeler; left join ise ilk listedeki herkesi listeler ve kimlerin ikinci listede de olduğunu not eder. JOIN'ler ayrıca normalizasyonu pratik kılan şeydir; çünkü veri tekrar olmadan bir kez saklanabilir ve sorgu zamanında yeniden bir araya getirilebilir.

Yaygın bir hata, left join gerekirken inner join kullanmaktır; bu, örneğin hiç sipariş vermemiş müşterileri sessizce eler. Bir diğeri eksik ya da yanlış birleştirme koşuludur; satırları çoğaltır ve toplamları şişirir. JOIN ayrıca `UNION`'dan farklıdır: JOIN, eşleşen satırların sütunlarını yan yana koyar; `UNION` ise iki sorgunun satırlarını üst üste dizer.

## Önemli noktalar

- JOIN, bir eşleşme koşuluna göre birden fazla tablonun satırlarını birleştirir.
- `INNER JOIN` yalnızca iki tabloda da eşleşen satırları tutar.
- `LEFT JOIN` sol tablonun her satırını tutar; eşleşme olmayan yerlerde `NULL` bulunur.
- Birleştirmeler genellikle yabancı anahtar ilişkilerini izler.
- Büyük tablolarda birleştirmeleri hızlı tutmak için birleştirme sütunlarını indeksleyin.

## Örnek: INNER JOIN ile LEFT JOIN karşılaştırması

```sql
-- INNER JOIN: only customers who have placed at least one order
SELECT c.name, o.id AS order_id, o.total
FROM customers AS c
INNER JOIN orders AS o ON o.customer_id = c.id;

-- LEFT JOIN: every customer, including those with no orders (count 0)
SELECT c.name, COUNT(o.id) AS order_count
FROM customers AS c
LEFT JOIN orders AS o ON o.customer_id = c.id
GROUP BY c.id, c.name;
```

## Sık sorulan sorular

**INNER JOIN ile LEFT JOIN arasındaki fark nedir?**

`INNER JOIN` yalnızca her iki tabloda da eşleşmesi olan satırları döndürür. `LEFT JOIN` ise sol tablonun tüm satırlarını döndürür ve eşleşme olmadığında sağ tablonun sütunlarını `NULL` ile doldurur.

**SQL JOIN'ler yavaş mıdır?**

Birleştirme sütunları indeksliyse hayır; veritabanları milyonlarca satırı verimli biçimde birleştirmek için yapılmıştır. Birleştirmeler, bu sütunlarda indeks yoksa, bir sorgu çok sayıda büyük tabloyu birleştiriyorsa ya da eksik bir koşul çok büyük sayıda satır kombinasyonu ürettiğinde yavaşlar.

**Self join nedir?**

Self join, bir tabloyu iki farklı takma adla (alias) kendisiyle birleştirir. Her satırın başka bir çalışana işaret eden bir `manager_id` değerine sahip olduğu bir `employees` tablosu gibi hiyerarşik veriler için kullanışlıdır.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
