SQL JOIN’leri: tabloları birbirine bağlama
Kısaca: Bir JOIN, iki tablodaki satırları bir koşula göre, çoğunlukla eşit anahtar değerlerine göre birleştirir. Böylece ayrı saklanan veriler birlikte sorgulanabilir.
Biraz daha ayrıntılı: Örnek: musteri(id, ad) ve siparis(id, musteri_id, tutar) tabloları. ON siparis.musteri_id = musteri.id ile siparişler müşteri adlarıyla ilişkilendirilir.
Ayrıntılı
- INNER JOIN: Yalnızca iki tarafta da eşi olan satırlar. Siparişi olmayan müşteriler eksik kalır.
- LEFT JOIN: Sol tablonun tüm satırları, eşi olmasa bile. Sağdaki eksik değerler
NULL’dır.WHERE siparis.id IS NULLile siparişi olmayan müşteriler bulunur. - RIGHT JOIN: Ayna görüntüsü. Genellikle tabloları değiştirilmiş bir LEFT JOIN olarak yazılır.
- FULL OUTER JOIN: İki tarafın tüm satırları, eksik eşler için NULL ile.
- CROSS JOIN: Her satır her satırla (Kartezyen çarpım). Dikkat: n × m satır.
- SELF JOIN: Bir tabloyu kendisiyle birleştirme; örneğin çalışanlar ve yöneticileri.
- Tuzaklar: Koşul yoksa Kartezyen çarpım oluşur. 1:n ilişkilerde satırlar çoğalır ve toplamlar yanlış olur. LEFT JOIN’de sağ tabloya ait süzme koşulu
WHERE’e değilON’a girer. - Hız: Yabancı anahtar sütunlarını indeksle (SQL indeksi).
Ayrıca bak: SQL, EXPLAIN ile sorguları iyileştirme