Lewati ke konten utama

Pengantar SQL Join

Dalam tutorial ini, Anda akan mempelajari mekanisme join di SQL dan berbagai jenisnya.
Diperbarui 5 Jun 2026  · 9 mnt baca

Selama menganalisis data dengan SQL, Anda sering perlu melihat beberapa tabel dan menggabungkannya untuk mendapatkan hasil yang diinginkan. Menggabungkan tabel untuk menganalisis data juga merupakan keterampilan wajib bagi data scientist. Dalam tutorial ini, Anda akan mempelajari berbagai jenis join yang dapat Anda lakukan di PostgreSQL. Anda akan mulai dengan mempelajari konsep dasar join di SQL, lalu mengenal berbagai jenis join beserta sintaksnya di PostgreSQL. Anda akan menutup tutorial ini dengan mengeksekusi berbagai jenis kueri join menggunakan dua tabel. Agar dapat mengikuti, Anda sebaiknya sudah familier dengan dasar-dasar SQL dan cara menulis kueri sederhana di PostgreSQL. Jika Anda mencari sumber belajar untuk hal tersebut, berikut beberapa yang dapat berguna -

Mari mulai.

Ringkasnya

  • SQL join memungkinkan Anda menggabungkan data dari dua atau lebih tabel menggunakan kolom yang sama.

  • INNER JOIN hanya mengembalikan baris yang cocok, sedangkan variasi OUTER JOIN (LEFT, RIGHT, FULL) mempertahankan baris yang tidak cocok dari satu atau kedua sisi dan mengisi kekosongan dengan NULL.

  • CROSS JOIN menghasilkan setiap kemungkinan kombinasi baris (produk Kartesius), dan SELF JOIN memungkinkan Anda menggabungkan tabel dengan dirinya sendiri — berguna untuk membandingkan baris dalam dataset yang sama.

  • Semi-join dan anti-join, yang ditulis sebagai subkueri dengan IN atau NOT IN, menyaring baris dari satu tabel berdasarkan apakah baris tersebut memenuhi kondisi di tabel lain.

Menyiapkan lingkungan basis data di PostgreSQL

Sebelum mempelajari dasar-dasar SQL join, sebaiknya Anda membuat beberapa tabel untuk analisis. Anda memerlukan setidaknya dua tabel yang memiliki minimal satu kolom yang sama. Walaupun Anda dapat menjalankan kueri self-join pada tabel yang sama, untuk saat ini mari abaikan hal tersebut.

Anda dapat melakukan semua operasi SQL pada alat bernama pgAdmin yang umumnya tersedia bersama instalasi PostgreSQL. Buka pgAdmin dan buat sebuah basis data (beri nama sesuai pilihan Anda) untuk membuat tabel jika Anda belum memiliki basis data yang akan digunakan. Lalu Anda dapat membuat dua tabel berikut dengan spesifikasi seperti yang diberikan -

  • student_name (id, name)
  • student_stream (id, stream)

Perhatikan bahwa kedua tabel memiliki kolom id yang sama. Anda dapat menggunakan pernyataan CREATE berikut untuk membuat tabel-tabel tersebut -

  • Untuk student_name -
    CREATE TABLE student_name
    (
    id smallint,
    name "char"[]
    );
    
  • Untuk student_stream -
    CREATE TABLE student_stream
    (
    id smallint,
    stream "char"[]
    );
    

Sekarang mari masukkan beberapa data ke dalam tabel.

  • Untuk student_name -
INSERT INTO student_name(id, name) VALUES (1, 'Sayak');

INSERT INTO student_name(id, name) VALUES (2, 'Alex');

INSERT INTO student_name(id, name) VALUES (3, 'Sameer');

INSERT INTO student_name(id, name) VALUES (4, 'Rick');
  • Untuk student_stream -
INSERT INTO student_stream(id, stream) VALUES (1, 'CS');

INSERT INTO student_stream(id, stream) VALUES (1, 'IT');

INSERT INTO student_stream(id, stream) VALUES (2, 'ECE');

INSERT INTO student_stream(id, stream) VALUES (9, 'ECE');

Entri tabel akan seperti berikut jika Anda mengeksekusi kueri di atas tanpa mengubah apa pun -

tabel student_name dan student_stream

Sekarang Anda memiliki dua tabel sederhana yang siap digunakan. Mari lanjut mempelajari dasar-dasar SQL join.

SQL Join - Dasar

SQL Join memungkinkan Anda menggabungkan dua atau lebih tabel (kadang hanya satu tabel) dengan menggunakan pengenal yang sama. Ambil contoh dua tabel yang Anda buat di atas — keduanya memiliki kolom id yang sama. Anda mungkin mempertanyakan perlunya join di SQL. Mari bahas secara singkat.

Karena batasan normalisasi, Anda mungkin tidak memiliki semua informasi yang diperlukan dalam satu tabel. Normalisasi tidak hanya diinginkan, tetapi juga diperlukan untuk menjaga konsistensi, mengurangi redundansi, dan mencegah berbagai anomali penyisipan dan pemutakhiran. Pertimbangkan kembali dua tabel di atas. Misalkan Anda ingin mencari jurusan yang diambil Sayak. Untuk menjawab pertanyaan ini, Anda perlu menggabungkan dua tabel tersebut (subkueri juga bisa digunakan, tetapi untuk sekarang kita abaikan) lalu melanjutkan sesuai kebutuhan.

Agar dua tabel dapat digabungkan, harus ada sesuatu yang sama di antara keduanya. Apakah ini berarti kedua tabel harus memiliki setidaknya satu kolom dengan nama yang sama? Atau sebenarnya apa syaratnya?

Tabel yang ingin Anda gabungkan tidak harus memiliki kolom dengan nama yang sama, namun secara logis harus setara, yaitu tipe datanya harus sama. Anda tidak dapat menggabungkan dua tabel yang memiliki kolom dengan nama sama tetapi tipe data berbeda. Sekarang mari pelajari berbagai jenis SQL join.

Berbagai jenis SQL Join

Pada bagian ini, Anda akan mempelajari beberapa jenis SQL Join -

  • INNER JOIN
    • Self-join
  • OUTER JOIN
    • LEFT JOIN
    • RIGHT JOIN
    • FULL JOIN
  • CROSS JOIN
  • Semi-join dan Anti-join

PostgreSQL menyediakan kata kunci terpisah untuk jenis-jenis join yang disebutkan dengan huruf kapital. Mari pelajari satu per satu. Untuk itu, Anda akan terlebih dahulu mempelajari join secara visual, lalu mengeksekusi kueri join terkait di PostgreSQL.

INNER JOIN

Perhatikan diagram berikut untuk memahami INNER JOIN secara visual -

Diagram inner join

Pada contoh di atas, kolom yang diperhatikan adalah kolom id. INNER JOIN akan mengabaikan kolom lainnya yang nilainya tidak sama di kedua tabel. Sekarang mari jalankan kueri di PostgreSQL yang melakukan INNER JOIN antara dua tabel — student_name dan student_stream.

Setelah menjalankan kueri berikut, Anda akan mendapatkan hasil seperti yang ditunjukkan pada gambar di atas -

SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
INNER JOIN student_stream AS s2
ON s1.id = s2.id;

s1 dan s2 adalah alias untuk kedua tabel. Anda menggunakan kata kunci ON bersama INNER JOIN. Kueri ini juga dapat dijalankan menggunakan kata kunci USING -

SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
INNER JOIN student_stream AS s2
USING (id);

Self Join memungkinkan Anda melakukan join pada tabel yang sama. Lalu kapan ini menjadi opsi yang baik? Misalkan Anda memiliki tabel yang terdiri dari kolom berikut -

  • Country
  • Continent

Sekarang Anda ingin mencantumkan dua negara dengan ketentuan benua mereka sama. Gambar berikut akan memberi gambaran tentang hasil yang diharapkan -

hasil self join (bentuk tabel)

OUTER JOIN

OUTER JOIN dapat dibagi lagi menjadi tiga jenis -

LEFT JOIN atau Left Outer JOIN: Diagram berikut memberi gambaran yang jelas tentang LEFT JOIN di SQL -

Diagram left join di SQL

Perhatikan bahwa tidak seperti INNER JOIN, LEFT JOIN mengambil rekaman dari tabel kiri (terkait urutan yang Anda tentukan dalam kueri) yang tidak memiliki pasangan yang cocok di tabel kanan. Ini, pada gilirannya, menunjukkan bahwa Sameer dan Rick belum mengambil jurusan apa pun. Kueri untuk ini adalah -

SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
LEFT JOIN student_stream AS s2
ON s1.id = s2.id;

RIGHT JOIN atau Right Outer JOIN: RIGHT JOIN kebalikan persis dari LEFT JOIN -

diagram right join di SQL

RIGHT JOIN dapat membantu Anda menemukan jurusan yang tidak diambil oleh siapa pun. Kuerinya adalah -

SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
RIGHT JOIN student_stream AS s2
ON s1.id = s2.id;

FULL JOIN atau Full Outer JOIN: FULL JOIN memungkinkan Anda menggabungkan LEFT JOIN dan RIGHT JOIN dalam satu kompilasi -

Diagram full join di SQL

Kueri yang sesuai adalah -

SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
FULL JOIN student_stream AS s2
ON s1.id = s2.id;

Perhatikan bahwa Anda dapat mengeksekusi semua kueri OUTER JOIN di atas menggunakan kata kunci USING. Sekarang mari pelajari CROSS JOIN.

CROSS JOIN

CROSS JOIN pada dasarnya adalah produk Kartesius antara dua himpunan yang diekspresikan dengan SQL. Misalkan Anda perlu mendapatkan semua kombinasi yang mungkin di antara dua tabel atau bahkan dalam satu tabel. Anda memerlukan CROSS JOIN untuk melakukan ini. Gambar berikut menyajikan konsep ini secara visual -

Diagram cross join

Anda sudah memiliki dua tabel untuk mengujinya. Untuk mendapatkan semua kombinasi yang mungkin antara kolom id pada tabel student_name dan student_stream, Anda dapat menjalankan kueri berikut -

SELECT s1.id, s2.id
FROM student_name AS s1
CROSS JOIN student_stream AS s2;

Dan Anda akan mendapatkan hasil berikut -

Tabel semua kombinasi yang mungkin

Sekarang mari lihat dua jenis join lain yang tidak memiliki kata kunci langsung di PostgreSQL.

Semi-join dan Anti-join

Pertimbangkan tabel yang Anda buat sebelumnya di tutorial ini:

Tabel asli

Kueri Semi Join umumnya dieksekusi dalam bentuk subkueri di mana baris diambil dari tabel pertama berdasarkan suatu kondisi (atau sekumpulan kondisi) yang cocok di tabel kedua. Misalkan tabel kiri adalah tabel pertama, dan tabel kanan adalah tabel kedua.

Kueri Anti Join kebalikannya. Pada Anti Join, baris diambil dari tabel pertama berdasarkan suatu kondisi (atau sekumpulan kondisi) yang tidak cocok di tabel kedua. Berikut diagram agar Anda dapat memahaminya secara visual -

Diagram semi-join dan anti-join

Kueri untuk merealisasikan Semi Join adalah -

select id, name
from student_name
where id IN
(select id from student_stream where stream
IN ('CS', 'IT', 'ECE'));

Demikian pula, kueri yang merealisasikan Anti Join dalam kasus ini adalah -

select id, name
from student_name
where id NOT IN
(select id from student_stream where stream
IN ('CS', 'IT', 'ECE'));

Perhatikan penggunaan NOT pada kueri di atas.

Meningkatkan keahlian SQL Join Anda ke level berikutnya

Itu saja untuk tutorial ini. Anda telah mempelajari beberapa jenis SQL Join dan juga mengenal sintaksnya di PostgreSQL. Jika Anda ingin berlatih latihan SQL Join yang menantang, Anda sebaiknya mengikuti kursus Joining Data in SQL dari DataCamp. Bahkan, materi dari kursus tersebut digunakan sebagai referensi untuk membuat tutorial ini.

Silakan tinggalkan pertanyaan Anda di bagian Comments.

Topik

Kursus SQL

Kursus

Manipulasi Data di SQL

4 Hr
323.6K
Kuasai kueri SQL yang kompleks yang diperlukan untuk menjawab berbagai pertanyaan ilmu data dan menyiapkan set data yang kuat untuk analisis di PostgreSQL.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak