SQL - UNION vs UNION ALL (ID)
Halo teman-teman pecinta SQL yang bersemangat! Hari ini, kita akan mengemban perjalanan menarik ke dunia SQL, khususnya fokus pada dua operator yang kuat: UNION dan UNION ALL. Sebagai guru komputer yang ramah di lingkungan sekitar Anda dengan tahun-tahun pengalaman di bawah sabukku, saya di sini untuk mengarahkan Anda melalui konsep ini dengan klaritas, humor, dan banyak contoh dunia nyata. mari kita masuk ke dalam!
Apa Itu UNION?
Definisi dan Konsep Dasar
UNION mirip seperti chef utama yang menggabungkan bahan-bahan dari resep-resep yang berbeda untuk membuat makanan unik. Dalam istilah SQL, UNION adalah operator yang memungkinkan kita untuk menggabungkan hasil set dari dua atau lebih pernyataan SELECT menjadi satu hasil set.
Ini adalah sintaks dasar:
SELECT column1, column2, ... FROM table1
UNION
SELECT column1, column2, ... FROM table2;
Fitur Utama UNION
- Hasil Unik: UNION secara otomatis menghapus baris duplikat dari hasil akhir.
- Kompabilitas Kolom: Pernyataan SELECT harus memiliki jumlah kolom yang sama, dan kolom ini harus memiliki tipe data yang kompatibel.
- Urutan Kolom: Urutan kolom dalam pernyataan SELECT penting, karena mereka digabungkan berdasarkan posisi mereka.
UNION dalam Aksi
Bayangkan kita memiliki dua tabel: fruits
dan vegetables
. Kita ingin membuat daftar gabungan semua item buah-buahan dan sayuran.
-- tabel fruits
CREATE TABLE fruits (
id INT,
name VARCHAR(50),
color VARCHAR(20)
);
INSERT INTO fruits VALUES
(1, 'Apple', 'Red'),
(2, 'Banana', 'Yellow'),
(3, 'Orange', 'Orange');
-- tabel vegetables
CREATE TABLE vegetables (
id INT,
name VARCHAR(50),
color VARCHAR(20)
);
INSERT INTO vegetables VALUES
(1, 'Carrot', 'Orange'),
(2, 'Broccoli', 'Green'),
(3, 'Tomato', 'Red');
-- query UNION
SELECT name, color FROM fruits
UNION
SELECT name, color FROM vegetables;
Query ini akan memberikan kita:
name | color |
---|---|
Apple | Red |
Banana | Yellow |
Orange | Orange |
Carrot | Orange |
Broccoli | Green |
Tomato | Red |
Perhatikan bagaimana kita hanya memiliki satu entri 'Orange', meskipun itu muncul dalam kedua tabel. Itu adalah keajaiban UNION - itu menghapus duplikat!
Apa Itu UNION ALL?
Definisi dan Konsep Dasar
Sekarang, mari kita temui sepupu bersemangat UNION, UNION ALL. Sedangkan UNION mirip seperti chef yang hati-hati menghapus bahan duplikat, UNION ALL adalah seperti chef yang percaya "semakin banyak, semakin meriah!"
Sintaksnya mirip dengan UNION:
SELECT column1, column2, ... FROM table1
UNION ALL
SELECT column1, column2, ... FROM table2;
Fitur Utama UNION ALL
- Menyimpan Duplikat: UNION ALL menyimpan semua baris, termasuk duplikat.
- Kinerja Lebih cepat: Karena tidak perlu menghapus duplikat, UNION ALL biasanya lebih cepat daripada UNION.
- Kompabilitas Kolom: Seperti UNION, itu memerlukan jumlah kolom yang sama dengan tipe data yang kompatibel.
UNION ALL dalam Aksi
Kita akan menggunakan tabel fruits
dan vegetables
lagi:
SELECT name, color FROM fruits
UNION ALL
SELECT name, color FROM vegetables;
Query ini akan menghasilkan:
name | color |
---|---|
Apple | Red |
Banana | Yellow |
Orange | Orange |
Carrot | Orange |
Broccoli | Green |
Tomato | Red |
Perhatikan bahwa sekarang kita memiliki dua entri 'Orange' - satu dari buah dan satu dari sayuran. UNION ALL menyimpan semua baris, termasuk duplikat!
UNION vs UNION ALL: Perbandingan Langsung
Untuk benar-benar memahami perbedaan, mari kita bandingkan mereka bersamaan:
Fitur | UNION | UNION ALL |
---|---|---|
Penanganan Duplikat | Menghapus duplikat | Menyimpan semua duplikat |
Kinerja | Lebih lambat (karena deduplikasi) | Lebih cepat |
Ukuran Hasil Set | Mungkin lebih kecil | Mungkin lebih besar |
Kasus Penggunaan | Ketika hasil unik diperlukan | Ketika semua hasil, termasuk duplikat, diperlukan |
Kapan Menggunakan UNION
Gunakan UNION ketika Anda perlu menggabungkan hasil dari beberapa query dan ingin memastikan bahwa setiap baris dalam hasil set unik. Itu sempurna untuk kasus seperti:
- Menggabungkan daftar pelanggan dari wilayah yang berbeda, memastikan tidak ada duplikat.
- Menggabungkan katalog produk dari beberapa pemasok, menghapus item duplikat.
Kapan Menggunakan UNION ALL
Pilih UNION ALL ketika:
- Anda tahu tidak ada duplikat di seluruh data Anda.
- Anda secara khusus memerlukan semua baris, termasuk duplikat.
- Kinerja adalah prioritas, dan Anda berurusan dengan data yang besar.
Contoh Praktis
Mari kita masuk ke beberapa kasus dunia nyata untuk memperkuat pemahaman kita.
Contoh 1: Buku Telepon Karyawan
Bayangkan kita memiliki dua tabel: current_employees
dan former_employees
. Kita ingin membuat buku telepon yang komprehensif.
-- Buat dan populasi tabel
CREATE TABLE current_employees (id INT, name VARCHAR(50), department VARCHAR(50));
CREATE TABLE former_employees (id INT, name VARCHAR(50), department VARCHAR(50));
INSERT INTO current_employees VALUES
(1, 'Alice', 'HR'),
(2, 'Bob', 'IT'),
(3, 'Charlie', 'Finance');
INSERT INTO former_employees VALUES
(4, 'David', 'Marketing'),
(5, 'Eve', 'IT'),
(2, 'Bob', 'IT'); -- Bob pernah bekerja di sini, keluar, dan kembali
-- query UNION
SELECT name, department FROM current_employees
UNION
SELECT name, department FROM former_employees;
-- query UNION ALL
SELECT name, department FROM current_employees
UNION ALL
SELECT name, department FROM former_employees;
Query UNION akan menampilkan Bob hanya sekali, sedangkan UNION ALL akan menampilkan Bob dua kali.
Contoh 2: Laporan Penjualan
Buat laporan penjualan yang menggabungkan penjualan online dan penjualan di toko.
-- Buat dan populasi tabel
CREATE TABLE online_sales (product VARCHAR(50), amount DECIMAL(10,2));
CREATE TABLE store_sales (product VARCHAR(50), amount DECIMAL(10,2));
INSERT INTO online_sales VALUES
('Laptop', 1200.00),
('Phone', 800.00),
('Tablet', 500.00);
INSERT INTO store_sales VALUES
('Laptop', 1100.00),
('Phone', 750.00),
('Headphones', 200.00);
-- Total produk unik yang dijual (UNION)
SELECT product FROM online_sales
UNION
SELECT product FROM store_sales;
-- Semua entri penjualan (UNION ALL)
SELECT 'Online' AS source, product, amount FROM online_sales
UNION ALL
SELECT 'Store' AS source, product, amount FROM store_sales;
Query UNION memberikan kita daftar produk unik yang dijual melalui kedua kanal, sedangkan UNION ALL memberikan kita daftar lengkap semua transaksi penjualan.
Kesimpulan
Dan begitu, teman-teman sekolahku! Kita telah mengemban perjalanan melalui negeri UNION dan UNION ALL, menjelajahi kesamaannya, perbedaannya, dan aplikasi dunia nyata. Ingat, UNION adalah teman Anda untuk hasil unik, sedangkan UNION ALL adalah teman cepat Anda saat Anda memerlukan semua data, termasuk duplikat.
Buat terus, tetap curiga, dan jangan takut untuk menguji konsep ini. Sebelum Anda tahu, Anda akan UNION dan UNION ALL seperti seorang pro! Selamat berkueri!
Credits: Image by storyset