Panduan Lengkap SQL JOIN dengan Contoh MySQL
SQL JOIN adalah salah satu konsep penting dalam database relasional yang memungkinkan kita menggabungkan data dari dua atau lebih tabel berdasarkan kolom yang memiliki hubungan. Dalam artikel ini, kita akan membahas berbagai jenis SQL JOIN dengan contoh yang dapat dipraktikkan di MySQL.
1. INNER JOIN
Penjelasan:
INNER JOIN mengembalikan hanya baris yang memiliki pasangan yang cocok di kedua tabel berdasarkan kunci tertentu.
Sintaks:
SELECT *
FROM A
INNER JOIN B ON A.key = B.key;
Contoh di MySQL:
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
product VARCHAR(50),
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
INSERT INTO customers (id, name) VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
INSERT INTO orders (id, customer_id, product) VALUES (1, 1, 'Laptop'), (2, 2, 'Smartphone');
SELECT customers.name, orders.product
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id;
Hasil:
Hanya pelanggan yang memiliki pesanan yang akan muncul.
2. FULL JOIN
Penjelasan:
FULL JOIN mengembalikan semua data dari kedua tabel, termasuk yang tidak memiliki pasangan.
Sintaks:
SELECT *
FROM A
FULL JOIN B ON A.key = B.key;
MySQL Tidak Mendukung FULL JOIN Secara Langsung, Alternatifnya:
SELECT *
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id
UNION
SELECT *
FROM customers
RIGHT JOIN orders ON customers.id = orders.customer_id;
Hasil:
Semua pelanggan dan pesanan akan muncul, meskipun tidak memiliki pasangan.
3. LEFT JOIN
Penjelasan:
LEFT JOIN mengembalikan semua baris dari tabel pertama (kiri) dan hanya yang cocok dari tabel kedua (kanan).
Sintaks:
SELECT *
FROM A
LEFT JOIN B ON A.key = B.key;
Contoh di MySQL:
SELECT customers.name, orders.product
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id;
Hasil:
Semua pelanggan akan muncul, meskipun tidak memiliki pesanan.
4. LEFT JOIN (WITH NULL CHECK)
Penjelasan:
Menampilkan hanya data dari tabel pertama (kiri) yang tidak memiliki pasangan di tabel kedua (kanan).
Sintaks:
SELECT *
FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL;
Contoh di MySQL:
SELECT customers.name
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id
WHERE orders.customer_id IS NULL;
Hasil:
Menampilkan pelanggan yang tidak memiliki pesanan.
5. RIGHT JOIN
Penjelasan:
RIGHT JOIN mirip dengan LEFT JOIN, tetapi menampilkan semua baris dari tabel kedua (kanan) dan hanya yang cocok dari tabel pertama (kiri).
Sintaks:
SELECT *
FROM A
RIGHT JOIN B ON A.key = B.key;
Contoh di MySQL:
SELECT customers.name, orders.product
FROM customers
RIGHT JOIN orders ON customers.id = orders.customer_id;
Hasil:
Semua pesanan akan ditampilkan, termasuk pesanan tanpa pelanggan.
6. RIGHT JOIN (WITH NULL CHECK)
Penjelasan:
Menampilkan hanya data dari tabel kedua (kanan) yang tidak memiliki pasangan di tabel pertama (kiri).
Sintaks:
SELECT *
FROM A
RIGHT JOIN B ON A.key = B.key
WHERE A.key IS NULL;
Contoh di MySQL:
SELECT orders.product
FROM customers
RIGHT JOIN orders ON customers.id = orders.customer_id
WHERE customers.id IS NULL;
Hasil:
Menampilkan pesanan yang tidak memiliki pelanggan.
Kesimpulan
SQL JOIN sangat berguna dalam menggabungkan data dari beberapa tabel. Dengan memahami jenis-jenis JOIN di atas, kita bisa menyusun query yang lebih kompleks dan efisien untuk analisis data dalam database relasional.
Coba jalankan contoh-contoh di atas pada MySQL dan eksplorasi lebih lanjut bagaimana JOIN dapat membantu mengelola data!