SQL JOIN Örneklerle Açıklama (Inner, Left, Right, Full)

SQL joins explained with examples: inner, left, right, full, cross and self joins
  1. Ana sayfa
  2. Blog
  3. Veritabanları ve SQL

Veritabanları ve SQL

SQL JOIN Örneklerle Açıklama (Inner, Left, Right, Full)

INNER, LEFT, RIGHT, FULL, CROSS ve SELF JOIN’i iki küçük tablo, net sorgular ve tam sonuçlarla öğrenin.

Yazar: Stack QuoraGüncelleme: 29 Eki 20268 dk okuma
SQLSQL JOIN Açıklamasıörneklerlestackquora.com

Önemli noktalar

  • INNER JOIN: yalnızca iki tabloda da eşleşen satırlar.
  • LEFT JOIN: soldaki tüm satırlar ve eşleşenler (yoksa NULL).
  • RIGHT JOIN: sağdaki tüm satırlar ve eşleşenler.
  • FULL JOIN: iki tablonun tüm satırları, mümkün olduğunda eşleştirilmiş.
  • Anahtarlar üzerinden birleştirin, tablo takma adları kullanın ve join sütunlarını indeksleyin.

Gerçek veritabanları her şeyi tek tabloda tutmaz. Müşteriler bir tabloda, siparişler başka bir tablodadır. “Bu ay hangi müşteriler sipariş verdi?” sorusunu yanıtlamak için ikisini birleştirmek gerekir; SQL JOIN tam olarak bunu yapar.

Bu rehber uygulamalıdır. JOIN’ler yeni başlayanları şaşırtır, çünkü aynı iki tablo join türüne göre farklı sonuçlar verir. Küçük ve somut verilerle bakınca kolaylaşır.

SQL JOIN açıklaması: örnek tablolar

customers

id name
1 Asha
2 Ben
3 Chitra

orders

id customer_id total
101 1 250
102 1 120
103 2 90
104 9 40

Chitra’nın siparişi yok ve 104 numaralı sipariş var olmayan bir müşteriyi (9) gösteriyor. Bu iki uç durum, join türleri arasındaki farkı gösterir.

INNER JOIN

INNER JOIN yalnızca koşulun iki tabloda da sağlandığı satırları döndürür. Eşi olmayan satırlar elenir.

SELECT c.name, o.id AS order_id, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;

Sonuç: Asha (101), Asha (102), Ben (103). Chitra ve 104 numaralı sipariş yok. Yalnızca ilişkili veriyi istediğinizde, örneğin müşteri ayrıntılarıyla siparişlerde kullanın. Yalnızca JOIN yazmak INNER JOIN anlamına gelir.

LEFT JOIN

LEFT JOIN soldaki tablonun tüm satırlarını korur ve sağdan eşleşenleri ekler. Eşleşme yoksa sağdaki sütunlar NULL olur.

SELECT c.name, o.id AS order_id, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;

Sonuç: Asha (101), Asha (102), Ben (103), Chitra (NULL, NULL). Artık Chitra görünüyor.

Hızlı ipucu: hiç sipariş vermemiş müşterileri bulmak için sağ taraftaki NULL’u filtreleyin: WHERE o.id IS NULL Chitra’yı döndürür. Test uzmanları bunu yetim veya eksik kayıtları bulmak için kullanır.

RIGHT JOIN ve FULL JOIN

RIGHT JOIN, LEFT JOIN’in aynadaki görüntüsüdür ve sağdaki tüm satırları korur. Çoğu kişi okuması daha doğal olduğu için tabloların sırasını değiştirip LEFT JOIN kullanır.

SELECT c.name, o.id AS order_id
FROM customers c
RIGHT JOIN orders o ON o.customer_id = c.id;

Sonuç, müşteri adı NULL olan 104 numaralı siparişi içerir. FULL (OUTER) JOIN iki tablonun tüm satırlarını döndürür: siparişi olmayan Chitra ve müşterisi olmayan 104 numaralı sipariş.

SELECT c.name, o.id AS order_id
FROM customers c
FULL OUTER JOIN orders o ON o.customer_id = c.id;

PostgreSQL ve SQL Server destekler. MySQL desteklemez; LEFT JOIN ile RIGHT JOIN’i UNION ile birleştirin. Daha fazlası için PostgreSQL kılavuzunda net bir join eğitimi var.

Join Yalnızca sol satırlar Yalnızca sağ satırlar Eşleşen satırlar
INNER Hayır Hayır Evet
LEFT Evet Hayır Evet
RIGHT Hayır Evet Evet
FULL Evet Evet Evet

CROSS JOIN ve SELF JOIN

CROSS JOIN bir tablodaki her satırı diğer tablodaki her satırla eşler: üç müşteri ve dört sipariş on iki satır verir. Nadir kullanılır ama kombinasyon üretmek için işe yarar; örneğin her beden ve renk için test verisi.

SELECT c.name, o.id
FROM customers c
CROSS JOIN orders o;

SELF JOIN, bir tabloyu takma adlarla kendisiyle birleştirir; örneğin her çalışanın yöneticisini bulmak için.

SELECT e.name AS employee, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;

SQL JOIN: yaygın hatalar ve performans ipuçları

  • ON koşulunu unutmak istemeden CROSS JOIN oluşturur ve satır sayısını patlatır.
  • LEFT JOIN sonrası sağ tabloyu WHERE’de filtrelemek onu INNER JOIN’e çevirir; koşulu ON’a koyun.
  • Belirsiz sütun adları: sütunların başına tablo takma adını ekleyin.
  • Benzersiz olmayan sütunlarda join satırları çoğaltır ve toplamları şişirir.
  • Join sütunlarını indeksleyin, yalnızca gerekli sütunları seçin ve yavaş sorguları EXPLAIN ile inceleyin.

JOIN’ler test uzmanları için neden önemli

QA mühendisleri, arayüz veya API üzerinden oluşturulan verinin veritabanına doğru ulaştığını doğrulamak ve yetim kayıtları bulmak için join kullanır. Postman ile API testi rehberimizle (İngilizce) birlikte okuyun. Temeller için yeni başlayanlar için SQL eğitimi (İngilizce), yeni veri depoları için vektör veritabanları (İngilizce) yazısına bakın. Veritabanını yerelde çalıştırmak için Docker eğitimimize (İngilizce) göz atın.

Son sözler

SQL JOIN tek satırda: INNER yalnızca eşleşenleri tutar, LEFT soldaki her şeyi, RIGHT sağdaki her şeyi, FULL ise hepsini tutar. Sorguyu çalıştırmadan sonucu tahmin edene kadar iki küçük tabloyla pratik yapın; sonra üç tabloyu birleştirin ve join’leri GROUP BY ile birlikte kullanın.

Sık sorulan sorular

INNER JOIN ile LEFT JOIN arasındaki fark nedir?

INNER JOIN yalnızca iki tabloda da eşleşen satırları döndürür. LEFT JOIN soldaki tablonun tüm satırlarını döndürür ve eşleşmeyen sağ sütunları NULL ile doldurur.

En hızlı SQL JOIN hangisi?

Her zaman en hızlı olan bir tür yoktur. Performans indekslere, tablo boyutuna ve yürütme planına bağlıdır. Join sütunlarını indeksleyin ve planı kontrol edin.

MySQL FULL OUTER JOIN’i destekler mi?

Hayır. MySQL’de aynı sonucu almak için LEFT JOIN ve RIGHT JOIN’i UNION ile birleştirin.

SELF JOIN ne için kullanılır?

SELF JOIN aynı tablodaki satırları karşılaştırır; örneğin tek bir employees tablosunda her çalışanın yöneticisini bulmak için.

Join’im neden yinelenen satırlar döndürüyor?

Join sütunu tablolardan birinde benzersiz olmadığında yinelenenler oluşur. Anahtarlarınızı kontrol edin veya join’den önce veriyi toplulaştırın.

Öğrenmeye devam edin (İngilizce yazılar)

Stack Quora ile çalışın

Test, WordPress veya SEO konusunda yardıma mı ihtiyacınız var?

Ekiplerin daha iyi yazılım yayınlamasına ve sitelerini büyütmesine yardımcı oluyoruz. Ne üzerinde çalıştığınızı söyleyin, bir sonraki adımı önerelim.

Okumaya devam et

Daha fazla kılavuz test, yapay zeka ve modern geliştirme

Bu makaleyi beğendiniz mi? Bir konu seçin ve doğrudan en yeni eğitimlerimize geçin.