DEV Community

Dhiecoderweb
Dhiecoderweb

Posted on • Originally published at dhiecoderweb.com

Perbedaan INNER JOIN, LEFT JOIN, dan RIGHT JOIN di MySQL

Saat bekerja dengan database relasional, hampir tidak mungkin Anda hanya bekerja dengan satu tabel. Anda pasti perlu menggabungkan data dari dua tabel atau lebih. Di MySQL, operasi penggabungan tabel ini dilakukan dengan JOIN. Ada beberapa jenis JOIN yang paling sering digunakan: INNER JOIN, LEFT JOIN, dan RIGHT JOIN. Artikel ini menjelaskan perbedaannya secara praktis dengan contoh nyata.

Persiapan Tabel Contoh

Sebelum membahas perbedaan JOIN, kita siapkan dua tabel sebagai contoh: tabel karyawan dan tabel departemen.

-- Buat tabel departemen
CREATE TABLE departemen (
    id_dept INT AUTO_INCREMENT PRIMARY KEY,
    nama_dept VARCHAR(100) NOT NULL
) ENGINE=InnoDB;

-- Buat tabel karyawan
CREATE TABLE karyawan (
    id_karyawan INT AUTO_INCREMENT PRIMARY KEY,
    nama VARCHAR(100) NOT NULL,
    id_dept INT,
    gaji DECIMAL(10, 2)
) ENGINE=InnoDB;

-- Insert data departemen
INSERT INTO departemen (nama_dept) VALUES
('Engineering'),
('Marketing'),
('HR'),
('Finance');

-- Insert data karyawan (beberapa tidak punya departemen)
INSERT INTO karyawan (nama, id_dept, gaji) VALUES
('Andi',   1, 8000000),
('Budi',   1, 7500000),
('Citra',  2, 6000000),
('Deni',   NULL, 5500000),
('Eka',    5, 6500000);  -- id_dept 5 tidak ada di tabel departemen
Enter fullscreen mode Exit fullscreen mode

Perhatikan bahwa Deni tidak memiliki departemen (NULL), dan Eka memiliki id_dept yang tidak ada di tabel departemen. Kondisi ini penting untuk memahami perbedaan setiap jenis JOIN.

INNER JOIN – Hanya Data yang Cocok

INNER JOIN mengembalikan baris-baris yang memiliki kecocokan di kedua tabel. Jika salah satu sisi tidak memiliki pasangan, baris tersebut tidak akan muncul di hasil.

-- INNER JOIN: hanya tampilkan karyawan yang punya departemen valid
SELECT
    k.nama AS nama_karyawan,
    d.nama_dept AS departemen,
    k.gaji
FROM karyawan k
INNER JOIN departemen d ON k.id_dept = d.id_dept
ORDER BY k.nama;
Enter fullscreen mode Exit fullscreen mode

Hasil: Hanya Andi, Budi, dan Citra yang muncul. Deni (id_dept NULL) dan Eka (id_dept tidak valid) tidak muncul karena tidak ada kecocokan di tabel departemen.


Artikel ini ditampilkan sebagian. Untuk pembahasan selengkapnya, beserta contoh dan langkah detailnya, Anda dapat membacanya pada sumber aslinya:

Perbedaan INNER JOIN, LEFT JOIN, dan RIGHT JOIN di MySQL

Tutorial pemrograman dan tools developer lainnya juga tersedia di dhiecoderweb.com.

Top comments (0)