SQL Join Yapılarının Detaylı Açıklaması
SQL Join Türleri ve Görselleştirilmiş Açıklamaları
SQL’de JOIN işlemi, birden fazla tablodan veri almak için kullanılır. JOIN işlemleri, tablolar arasındaki ilişkileri belirli bir koşula göre birleştirerek çalışır.
1. SQL JOIN Türleri
SQL’de temel olarak beş farklı JOIN türü bulunur:
- INNER JOIN: İki tablodaki eşleşen kayıtları getirir.
- LEFT JOIN (LEFT OUTER JOIN): Sol tablodaki tüm kayıtları ve sağ tablodan eşleşenleri getirir.
- RIGHT JOIN (RIGHT OUTER JOIN): Sağ tablodaki tüm kayıtları ve sol tablodan eşleşenleri getirir.
- FULL JOIN (FULL OUTER JOIN): Her iki tablodaki tüm kayıtları getirir.
- CROSS JOIN: İki tablodaki olasılıkların tümü kartezyen olarak birleştirilerek getirilir.
2. SQL JOIN Türlerine Örnekler
Aşağıdaki örnekler, Customers (müşteriler) ve Orders (siparişler) tablolarını temel alarak açıklanmaktadır.
2.1 INNER JOIN
INNER JOIN, iki tabloda eşleşen verileri döndürür. Eğer bir müşteri herhangi bir sipariş vermemişse, o müşteri sonuç kümesinde yer almaz.
SELECT Customers.id, Customers.name, Orders.id as order_idFROM CustomersINNER JOIN Orders ON Customers.id = Orders.customer_id;
Görselleştirme:
Customers Orders+----+------+ +----+------------+| id | name | | id | customer_id|+----+------+ +----+------------+| 1 | Ali | | 1 | 1 || 2 | Veli | | 2 | 2 || 3 | Ayşe | | 3 | 1 |+----+------+ +----+------------+
INNER JOIN Sonucu:+----+------+----------+| id | name | order_id |+----+------+----------+| 1 | Ali | 1 || 2 | Veli | 2 || 1 | Ali | 3 |+----+------+----------+
2.2 LEFT JOIN
LEFT JOIN, sol tablodaki tüm kayıtları getirir ve sağ tablodan eşleşenleri ekler. Eğer sağ tabloda eşleşme yoksa, NULL döndürülür.
SELECT Customers.id, Customers.name, Orders.id as order_idFROM CustomersLEFT JOIN Orders ON Customers.id = Orders.id;
Görselleştirme:
LEFT JOIN Sonucu:+----+------+----------+| id | name | order_id |+----+------+----------+| 1 | Ali | 1 || 2 | Veli | 2 || 3 | Ayşe | NULL || 1 | Ali | 3 |+----+------+----------+
2.3 RIGHT JOIN
RIGHT JOIN, sağ tablodaki tüm kayıtları ve sol tablodan eşleşenleri döndürür. Eğer sol tabloda eşleşme yoksa, NULL olarak gelir.
SELECT Customers.id, Customers.name, Orders.id as order_idFROM CustomersRIGHT JOIN Orders ON Customers.id = Orders.id;
Görselleştirme:
RIGHT JOIN Sonucu:+----+------+----------+| id | name | order_id |+----+------+----------+| 1 | Ali | 1 || 2 | Veli | 2 || 1 | Ali | 3 ||NULL| NULL | 4 |+----+------+----------+
2.4 FULL (OUTER) JOIN
FULL JOIN, her iki tablodaki tüm verileri getirir. Eğer bir tabloda eşleşme yoksa, NULL döndürülür.
SELECT Customers.id, Customers.name, Orders.id as order_idFROM CustomersFULL JOIN Orders ON Customers.id = Orders.customer_id;
Görselleştirme:
FULL JOIN Sonucu:+----+------+----------+| id | name | order_id |+----+------+----------+| 1 | Ali | 1 || 2 | Veli | 2 || 3 | Ayşe | NULL || 1 | Ali | 3 ||NULL| NULL | 4 |+----+------+----------+
2.5 CROSS JOIN
Bu join tipinde her satır her satırla eşleşir. Kartesyen çarpım yapılır. Örneğin bir müşterinin olası tüm siparişlerini listelemek istediğimizi varsayalım.
SELECT Customers.id, Customers.name, Orders.id as order_idFROM Customers cCROSS JOIN Orders o;
Görselleştirme:
+------+--------+-----------+| id | name | order_id |+------+--------+-----------+| 1 | Ali | 1 || 1 | Ali | 2 || 1 | Ali | 3 || 1 | Ali | 4 || 2 | Veli | 1 || 2 | Veli | 2 || 2 | Veli | 3 || 2 | Veli | 4 || 3 | Ayşe | 1 || 3 | Ayeş | 2 || 3 | Ayşe | 3 || 3 | Ayşe | 4 |+------+--------+-----------+
3. Sonuç
SQL’deki JOIN işlemleri, ilişkili verileri birleştirerek daha anlamlı sorgular yapmamızı sağlar. Tablolar arasındaki ilişkileri anlamak ve ihtiyaca göre doğru JOIN türünü seçmek önemlidir.
Bu makale SQL JOIN türlerini anlamanızı ve doğru kullanmanızı kolaylaştıracak temel bilgileri sağlamaktadır.