SQL JOIN
- 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.
Bir bakışta
Önemli noktalar
- JOIN, bir eşleşme koşuluna göre birden fazla tablonun satırlarını birleştirir.
INNER JOINyalnızca iki tabloda da eşleşen satırları tutar.LEFT JOINsol tablonun her satırını tutar; eşleşme olmayan yerlerdeNULLbulunur.- 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: 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.
İlgili sayfalar
- SQLVeritabanları, s. 29SQL, ilişkisel veritabanlarıyla çalışmanın standart dilidir; tablo oluşturmak ve içindeki veriyi eklemek, sorgulamak, güncellemek ve silmek için kullanılır.
- Yabancı AnahtarVeritabanları, s. 45Yabancı anahtar, bir veritabanı tablosunda başka bir tablonun birincil anahtarına başvuran sütundur; ilişkili satırları bağlar ve başvuruları geçerli tutar.
- Birincil AnahtarVeritabanları, s. 2Birincil anahtar, bir veritabanı tablosundaki her satırı benzersiz biçimde tanımlayan, asla boş ya da tekrarlı olamayan bir sütun veya sütun kümesidir.
- Veritabanı NormalizasyonuVeritabanları, s. 40Veritabanı normalizasyonu, her bilginin yalnızca bir kez saklanması için tabloları düzenleme sürecidir; tekrarlı veriyi azaltıp tutarsız güncellemeleri önler.
- Veritabanı İndeksiVeritabanları, s. 38Veritabanı indeksi, tüm tabloyu taramadan satırları hızla bulmayı sağlayan, bir kitabın sonundaki dizine benzeyen bir veri yapısıdır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin