SQL JOIN, birden fazla tabloyu birleştirerek ilişkili verileri sorgulamak için kullanılan bir komuttur. Veritabanlarında, birden fazla tablo genellikle birbirleriyle ilişkili veriler içerir. Örneğin, bir müşteri tablosu ile bir sipariş tablosu arasında ilişki olabilir. JOIN, bu tür ilişkileri kullanarak farklı tablolardaki verileri birleştirmemizi sağlar.
JOIN komutları, iki veya daha fazla tabloyu birleştirirken, belirli bir ilişkideki verileri karşılaştırır ve birleştirir. SQL JOIN’leri kullanarak, veritabanlarındaki ilişkili verileri sorgulamak çok daha kolay ve verimli hale gelir.
INNER JOIN KAVRAMI
INNER JOIN, en yaygın kullanılan JOIN türüdür. Bu tür, yalnızca her iki tabloda da eşleşen verileri getirir. Yani, birleştirilen tablolarda her iki tabloda da karşılık gelen satırlar olduğunda, sonuç olarak bu satırlar gösterilir.
Örnek: İki tablo olduğunu varsayalım: Musteriler ve Siparisler. Her müşteri, bir veya birden fazla sipariş verebilir.
SELECT Musteriler.Isim, Siparisler.SiparisID
FROM Musteriler
INNER JOIN Siparisler
ON Musteriler.MusteriID = Siparisler.MusteriID;
Bu sorgu, Musteriler tablosundaki her müşteri ile Siparisler tablosundaki eşleşen siparişleri getirir.
LEFT JOIN KAVRAMI
LEFT JOIN, “sol” tablodan (ilk belirtilen tablo) tüm satırları ve “sağ” tablodan (JOIN ile birleştirilen tablo) yalnızca eşleşen satırları getirir. Eğer sağ tablodan eşleşmeyen bir satır varsa, bu satır için NULL değeri gösterilir.
Örnek:
SELECT Musteriler.Isim, Siparisler.SiparisID
FROM Musteriler
LEFT JOIN Siparisler
ON Musteriler.MusteriID = Siparisler.MusteriID;
Bu sorgu, Musteriler tablosundaki tüm müşterileri ve varsa her müşterinin siparişlerini getirir. Eğer bir müşterinin siparişi yoksa, bu durumda SiparisID NULL olarak döner.
RIGHT JOIN KAVRAMI
RIGHT JOIN, LEFT JOIN ile ters bir işlem yapar. Yani, “sağ” tablodan tüm satırları ve “sol” tablodan yalnızca eşleşen satırları getirir. Sağ tablodan eşleşmeyen bir satır varsa, bu satır için sol tablodan gelen değerler NULL olur.
Örnek:
SELECT Musteriler.Isim, Siparisler.SiparisID
FROM Musteriler
RIGHT JOIN Siparisler
ON Musteriler.MusteriID = Siparisler.MusteriID;
Bu sorgu, Siparisler tablosundaki tüm siparişleri ve varsa her siparişin müşteri bilgilerini getirir. Eğer bir siparişin müşteri bilgisi yoksa, Isim sütunu NULL olur.
FULL JOIN KAVRAMI
FULL JOIN, her iki tablodan da tüm satırları getirir. Eğer bir satırın karşılığı yoksa, o satır için karşılık gelen tabloda NULL değeri gösterilir. Hem sol tablonun hem de sağ tablonun tüm satırları sorguda yer alır.
Örnek:
SELECT Musteriler.Isim, Siparisler.SiparisID
FROM Musteriler
FULL OUTER JOIN Siparisler
ON Musteriler.MusteriID = Siparisler.MusteriID;
Bu sorgu, hem Musteriler tablosundaki tüm müşterileri hem de Siparisler tablosundaki tüm siparişleri getirir. Eğer bir müşterinin siparişi yoksa, sipariş sütunu NULL olur. Aynı şekilde, bir siparişin müşteri bilgisi yoksa, müşteri adı NULL olur.
CROSS JOIN KAVRAMI
CROSS JOIN, iki tablonun her bir satırının birbiriyle birleştirilmesini sağlar. Bu tür bir birleştirme, her iki tablodaki tüm satırların kombinasyonunu döndürür. Yani, ilk tablodaki her satır, ikinci tablodaki her satır ile birleştirilir.
Örnek:
SELECT Musteriler.Isim, Siparisler.SiparisID
FROM Musteriler
CROSS JOIN Siparisler;
Bu sorgu, Musteriler tablosundaki her müşteriyi Siparisler tablosundaki her sipariş ile birleştirir ve her kombinasyonu döndürür. CROSS JOIN genellikle az kullanılır çünkü çok büyük veri setlerinde çok fazla veri döndürebilir.
JOIN Türlerinin Detaylı Kıyaslanması
| JOIN Türü | Açıklama |
|---|---|
| INNER JOIN | Her iki tabloda da eşleşen verileri getirir. |
| LEFT JOIN | Sol tablodaki tüm veriler ve sağ tablodan eşleşen veriler gelir. |
| RIGHT JOIN | Sağ tablodaki tüm veriler ve sol tablodan eşleşen veriler gelir. |
| FULL JOIN | Her iki tablodaki tüm veriler gelir, eşleşmeyenler NULL olarak gösterilir. |
| CROSS JOIN | Her iki tablodaki tüm satırların kombinasyonunu getirir. |
SQL JOIN komutları, veritabanındaki birden fazla tablodan ilişkili verileri çekmek için oldukça kullanışlıdır. Bu JOIN türleri, farklı veri senaryolarına göre çeşitli sorgular oluşturmanıza olanak tanır. Her bir JOIN türü, farklı ihtiyaçlara göre kullanılır ve doğru kullanıldığında veritabanı sorgularınızın daha verimli ve anlamlı olmasını sağlar.