Aljabar Relasional dan Query #5: Operasi Union

Operator UNION dan UNION ALL dalam query menghasilkan gabungan baris dari dua tabel atau lebih. Apa perbedaannya?

M. Ramadhan
Telematika
5 min readNov 26, 2021

--

Daftar Isi

Pendahuluan
Operasi UNION
Aljabar Relasional
Query
Contoh
Operator UNION ALL
Penutup
Daftar Pustaka

Photo by krakenimages on Unsplash

Pendahuluan

Aljabar relasional adalah bahasa teoritis yang mengoperasikan satu atau beberapa relasi dan menghasilkan relasi lain tanpa mengubah relasi asli. Keluaran sebuah operasi dapat menjadi masukan operasi lainnya. Menurut Codd (1972), ada 8 operasi yaitu 5 operasi dasar: seleksi, proyeksi, produk Cartesian, union, set difference (selisih) dan 3 operasi tambahan (turunan dari operasi dasar): join, intersection (irisan), divisi.

Query adalah kata dalam bahasa Inggris, merupakan kata benda, bentuk jamaknya queries, secara semantik berarti pertanyaan atau permintaan informasi tentang sesuatu. Sebagai istilah dalam basis data, query berarti permintaan data atau informasi yang diambil dari basis data. Pada basis data relasional — Structured Query Language (SQL) sebagai bahasa bakunya — query menggunakan pernyataan SELECT.

A query is a question or a request for information about something (https://www.merriam-webster.com/dictionary/query)

A query is a request for data or information from a database table or combination of tables. This data may be generated as results returned by Structured Query Language (SQL).
https://www.techopedia.com/definition/5736/query)

Operasi UNION

Aljabar Relasional

Operasi UNION — menggunakan simbol ⋃ sebagai operatornya — menggabungkan tuple dua buah relasi atau lebih. Sebagai contoh, ekspresi aljabar relasional R⋃S menggabungkan i tuple relasi R dengan j tuple relasi S, tanpa duplikasi tuple, sehingga diperoleh maksimum (i+j) tuple.

Pada operasi union berlaku:
• hukum komutatif: R⋃S = S⋃R
• hukum asosiatif: (R⋃S)⋃T = R⋃(S⋃T)

Query

Sintaks query untuk operasi union adalah sebagai berikut.

Bila diperlukan, pernyataan SELECT boleh dikombinasikan dengan operasi lain: proyeksi, seleksi, produk Cartesian, inner join, outer join, dsb. Daftar ekspresi dapat berupa kolom tabel, konstanta, perhitungan, fungsi skalar, fungsi agregasi. Yang penting, kolom dalam setiap pernyataan SELECT harus union compatible yaitu:
• jumlah kolom sama
• urutan kolom sama dengan tipe data sama atau kompatibel.

Contoh

Berikut adalah contoh data yang ada dalam tabel Dosen dan Karyawan.

Operasi union tabel karyawan dengan tabel dosen

Ekspresi aljabar relasional: DosenKaryawan.
Berikut adalah query dan hasilnya.

Operasi union menghasilkan baris data unik terurut berdasarkan primary key; untuk baris data yang sama hanya diambil satu. Tabel Dosen dan tabel Karyawan memiliki dua baris data yang sama sehingga hasilnya 7 baris, bukan 9 baris.

Hukum komutatif berlaku sehingga ekspresi aljabar relasional dapat pula ditulis: KaryawanDosen.

Keduanya memberikan hasil yang sama. Yang membedakan hanya nama kolom; yang digunakan adalah nama kolom dalam pernyataan SELECT pertama.

Bagaimana kalau primary key tidak termasuk dalam pernyataan SELECT? Berikut contohnya.

Ternyata hasilnya terurut menaik berdasarkan gabungan semua kolom yang ada dalam pernyataan SELECT pertama. Pertama, data diurutkan berdasarkan kolom ke-1. Untuk nilai kolom ke-1 yang sama, data diurutkan lagi berdasarkan kolom ke-2, dan seterusnya.

Operator UNION ALL

Operator UNION ALL tidak menghilangkan duplikat baris. Operator ini mengambil semua baris dari semua tabel dan menggabungkannya ke dalam tabel. Berikut contohnya.

Operator UNION ALL tidak mengurutkan data sehingga memberikan hasil lebih cepat. Gunakan klausa ORDER BY di bagian akhir untuk mengurutkannya. Jangan menggunakan nama kolom yang ada di pernyataan SELECT ke-2 sebagai kunci pengurutan.

Gunakan hanya nama kolom yang ada di pernyataan SELECT pertama.

Boleh juga menggunakan nama alias sebagai kunci pengurutan.

Penutup

Operator UNION menghasilkan gabungan baris unik terurut dari dua tabel atau lebih. Data diurutkan berdasarkan primary key (bila ada) atau berdasarkan gabungan kolom yang ada di pernyataan SELECT pertama. Operator UNION ALL menghasilkan gabungan semua baris dari dua tabel atau lebih tanpa pengurutan.

Daftar Pustaka

Codd, E.F. (March 1972). “Relational Completeness of Data Base Sublanguages” in Computer Sciences. San Jose, California: IBM Research Laboratory.

Connolly, Thomas M., & Begg, Carolyn E. (2015). Database Systems: A Prac­tical Approach to Design, Implementation, and Management (6th Edition). Essex, England: Pearson Education.

Coronel, C., Morris, S., Crockett, K., & Blewett, C. (2020). Database Principles: Fundamentals of Design, Implementation, and Management. 3rd Edition. Hampshire, United Kingdom: Cengage Learning.

--

--

M. Ramadhan
Telematika

I’m a database designer and developer, childhood in Menggala, living in Palembang.