Kursus
Dalam tutorial ini, saya akan menjelaskan perbedaan antara INNER JOIN dan OUTER JOIN di SQL beserta contohnya. Setelah memahami topik ini, Anda mungkin ingin mengikuti kursus kami Joining Data in SQL, yang membahas jenis join lain yang menarik, seperti SELF JOIN dan CROSS JOIN, serta konsep yang lebih luas seperti teori himpunan.
Jawaban Singkat
INNER JOIN hanya mengembalikan baris yang cocok antartabel berdasarkan kolom yang sama, dan mengecualikan baris yang tidak cocok. Misalnya, kueri di bawah ini menampilkan pesanan beserta detail pelanggan hanya jika ada kecocokan.
-- Inner Join: Returns only matching rows from both tables
SELECT o.OrderID, c.CustomerName
FROM Orders o
INNER JOIN Customers c ON o.CustomerID = c.CustomerID;
OUTER JOIN menyertakan baris yang cocok sekaligus baris yang tidak cocok dari satu atau kedua tabel. Kueri di bawah ini mengembalikan semua pelanggan, termasuk yang tidak memiliki pesanan.
-- Left Outer Join: Returns all rows from Customers and matching rows from Orders
SELECT c.CustomerName, o.OrderID
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID;
Menelusuri SQL INNER JOIN dan OUTER JOIN
Sekarang, mari kita cermati INNER JOIN dan OUTER JOIN di SQL, satu per satu. Saat membahas masing-masing, perhatikan dua tabel berikut:

Contoh tabel employees. Gambar oleh Penulis.

Contoh tabel departments. Gambar oleh Penulis.
Cara Kerja INNER JOIN
Sebuah INNER JOIN hanya mengambil baris yang memiliki kecocokan di kedua tabel berdasarkan kondisi yang ditentukan.
Kueri berikut memilih employee_id, demployee_name, department_name, dan salary lalu mengembalikan baris di mana department_id ada.
-- Example: Get employees with matching departments
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
INNER JOIN departments
-- Returns only employees assigned to a department
ON employees.department_id = departments.department_id;

Contoh tabel yang digabung menggunakan SQL INNER JOIN. Gambar oleh Penulis.
Cara Kerja OUTER JOIN
OUTER JOIN menyertakan baris yang tidak cocok dari satu atau kedua tabel, tergantung pada jenis OUTER JOIN yang digunakan.
LEFT OUTER JOIN (LEFT JOIN)
LEFT OUTER JOIN mengembalikan semua record dari tabel kiri dan record yang cocok dari tabel kanan. Jika tidak ada kecocokan, nilai NULL dikembalikan untuk kolom dari tabel kanan.
Contoh berikut mengambil semua record dari tabel employees, termasuk yang tidak memiliki pasangan. department_name yang hilang untuk karyawan dikembalikan sebagai NULL.
-- Get all employees, even those without a department
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

Contoh tabel yang digabung menggunakan SQL left outer join. Gambar oleh Penulis.
LEFT JOIN dan LEFT OUTER JOIN digunakan secara bergantian di SQL karena keduanya mengambil semua baris dari tabel kiri dan baris yang cocok dari tabel kanan.
RIGHT OUTER JOIN (RIGHT JOIN)
RIGHT OUTER JOIN mengembalikan semua record dari tabel kanan dan record yang cocok dari tabel kiri. Baris yang tidak cocok di tabel kiri akan bernilai NULL.
Kueri di bawah ini mengembalikan semua record dari tabel departments, termasuk yang tidak memiliki karyawan yang cocok.
-- Get all departments, even those without employees
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id;

Contoh tabel yang digabung menggunakan SQL Right outer join. Gambar oleh Penulis.
FULL OUTER JOIN
FULL OUTER JOIN menggabungkan hasil dari left dan right outer join. Ini mengembalikan semua record dari kedua tabel, dan mengisi dengan NULL jika tidak ada kecocokan.
Kueri di bawah ini mengembalikan semua record untuk tabel employees dan departments, termasuk baris yang tidak cocok.
-- Combine all employees and departments
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
FULL JOIN departments
ON employees.department_id = departments.department_id;

Contoh tabel yang digabung menggunakan SQL Full outer join. Gambar oleh Penulis.
INNER JOIN vs. OUTER JOIN: Perbedaan Utama
INNER JOIN dan OUTER JOIN secara mendasar berbeda dalam cara menangani baris yang tidak cocok saat menggabungkan tabel. Memahami perbedaan ini penting untuk memilih jenis join yang tepat dalam kueri basis data Anda. Mari bandingkan perbedaannya.
Apa yang dikembalikan oleh INNER JOIN
INNER JOIN hanya mengembalikan baris dengan nilai yang cocok di kedua tabel. Jenis join ini digunakan saat Anda membutuhkan data yang ada di kedua dataset.
Kueri berikut mengambil record dari employees dengan baris yang cocok dari tabel departments.
-- Example: Get employees with matching departments
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
INNER JOIN departments
-- Returns only employees assigned to a department
ON employees.department_id = departments.department_id;

Contoh tabel yang digabung menggunakan SQL INNER JOIN. Gambar oleh Penulis.
Apa yang dikembalikan oleh OUTER JOIN
OUTER JOIN menyertakan baris yang tidak cocok dari satu atau kedua tabel, tergantung pada jenis OUTER JOIN. Misalnya, LEFT OUTER JOIN mengembalikan semua baris dari tabel kiri dan baris yang cocok dari tabel kanan. Baris yang tidak cocok dari tabel kanan akan memiliki nilai NULL.
Kueri berikut mengambil record karyawan, termasuk yang tidak memiliki departemen.
-- Get all employees, even those without a department
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

Contoh data yang diambil menggunakan SQL LEFT OUTER JOIN. Gambar oleh Penulis.
Kapan Menggunakan SQL INNER JOIN dan OUTER JOIN
INNER JOIN dan OUTER JOIN juga berbeda dalam kasus penggunaan praktisnya untuk pengambilan data.
Kapan menggunakan INNER JOIN
INNER JOIN paling efektif saat Anda hanya membutuhkan data irisan dari dua tabel. Misalnya, Anda dapat menggunakan INNER JOIN saat menganalisis data penjualan untuk menemukan produk yang telah terjual, ketika tabel produk dan penjualan memiliki entri yang cocok.
Kapan menggunakan OUTER JOIN
OUTER JOIN tepat digunakan saat Anda perlu mengembalikan dataset lengkap, termasuk baris yang tidak cocok. Misalnya, saat membuat laporan untuk menampilkan semua karyawan, termasuk yang belum memiliki penugasan departemen, atau semua departemen, termasuk yang belum memiliki karyawan.
Kesimpulan
Memahami perbedaan antara INNER JOIN dan OUTER JOIN penting untuk menulis kueri yang efisien. Mempelajari teknik-teknik ini juga membantu meningkatkan optimasi kueri untuk pengambilan data yang lebih cepat. Saya mendorong Anda untuk terus berlatih agar menguasai lebih banyak keterampilan manajemen basis data.
Saya merekomendasikan untuk mencoba jalur karier Associate Data Analyst in SQL kami untuk menjadi analis data yang andal. Kursus Reporting in SQL kami juga akan membantu Anda mahir membangun laporan dan dasbor yang kompleks untuk penyajian data yang efektif. Jika Anda sedang mempersiapkan wawancara yang menuntut penampilan kemampuan SQL, saya sarankan membaca blog kami, 20 Top SQL Joins Interview Questions, untuk membantu persiapan wawancara Anda.
SQL INNER JOIN dan OUTER JOIN: FAQ
Apa perbedaan antara INNER JOIN dan OUTER JOIN di SQL?
INNER JOIN hanya mengembalikan baris yang cocok dari kedua tabel, sedangkan OUTER JOIN menyertakan baris yang tidak cocok, dengan NULL mengisi celah saat tidak ada data yang bersesuaian.
Kapan saya harus menggunakan INNER JOIN di SQL?
Gunakan INNER JOIN ketika Anda perlu mengambil hanya baris dengan nilai yang cocok di kedua tabel.
Apa saja jenis OUTER JOIN di SQL?
Jenis OUTER JOIN adalah LEFT OUTER JOIN, RIGHT OUTER JOIN, dan FULL OUTER JOIN.
Bagaimana cara kerja LEFT OUTER JOIN di SQL?
Left outer join mengembalikan semua baris dari tabel kiri, baris yang cocok dari tabel kanan, dan baris yang tidak cocok dari tabel kiri.
Apa itu FULL OUTER JOIN di SQL?
FULL OUTER JOIN mengembalikan semua baris dari kedua tabel, termasuk baris yang tidak cocok dari masing-masing tabel.

