Lewati ke konten utama

Operator Himpunan di SQL: Panduan Komprehensif

Kuasai operator himpunan SQL: UNION, UNION ALL, INTERSECT, dan EXCEPT. Pelajari aturan sintaks, lihat contoh praktis, dan pahami kapan menggunakan masing-masing operator.
Diperbarui 2 Jun 2026  · 11 mnt baca

Operasi himpunan menjadi landasan SQL dan memungkinkan kita menggabungkan, membandingkan, serta memfilter data dari berbagai sumber. Operasi ini sangat penting untuk tugas-tugas mulai dari integrasi dan pembersihan data hingga analitik lanjutan dan pelaporan.

Dalam tutorial ini, kita akan mempelajari apa itu operator himpunan, bagaimana penggunaannya di SQL, penerapannya secara praktis, dan banyak lagi! Jika Anda mencari sumber belajar SQL yang lengkap, lihat SQL Fundamentals yang terdiri dari tujuh kursus ini.

Bagi Anda yang ingin cepat, mari mulai dengan jawaban sangat singkat tentang apa itu operasi himpunan di SQL.

Apa Itu Operasi Himpunan di SQL?

Operasi himpunan di SQL adalah teknik untuk menggabungkan atau membandingkan hasil dari dua atau lebih pernyataan SELECT. Operasi ini berperan seperti operasi himpunan matematis, memungkinkan kita menemukan gabungan, irisan, atau selisih antar baris yang dikembalikan oleh kueri. Ini menjadikannya tak tergantikan saat menganalisis data dari berbagai sumber atau perspektif.

Berikut gambaran singkat operasi himpunan inti:

  • UNION: Menggabungkan semua baris unik dari dua atau lebih pernyataan SELECT, menghapus duplikasi.

  • UNION ALL: Menggabungkan semua baris dari dua atau lebih pernyataan SELECT, mempertahankan duplikasi.

  • INTERSECT: Mengembalikan hanya baris yang muncul di kedua pernyataan SELECT.

  • EXCEPT: Mengembalikan baris dari pernyataan SELECT pertama yang tidak muncul di pernyataan kedua.

Perbandingan dengan operasi aljabar relasional

Aljabar relasional adalah kerangka teoretis yang menjadi dasar untuk memahami kueri basis data. Ia menawarkan operasi abstrak seperti proyeksi, seleksi, dan join, berakar pada prinsip matematis dan independen dari sistem basis data tertentu. Anggap saja ini sebagai logika "di balik layar" yang menggerakkan interaksi kita dengan basis data.

Operator himpunan di SQL menawarkan implementasi praktis dari konsep-konsep ini dalam lingkungan basis data. Operator ini memungkinkan kita melakukan operasi himpunan seperti gabungan, irisan, dan selisih langsung pada himpunan hasil kueri SQL.

Sementara aljabar relasional memberikan fondasi formal untuk operasi basis data, operator himpunan di SQL menyediakan antarmuka yang terstandarisasi dan mudah digunakan untuk tugas manipulasi data.

Memahami hubungan antara operator himpunan dan operasi aljabar relasional memberi wawasan tentang landasan teoretis SQL. Mengetahui kaitan ini membantu Anda menulis kueri dengan model mental yang lebih jelas tentang apa yang terjadi di balik layar.

Jenis Operator Himpunan di SQL

Ada tiga operator himpunan utama di SQL:

  • UNION

  • INTERSECT

  • EXCEPT (atau MINUS di beberapa dialek)

Operator-operator ini secara matematis berkorespondensi dengan konsep gabungan, irisan, dan selisih himpunan.

Aturan Menggunakan Operator Himpunan

Sebelum menggabungkan kueri dengan operator himpunan, ada empat persyaratan yang harus dipenuhi. Salah satunya saja salah, kueri Anda akan gagal.

  • Jumlah kolom sama: Setiap SELECT harus mengembalikan jumlah kolom yang sama. Jika satu kueri mengembalikan tiga dan yang lain dua, basis data akan melempar error.

  • Tipe data kompatibel: Kolom yang bersesuaian harus memiliki tipe yang cocok. Anda tidak bisa menggabungkan kolom nama VARCHAR dengan ID INTEGER pada posisi yang sama.

  • Urutan kolom sama: SQL memetakan kolom berdasarkan posisi, bukan nama. Kolom pertama kueri satu dipetakan ke kolom pertama kueri dua, terlepas dari apa nama kolom tersebut.

  • ORDER BY hanya di akhir: ORDER BY harus muncul sekali, di paling akhir kueri gabungan. Anda tidak dapat menggunakannya di dalam pernyataan SELECT individual.

Satu detail lagi: nama kolom pada output berasal dari pernyataan SELECT pertama. Alias pada kueri berikutnya akan diabaikan, jadi tambahkan alias hanya pada kueri pertama jika Anda memerlukan nama output khusus.

Cara Menggunakan Operator UNION di SQL

Operator UNION menggabungkan hasil dari dua atau lebih kueri SELECT menjadi satu himpunan hasil, secara bawaan menghapus baris duplikat.

Sebagai contoh, misalkan kita memiliki dua tabel, employees dan contractors, masing-masing dengan kolom serupa seperti contractors, department, dan salary. Untuk tujuan pembelajaran, mari gunakan dua tabel contoh berikut:

employees:

name

department

salary

Alice

Marketing

65000

Bob

Sales

70000

Carol

Engineering

80000

John

HR

55000

contractors:

name

department

salary

David

Marketing

60000

Eva

Sales

68000

Carol

Engineering

75000

Kita bisa menggabungkan hasil dari kedua tabel dengan perintah berikut:

-- Using UNION to combine all employees and contractors
SELECT name, department, salary FROM employees
UNION
SELECT name, department, salary FROM contractors;

Kueri ini memilih kolom name, department, dan salary dari tabel employees dan contractors lalu menggabungkannya menjadi satu himpunan hasil. Operator UNION secara otomatis menghapus baris duplikat dari hasil akhir.

name

department

salary

Alice

Marketing

65000

Bob

Sales

70000

Carol

Engineering

80000

John

HR

55000

David

Marketing

60000

Eva

Sales

68000

Perhatikan bahwa Carol, yang muncul di kedua tabel, hanya terdaftar sekali pada hasil. Jika kita ingin mempertahankan kedua kemunculan Carol (dengan gaji berbeda), kita akan menggunakan UNION ALL.

UNION vs UNION ALL

Operator UNION tidak menghapus nilai NULL. Jika sebuah kolom berisi nilai NULL pada satu himpunan hasil dan berisi nilai bukan NULL pada kolom bersesuaian di himpunan hasil lainnya, nilai NULL akan tetap ada di himpunan hasil akhir yang dihasilkan oleh operator UNION.

Jika kita ingin memasukkan nilai NULL dalam himpunan hasil dan mencegah penghapusannya oleh operator UNION, kita dapat menggunakan operator UNION ALL. Operator ini menggabungkan hasil dari beberapa kueri SELECT, termasuk semua baris dari setiap himpunan hasil, terlepas apakah itu duplikat atau mengandung nilai NULL.

Cara Menggunakan Operator INTERSECT di SQL

Operator INTERSECT mengembalikan hanya baris yang muncul di kedua himpunan hasil. Anggap saja seperti mencari orang yang termasuk dalam kedua kelompok.

Mari gunakan INTERSECT untuk mengkueri tabel kita di atas. Demi contoh, kita hanya mengkueri kolom name dan department:

-- Using INTERSECT to find common employees
SELECT name, department FROM employees
INTERSECT
SELECT name, department FROM contractors;

Kueri ini memilih kolom name dan department dari kedua tabel employees dan contractors dan mengembalikan hanya baris yang ada di kedua tabel berdasarkan semua kolom yang dipilih.

name

department

Carol

Engineering

Operator INTERSECT menangani nilai NULL berdasarkan aturan perbandingan standar, menganggap nilai NULL setara saat membandingkan kolom yang bersesuaian. Operator ini juga menghasilkan himpunan kosong saat berhadapan dengan himpunan hasil kosong.

Dengan kata lain, jika nilai NULL ada pada satu himpunan hasil dan kolom bersesuaian pada himpunan hasil lain berisi nilai bukan NULL, baris tersebut tidak dianggap sama – sehingga tidak akan disertakan dalam hasil irisan.

Selain itu, jika salah satu himpunan hasil yang diberikan ke operator INTERSECT kosong, maka hasil keseluruhannya juga kosong. Tidak ada baris yang sama antara himpunan kosong dan apa pun.

Cara Menggunakan Operator UNION di SQL

Operator EXCEPT mengembalikan baris dari himpunan hasil pertama yang tidak ada di himpunan kedua.

Di Oracle Database, EXCEPT ditulis sebagai MINUS; semua dialek utama lainnya (PostgreSQL, SQL Server, MySQL 8.0.31+, SQLite) menggunakan EXCEPT.

Sebagai contoh, misalkan kita mengeksekusi kueri berikut:

-- Using EXCEPT to find employees who are not contractors
SELECT name, department, salary FROM employees
EXCEPT
SELECT name, department, salary FROM contractors;

Kolom name, department, dan salary dipilih dari tabel employees dan hanya mengembalikan baris yang tidak ada di tabel contractors.

name

department

salary

Alice

Marketing

65000

Bob

Sales

70000

John

HR

55000

Operator EXCEPT juga mengikuti aturan perbandingan standar untuk menangani nilai NULL. Perilakunya terhadap himpunan hasil kosong menghasilkan himpunan kosong jika himpunan hasil pertama kosong atau menyertakan semua baris dari himpunan hasil pertama jika himpunan hasil kedua kosong.

Operator Himpunan SQL: Performa dan Optimasi

Dampak operator himpunan terhadap performa kueri di SQL dapat bervariasi tergantung pada faktor seperti ukuran dataset yang terlibat, kompleksitas kueri, dan sistem manajemen basis data (DBMS) yang digunakan.

Mari uraikan faktor-faktor kunci dan strategi optimasinya.

Volume data dan kompleksitas kueri

Saat bekerja dengan data berukuran besar, operator himpunan dapat berdampak signifikan pada performa kueri karena ukuran himpunan hasil yang perlu digabungkan, diiris, atau dibandingkan meningkatkan waktu pemrosesan yang dibutuhkan untuk melakukan operasi tersebut.

Kueri kompleks yang berisi banyak subkueri, join, atau operator himpunan dapat menimbulkan overhead pemrosesan tambahan dan memengaruhi performa kueri. Operasi berantai atau operator himpunan bertingkat bisa semakin memperburuk konsekuensi performa.

Pengindeksan dan teknik optimasi

Pengindeksan yang tepat pada kolom-kolom yang terlibat dalam operasi himpunan dapat meningkatkan performa kueri secara signifikan. Indeks membantu mesin basis data dengan cepat menemukan dan mengambil baris yang relevan, mengurangi kebutuhan pemindaian tabel penuh dan mempercepat eksekusi kueri.

Untuk meningkatkan performa kueri yang melibatkan operator himpunan, administrator dan pengembang basis data dapat menerapkan teknik seperti penulisan ulang kueri, analisis rencana eksekusi, dan optimasi skema. Teknik seperti caching kueri dan materialized view juga dapat digunakan untuk menghitung terlebih dahulu dan menyimpan hasil kueri kompleks, sehingga mengurangi beban komputasi dari operasi himpunan.

Mesin basis data dan sumber daya perangkat keras

Performa operasi himpunan dapat bervariasi tergantung pada mesin basis data yang mendasari dan kemampuan optimasinya. Berbagai DBMS mungkin menerapkan strategi dan algoritma optimasi yang berbeda untuk memproses operasi himpunan, yang mengarah pada variasi performa.

Ketersediaan sumber daya perangkat keras seperti CPU, memori, dan I/O disk juga memengaruhi performa kueri yang melibatkan operator himpunan. Sumber daya perangkat keras yang memadai dapat membantu mengurangi bottleneck performa dan memastikan eksekusi kueri yang efisien.

Operator Himpunan SQL dalam Praktik

Operator himpunan bukan hanya alat teoretis; operator ini memiliki penerapan nyata yang dapat berdampak signifikan pada keputusan bisnis. Mari telusuri contoh sederhana bagaimana sebuah perusahaan dapat menggunakan operator himpunan untuk melakukan segmentasi basis pelanggan untuk kampanye pemasaran bertarget.

Skenarionya

Bayangkan sebuah perusahaan yang berjualan baik secara online maupun di toko fisik. Mereka memiliki dua dataset terpisah:

  1. Pembelian online: ID pelanggan, riwayat pembelian, demografi, dan lokasi untuk pembeli online.
  2. Transaksi di toko: Informasi serupa untuk pelanggan yang berbelanja langsung.

Menggunakan operator himpunan

Untuk mendapatkan gambaran lengkap semua pelanggan, perusahaan terlebih dahulu akan menggunakan UNION untuk menggabungkan kedua dataset menjadi satu tabel, menghapus duplikasi. Ini memberi mereka tampilan terpadu atas seluruh basis pelanggan.

Berikutnya, mereka dapat menggunakan INTERSECT untuk mengidentifikasi pelanggan yang berbelanja baik online maupun di toko. Segmen ini sangat berharga karena mereka sangat terlibat dengan merek di berbagai kanal.

Untuk menemukan peluang promosi lintas kanal, perusahaan dapat menggunakan EXCEPT. Misalnya, SELECT * FROM online_purchases EXCEPT SELECT * FROM in_store_transactions akan menemukan pelanggan yang hanya berbelanja online tetapi tidak di toko. Perusahaan kemudian dapat menargetkan pelanggan ini dengan promosi yang mendorong mereka mengunjungi lokasi fisik.

Melampaui segmentasi

Dengan segmen-segmen ini teridentifikasi, perusahaan dapat melangkah lebih jauh, menyaringnya berdasarkan faktor tambahan seperti demografi atau riwayat pembelian. Pemahaman mendalam ini memungkinkan mereka menyesuaikan kampanye pemasaran dengan lebih presisi.

Operator Himpunan vs. JOIN

Baik operator himpunan maupun SQL JOIN menggabungkan data dari beberapa kueri, tetapi bekerja dengan cara berbeda. Pertanyaan utamanya adalah apakah Anda ingin menggabungkan baris atau kolom.

Feature Set Operators JOINs
Menggabungkan Baris (menumpuk kueri secara vertikal) Kolom (melebarkan baris secara horizontal)
Mensyaratkan Jumlah kolom sama dan tipe data kompatibel Kolom kunci bersama antar tabel
Gunakan saat Menggabungkan dataset serupa, mencari irisan atau perbedaan antar himpunan hasil Memperkaya sebuah baris dengan data terkait dari tabel lain
Penanganan duplikasi UNION menghapus duplikasi; UNION ALL mempertahankannya Tergantung jenis join dan datanya
Jenis UNION, UNION ALL, INTERSECT, EXCEPT/MINUS INNER, LEFT, RIGHT, FULL OUTER, CROSS

Keterbatasan dan Pertimbangan Operator Himpunan

Saat menggunakan operator himpunan di SQL, penting untuk mempertimbangkan beberapa keterbatasan dan faktor yang dapat memengaruhi performa kueri, akurasi hasil, dan kegunaan secara keseluruhan.

Kompatibilitas tipe data dan nilai NULL

Kolom yang bersesuaian dalam himpunan hasil harus memiliki tipe data yang kompatibel. Pastikan kolom yang bersesuaian memiliki tipe data yang kompatibel sebelum menggabungkan kueri. Ketidakcocokan tipe menyebabkan error yang mudah terlewat.

Operator himpunan dapat memperlakukan nilai NULL secara berbeda tergantung pada DBMS dan operator spesifiknya. Untuk menghindari kesalahan, pengembang harus memahami bagaimana nilai NULL diperlakukan.

Dampak performa dan baris duplikat

Operasi himpunan dapat berdampak besar pada performa kueri, terutama saat menangani dataset besar atau kompleks. Faktor seperti pengindeksan, optimasi kueri, dan sumber daya perangkat keras dapat memengaruhi performa. Teknik optimasi dan strategi penalaan performa penting untuk mengurangi bottleneck performa.

Secara bawaan, operator himpunan menghapus baris duplikat dari himpunan hasil. Namun, dalam beberapa kasus, mempertahankan baris duplikat mungkin diperlukan. Penting untuk memahami perilaku operator himpunan terkait baris duplikat dan menggunakan teknik yang sesuai untuk menanganinya bila diperlukan.

Pengurutan hasil dan keterbatasan memori

Operator himpunan tidak menjamin urutan hasil pada keluaran akhir. Untuk mengurutkan hasil gabungan, tambahkan klausa ORDER BY di paling akhir dari seluruh kueri, setelah pernyataan SELECT terakhir.

Operasi himpunan dapat mengonsumsi memori dan sumber daya yang signifikan, terutama saat menangani dataset besar. Keterbatasan memori dan sumber daya harus dipertimbangkan untuk menghindari penurunan performa atau ketidakstabilan sistem.

Kompleksitas, keterawatan, dan kompatibilitas lintas DBMS

Kueri kompleks yang melibatkan banyak operator himpunan, subkueri, dan join dapat menantang untuk dipahami, dirawat, dan di-debug. Untuk meningkatkan keterbacaan dan keterawatan, kueri harus ringkas, terdokumentasi dengan baik, dan modular.

Operator himpunan dapat memiliki variasi dalam sintaks dan perilaku di berbagai sistem manajemen basis data (DBMS). Mengetahui perbedaan ini penting saat menulis kueri SQL yang kompatibel lintas platform.

Penutup

Operator himpunan menyelesaikan masalah spesifik: menggabungkan atau membandingkan himpunan hasil tanpa mengetahui sebelumnya baris mana yang tumpang tindih.

Operator ini mencakup UNION, INTERSECT, dan EXCEPT: tiga operator untuk menggabungkan, membandingkan, dan mengurangkan himpunan hasil.

Jika Anda ingin belajar lebih jauh, lihat kursus Joining Data in SQL ini.

FAQ Operator SQL

Apa perbedaan antara UNION ALL dan UNION?

UNION ALL menyertakan semua baris dari kedua kueri, meskipun ada duplikasi. UNION menghapus baris duplikat.

Apa bedanya UNION dengan JOIN di SQL?

UNION menggabungkan hasil kueri secara vertikal, menambahkan baris dari satu kueri ke kueri lain. JOIN menggabungkan tabel secara horizontal, mencocokkan baris berdasarkan kolom terkait dan membuat himpunan hasil yang lebih lebar.

Apakah ada pertimbangan performa saat menggunakan operasi himpunan?

Operasi himpunan bisa membutuhkan komputasi yang mahal, terutama saat menangani dataset besar. Penting untuk mengoptimalkan kueri individual dan menggunakan indeks bila memungkinkan untuk meningkatkan performa.

Apa perbedaan antara EXCEPT dan NOT IN?

EXCEPT dan NOT IN dapat menghasilkan hasil yang serupa, tetapi perilakunya berbeda terhadap nilai NULL. EXCEPT memperlakukan nilai NULL sebagai setara saat membandingkan baris, jadi dua nilai NULL pada posisi kolom yang sama akan menyebabkan baris dikeluarkan. NOT IN, sebaliknya, tidak mengembalikan baris sama sekali jika subkueri berisi nilai NULL, karena perbandingan NULL tidak terdefinisi di SQL. Untuk dataset besar, EXCEPT juga bisa lebih mudah dibaca daripada subkueri berkorelasi NOT IN.

Bisakah saya menggunakan ORDER BY dengan operator himpunan?

Bisa, tetapi hanya sekali, di paling akhir seluruh kueri. Anda tidak dapat menggunakan ORDER BY di dalam pernyataan SELECT individual dalam operasi himpunan. Untuk mengurutkan hasil gabungan, tambahkan satu klausa ORDER BY setelah pernyataan SELECT terakhir.

Contoh:

SELECT name FROM employees
UNION
SELECT name FROM contractors
ORDER BY name ASC;

Apakah MySQL mendukung INTERSECT dan EXCEPT?

MySQL menambahkan dukungan untuk INTERSECT dan EXCEPT pada versi 8.0.31. Jika Anda menggunakan versi yang lebih lama, Anda perlu mengemulasinya: gunakan INNER JOIN atau subkueri dengan IN untuk mereplikasi INTERSECT, dan LEFT JOIN ... WHERE IS NULL atau subkueri NOT IN untuk mereplikasi EXCEPT. Oracle menggunakan MINUS alih-alih EXCEPT.


Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Topik

Pelajari lebih lanjut tentang SQL!

Program

Associate Data Engineer dalam SQL

30 Hr
Pelajari dasar-dasar rekayasa data: desain basis data dan penyimpanan data, serta bekerja dengan teknologi termasuk PostgreSQL dan Snowflake!
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