Syntax JOIN di SQL: Panduan Lengkap
JOIN di SQL digunakan untuk menggabungkan data dari dua atau lebih tabel berdasarkan hubungan di antara tabel-tabel tersebut. JOIN sangat berguna ketika Anda bekerja dengan database yang memiliki struktur relasional, di mana data dibagi ke dalam beberapa tabel.
Jenis-Jenis JOIN di SQL
- INNER JOIN
- LEFT JOIN (LEFT OUTER JOIN)
- RIGHT JOIN (RIGHT OUTER JOIN)
- FULL JOIN (FULL OUTER JOIN)
- CROSS JOIN
- SELF JOIN
1. INNER JOIN
INNER JOIN hanya mengembalikan baris yang memiliki kecocokan di kedua tabel.
Sintaks:
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
Contoh:
Misalkan Anda memiliki dua tabel: Tabel Customers
| CustomerID | Name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
Tabel Orders
| OrderID | CustomerID | Product |
|---|---|---|
| 101 | 1 | Laptop |
| 102 | 2 | Smartphone |
Query:
SELECT Customers.Name, Orders.Product
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Hasil:
| Name | Product |
|---|---|
| Alice | Laptop |
| Bob | Smartphone |
2. LEFT JOIN (LEFT OUTER JOIN)
LEFT JOIN mengembalikan semua baris dari tabel kiri, dan baris yang cocok dari tabel kanan. Jika tidak ada kecocokan, NULL akan ditampilkan.
Sintaks:
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
Contoh:
Query:
SELECT Customers.Name, Orders.Product
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Hasil:
| Name | Product |
|---|---|
| Alice | Laptop |
| Bob | Smartphone |
| Charlie | NULL |
3. RIGHT JOIN (RIGHT OUTER JOIN)
RIGHT JOIN mirip dengan LEFT JOIN, tetapi mengembalikan semua baris dari tabel kanan dan kecocokan dari tabel kiri.
Sintaks:
SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;
Contoh:
Query:
SELECT Customers.Name, Orders.Product
FROM Customers
RIGHT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Hasil:
| Name | Product |
|---|---|
| Alice | Laptop |
| Bob | Smartphone |
4. FULL JOIN (FULL OUTER JOIN)
FULL JOIN mengembalikan semua baris dari kedua tabel, dengan kecocokan dan tanpa kecocokan. Jika tidak ada kecocokan, NULL akan ditampilkan.
Sintaks:
SELECT columns
FROM table1
FULL JOIN table2
ON table1.column = table2.column;
Contoh:
Query:
SELECT Customers.Name, Orders.Product
FROM Customers
FULL JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Hasil:
| Name | Product |
|---|---|
| Alice | Laptop |
| Bob | Smartphone |
| Charlie | NULL |
5. CROSS JOIN
CROSS JOIN menghasilkan produk kartesian, di mana setiap baris dari tabel pertama digabungkan dengan setiap baris dari tabel kedua.
Sintaks:
SELECT columns
FROM table1
CROSS JOIN table2;
Contoh:
Query:
SELECT Customers.Name, Orders.Product
FROM Customers
CROSS JOIN Orders;
Hasil:
| Name | Product |
|---|---|
| Alice | Laptop |
| Alice | Smartphone |
| Bob | Laptop |
| Bob | Smartphone |
| Charlie | Laptop |
| Charlie | Smartphone |
6. SELF JOIN
SELF JOIN adalah JOIN pada tabel yang sama. Biasanya digunakan untuk membandingkan baris dalam tabel tersebut.
Sintaks:
SELECT a.column1, b.column2
FROM table_name a, table_name b
WHERE condition;
Contoh:
Misalkan Anda memiliki tabel Employees:
| EmployeeID | Name | ManagerID |
|---|---|---|
| 1 | Alice | NULL |
| 2 | Bob | 1 |
| 3 | Charlie | 1 |
Query:
SELECT e1.Name AS Employee, e2.Name AS Manager
FROM Employees e1
LEFT JOIN Employees e2
ON e1.ManagerID = e2.EmployeeID;
Hasil:
| Employee | Manager |
|---|---|
| Alice | NULL |
| Bob | Alice |
| Charlie | Alice |
Tabel Perbandingan JOIN
| JOIN Type | Data yang Dikembalikan |
|---|---|
| INNER JOIN | Baris dengan kecocokan di kedua tabel. |
| LEFT JOIN | Semua baris dari tabel kiri, dengan kecocokan di tabel kanan. |
| RIGHT JOIN | Semua baris dari tabel kanan, dengan kecocokan di tabel kiri. |
| FULL JOIN | Semua baris dari kedua tabel, dengan kecocokan dan tanpa kecocokan. |
| CROSS JOIN | Produk kartesian dari kedua tabel. |
| SELF JOIN | Perbandingan baris dalam tabel yang sama. |
Tips Menggunakan JOIN di SQL
-
Gunakan Alias: Alias membantu membuat query lebih mudah dibaca.
SELECT c.Name, o.Product FROM Customers c INNER JOIN Orders o ON c.CustomerID = o.CustomerID; -
Optimalkan Index: Pastikan kolom yang digunakan dalam JOIN memiliki indeks untuk meningkatkan kinerja query.
-
Gunakan FILTER: Tambahkan klausa
WHEREuntuk membatasi hasil JOIN.
Dengan pemahaman JOIN ini, Anda dapat mengelola data dalam database secara efisien dan fleksibel. Jika Anda memerlukan contoh yang lebih kompleks,
Komentar
Posting Komentar