İçeriğe geç

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_id
FROM Customers
INNER 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_id
FROM Customers
LEFT 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_id
FROM Customers
RIGHT 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_id
FROM Customers
FULL 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_id
FROM Customers c
CROSS 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.