SQLite - UNIONS Clause (ID)
Halo, para ahli basis data masa depan! Hari ini, kita akan memulai perjalanan yang menarik ke dunia SQLite dan mengenal klausa UNIONS yang magis. Sebagai guru komputer tetangga yang ramah, saya akan mengajak Anda dalam petualangan ini langkah demi langkah. Jadi, ambil keyboard Anda (tongkat sihir), dan mari kita mulai!
Apa Itu UNION?
Bayangkan Anda memiliki dua daftar yang terpisah tentang favorit es krim Anda - satu dari musim panas tahun lalu dan satu dari musim panas ini. Sekarang, apa bila Anda ingin menggabungkan daftar ini menjadi satu daftar super semua favorit es krim Anda? Itu sebenarnya apa yang UNION lakukan di SQLite, tapi dengan tabel basis data bukan es krim favorit!
Klausa UNION di SQLite memungkinkan Anda menggabungkan himpunan hasil dari dua atau lebih pernyataan SELECT. Itu seperti membuat sebuah pesta besar di mana kelompok data yang berbeda bisa berbincang dan membentuk kelompok yang lebih besar.
Sintaks Dasar
Sintaks dasar UNION terlihat seperti ini:
SELECT column1, column2, ... FROM table1
UNION
SELECT column1, column2, ... FROM table2;
mari kitauraikan ini:
- Kita memiliki dua pernyataan SELECT.
- Setiap pernyataan SELECT dapat mengquery tabel yang berbeda.
- Kata kunci UNION berada antara pernyataan ini, bertindak sebagai jembatan.
Aturan Penting
Sebelum kita masuk ke contoh, mari kitaulas beberapa aturan penting untuk menggunakan UNION:
- Jumlah dan urutan kolom dalam semua pernyataan SELECT harus sama.
- Tipe data kolom yang sejajar harus kompatibel.
- Secara default, UNION menghapus baris duplikat (kami akan lihat bagaimana mengubah ini nanti).
UNION dalam Aksi
mari kita buat beberapa tabel contoh dan lihat UNION dalam aksi!
-- Buat dan populasi tabel 'employees'
CREATE TABLE employees (
id INTEGER PRIMARY KEY,
name TEXT,
department TEXT
);
INSERT INTO employees (name, department) VALUES
('Alice', 'HR'),
('Bob', 'IT'),
('Charlie', 'Finance');
-- Buat dan populasi tabel 'contractors'
CREATE TABLE contractors (
id INTEGER PRIMARY KEY,
name TEXT,
department TEXT
);
INSERT INTO contractors (name, department) VALUES
('David', 'Marketing'),
('Eve', 'IT'),
('Frank', 'HR');
Sekarang, mari kita gunakan UNION untuk menggabungkan tabel ini:
SELECT name, department FROM employees
UNION
SELECT name, department FROM contractors;
Query ini akan mengembalikan:
Alice HR
Bob IT
Charlie Finance
David Marketing
Eve IT
Frank HR
Apa yang terjadi disini? Klausa UNION menggabungkan hasil dari kedua tabel, memberikan kita daftar lengkap semua pekerja (karyawan dan kontraktor) tanpa duplikat.
Magic Deduplikasi
Apakah Anda melihat sesuatu yang menarik? Meskipun kita memiliki dua orang di departemen HR (Alice dan Frank), keduanya muncul dalam hasil kita. Ini karena UNION secara otomatis menghapus baris duplikat berdasarkan semua nilai kolom.
Jika kita memiliki seseorang dengan nama dan departemen yang sama dalam kedua tabel, UNION hanya akan menunjukkan mereka sekali. Misalnya:
INSERT INTO contractors (name, department) VALUES ('Alice', 'HR');
SELECT name, department FROM employees
UNION
SELECT name, department FROM contractors;
Ini masih akan memberikan kita hasil yang sama seperti sebelumnya, tanpa 'Alice' tambahan di HR.
Klausa UNION ALL
kadang-kadang, Anda mungkin ingin menjaga semua baris, bahkan jika mereka duplikat. Itu di mana UNION ALL berguna. Itu seperti mengatakan ke basis data, "Saya ingin semua orang di pesta ini, bahkan jika mereka memiliki kembar!"
mari kita modifikasi query sebelumnya:
SELECT name, department FROM employees
UNION ALL
SELECT name, department FROM contractors;
Sekarang kita mendapatkan:
Alice HR
Bob IT
Charlie Finance
David Marketing
Eve IT
Frank HR
Alice HR
Lihat bagaimana kita sekarang memiliki dua entri untuk Alice di HR? UNION ALL menjaga semua baris, tanpa memperhatikan duplikasi.
Aplikasi Praktis
UNION dan UNION ALL tidak hanya untuk kesenangan - mereka memiliki aplikasi di dunia nyata! Berikut adalah beberapa konteks di mana Anda mungkin menggunakannya:
- Menggabungkan data dari beberapa tabel dengan struktur yang mirip (seperti contoh karyawan dan kontraktor kita).
- Membuat laporan yang meliputi periode waktu atau kategori yang berbeda.
- Menggabungkan data dari basis data atau sumber data yang berbeda.
mari kita lihat contoh yang lebih kompleks. Bayangkan kita menjalankan sebuah toko buku dan ingin melihat semua transaksi, baik itu pembelian atau pengembalian:
-- Buat dan populasi tabel 'purchases'
CREATE TABLE purchases (
id INTEGER PRIMARY KEY,
book_title TEXT,
amount DECIMAL(10, 2),
transaction_date DATE
);
INSERT INTO purchases (book_title, amount, transaction_date) VALUES
('The Great Gatsby', 15.99, '2023-06-01'),
('To Kill a Mockingbird', 12.50, '2023-06-02'),
('1984', 10.99, '2023-06-03');
-- Buat dan populasi tabel 'returns'
CREATE TABLE returns (
id INTEGER PRIMARY KEY,
book_title TEXT,
amount DECIMAL(10, 2),
transaction_date DATE
);
INSERT INTO returns (book_title, amount, transaction_date) VALUES
('The Great Gatsby', -15.99, '2023-06-05'),
('Pride and Prejudice', -14.99, '2023-06-06');
-- Gabungkan pembelian dan pengembalian
SELECT book_title, amount, transaction_date, 'Purchase' as transaction_type
FROM purchases
UNION ALL
SELECT book_title, amount, transaction_date, 'Return' as transaction_type
FROM returns
ORDER BY transaction_date;
Query ini akan memberikan kita:
The Great Gatsby 15.99 2023-06-01 Purchase
To Kill a Mockingbird 12.50 2023-06-02 Purchase
1984 10.99 2023-06-03 Purchase
The Great Gatsby -15.99 2023-06-05 Return
Pride and Prejudice -14.99 2023-06-06 Return
Di sini, kita telah menggunakan UNION ALL untuk menggabungkan pembelian dan pengembalian, menambahkan kolom untuk membedakan jenis transaksi, dan mengurutkan hasil berdasarkan tanggal.
Tips dan Trik
-
Mengurutkan Hasil: Anda dapat menambahkan klausa ORDER BY di akhir query UNION untuk mengurutkan hasil gabungan.
-
Memfilter Hasil Gabungan: Gunakan klausa WHERE di setiap pernyataan SELECT untuk memfilter tabel individual, atau wrap query UNION Anda dalam subquery dan gunakan klausa WHERE untuk memfilter hasil gabungan.
-
Alias Kolom: Jika kolom Anda memiliki nama yang berbeda dalam tabel yang berbeda, Anda dapat menggunakan alias untuk membuat mereka cocok:
SELECT name AS person, department FROM employees
UNION
SELECT contractor_name AS person, dept AS department FROM contractors;
- Menggabungkan Lebih Dari Dua Tabel: Anda tidak terbatas hanya ke dua tabel - Anda dapat menyingkaskan banyak UNION atau UNION ALL klausa untuk menggabungkan banyak tabel.
Metode Umum
Berikut adalah tabel yang menyummarisakan metode umum terkait UNION di SQLite:
Metode | Deskripsi | Contoh |
---|---|---|
UNION | Menggabungkan hasil dari dua atau lebih pernyataan SELECT dan menghapus duplikat | SELECT * FROM table1 UNION SELECT * FROM table2 |
UNION ALL | Menggabungkan hasil dari dua atau lebih pernyataan SELECT dan menjaga semua baris, termasuk duplikat | SELECT * FROM table1 UNION ALL SELECT * FROM table2 |
ORDER BY | Digunakan dengan UNION untuk mengurutkan hasil gabungan | (SELECT * FROM table1 UNION SELECT * FROM table2) ORDER BY column_name |
WHERE | Digunakan dalam pernyataan SELECT individual untuk memfilter hasil sebelum menggabungkan | SELECT * FROM table1 WHERE condition UNION SELECT * FROM table2 WHERE condition |
Dan begitulah, teman-teman! Anda telah meningkatkan keterampilan SQLite Anda dengan menguasai klausa UNION. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba query ini pada dataset Anda sendiri. Selamat mencari, dan may your UNIONs always be successful!
Credits: Image by storyset