Menggunakan
Set Operators
Set
Operator
Set
Operator menggabungkan hasil dari dua atau lebih komponen Query ke dalam sebuah
penyelesaian.Query
yang berisi beberapa Set Operator disebut sebagai Compound Query.
Operator
Hasil
UNION
:Semua
baris distinct dipilih oleh query yang sama
UNION
:ALL Semua baris dipilih oleh query yang sama, termasuk semua
duplikat
INTERSECT
:Semua
baris distinct dipilih oleh kedua query
MINUS
:Semua
baris distinct yang telah dipilih oleh pernyataan SELECT dan tidakdipilih
dipernyataan kedua
Semua
Set Operator mempunyai pendahuluan yang sama. Jika sebuah pernyataan SQL berisi
beragam
Set Operator, Oracle server akan mengevaluasinya dari kiri (atas) ke kanan
(bawah) jika
tidak
ada sisipan secara jelas yang mengarah pada perintah lain. Anda harus
menggunakan sisipan
untuk
menggolongkan perintah dari hasil evaluasi secara jelas dalam query yang
menggunakan
operator
INTERSECT dengan Set operator yang lain.
TabelTabelyang
Digunakan dalam Pelajaran Ini
Tabeltabelyang
digunakan dalam pelajaran ini adalah :
· EMPLOYEES : Menyediakan rincian
berdasarkan pegawaipegawaisaat ini
· JOB_HISTORY :Rincian
catatan dari tanggal mulai dantanggal berakhir dari suatu job yang terdahulu,
dan nomoridentifikasi job serta departemen saat seorang pegawaiberpindah job.
UNION
Operator
UNION
Operator mengembalikan semua baris yang dipilih oleh query yang sama. Gunakan
UNION
Operator
untuk mengembalikan semua baris dari beberapa tabel kemudian menghapus semua
baris
duplikat.
PedomanPedoman
· Jumlah kolom dan tipe data dari kolom yang telah dipilih harus
identik dengan semua
pernyataan
SELECT yang digunakan dalam Query. Nama kolom tidak harus identik.
· UNION mengubah keseluruhan kolom yang telah dipilih
· Nilai NULL tidak diperbolehkan sebelum dicek.
· Operator IN mempunyai prioritas lebih dulu daripada operator
UNION
· Secara default, output akan diurutkan secara ascending dari
kolom pertama kalimat SELECT.
Menggunakan Operator UNION
Operator
UNION menghapus semua record duplikat. Jika record tidak ada dalam kedua tabel
EMPLOYEES
dan JOB_HISTORY secara identik, maka record tersebut ditampilkan hanya sekali.
Amati
dari tampilan output pada slide, record untuk karyawan dengan EMPLOYEE_ID200
ditampilkan
dua kali karena JOB_ID berbedabedapada tiap row.
Perhatikan
contoh dibawah ini :
SELECT
employee_id, job_id, department_id
FROM
employees
UNION
SELECT
employee_id, job_id, department_id
FROM
job_history;
Operator UNION ALL
Gunakan
operator UNION ALL untuk mengembalikan semua baris dari beberapa queri
PedomanPedoman
Petunjuk
untuk UNION dan UNION ALL semua sama, tapi dengan 2 perkecualian untuk UNION
ALL
yaitu :
· Tidak seperti UNION, baris duplikat tidak akan terhapus dan
output tidak diurutkan secaradefault.
· Keyword DISTINCT tidak bisa digunakan.
Seperti
yang pada contoh diatas, ada 30 baris yang terpilih. Gabungan antara dua tabel
berjumlah 30
baris.
Operator UNION ALL tidak menghapus baris duplikat. UNION mengembalikan semua baris
distinct yang telah
diseleksi oleh query tersebut. Fungsi UNION ALL mengembalikan semua baris
yang
telah diseleksi oleh query, termasuk semua duplikatnya. Perhatikan quey yang
terdapat pada
slide,
sekarang tuliskan dengan menggunakan kalimat UNION :
SELECT
employee_id, job_id, department_id
FROM
employees
UNION
SELECT
employee_id, job_id, department_id
FROM
job_history
ORDER
BY employee_id;
Operator INTERSECT
Gunakan
operator INTERSECT untuk mengembalikan semua baris yang ada (terlibat) dalam
beberapa
query.
Petunjuk
· Nomor kolom dan tipe data kolom telah dipilih oleh pernyataan
SELECT dalam query harus
selalu
identik di dalam semua pernyataan SELECT yang digunakan dalam query. Nama dari
kolom
tidak harus selalu identik.
· Membalikkan tabel yang telah diintersect tidak akan mengubah
hasil.
· INTERSECT tidak akan memperbolehkan adanya nilai NULL.
Menggunakan
Operator INTERSECT
Menampilkan
employee ID dan job ID dari tabel employeedimana karyawan tersebut mempunyai
pekerjaan yangsama dengan pekerjaan mereka terdahulu (karyawantersebut telah
berganti pekerjaan tapi sekarang kembalilagi bekerja pada pekerjaan asal)
Seperti
contoh pada slide, query hanya mengembalikan record yang mempunyai kesamaan
nilai di
dalam
kolom yang telah dipilih di kedua tabel tersebut.
Apa
yang akan dihasilkan jika anda menambahkan kolom DEPARTMENT_ID ke dalam
pernyataan
SELECT
dari table JOB_HISTORY dan menjalankan query ini ? Hasilnya bisa saja berbeda
karena
pendahuluan
dari kolom lainnya dimana nilai bisa diduplikasikan atau tidak diduplikasikan.
Contoh
SELECT
employee_id, job_id, department_id
FROM
employees
INTERSECT
SELECT
employee_id, job_id, department_id
FROM
job_history;
Operator MINUS
Gunakan
Operator MINUS untuk mengembalikan baris, yang dikembalikan oleh query pertama,
yang
tidak tampak pada saat query kedua (pernyataan SELECT pertama MINUS pernyataan
SELECT
kedua).
Petunjuk
· Jumlah kolom dan tipe data dari kolom telah dipilih oleh
pernyataan SELECT di dalam query
seharusnya
identik di dalam semua pernyataan SELECT yang digunakan dalam query. Nama
kolom
tidak harus identik.
· Semua kolom dalam kalimat WHERE seharusnya berada dalam kalimat
SELECT supaya
operator
MINUS berkerja.
Petunjuk Tentang Set Operator
· Penulisan di dalam rnomori SELECT dari query harus sesuai dengan
nomor dan tipe data. Query
yang
menggunakan operatoroperatorseperti UNION, UNION ALL, INTERSECT dan MINUS
didalam
kalimat WHEREnya harus mempunyai persamaan nomor dan tipe data kolom
dalamrangkaian SELECT.
Seperti
pada contoh :
SELECT
employee_id, department_id
FROM
employees
WHERE
(employee_id, department_id)
IN
(SELECT employee_id, department_id)
FROM
employees
UNION
SELECT
employee_id, department_id
FROM
employees);
· Kalimat ORDER_BY :
Bisamuncul
pada akhir sebuah pernyataanAkanmenerima nama kolom, sebuah alias atau sesuai
dengan letak penulisan
· Nama kolom atau alias, jika digunakan sebuah kalimat ORDER_BY,
seharusnya berasal dari
daftar
SELECT yang pertama.
· Set operator bisa digunakan pada subqueri.
Server Oracle dan Set operator
Ketika
sebuah query menggunakan set operator, Server Oracle akan menghapus baris duplikat
secaraotomatis kecuali di dalam kondisi dengan operator UNION ALL.Nama kolom
outputnya ditentukan oleh daftar kolom pada pernyataan SELECT yang
pertama.Secara default output akan diurutkan secara ascending dari kolom
pertama kalimat SELECT.Keterkaitan penulisan di dalam daftar SELECT yang
merupakan komponen query dari campuranquery harus sesuai dengan nomor dan tipe
data. Jika komponen query memilih data karakter, tipedata
dari nilai balik dengan ketentuan sebagai berikut :
· Jika kedua query memilih nilai dari tipe data CHAR, nilai balik
harus berupa tipe data CHAR.
· Jika salah satu atau kedua query tersebut memilih nilai tipe
data VARCHAR2, maka nilai
balik
berupa tipe data VARCHAR2.
Tidak ada komentar:
Posting Komentar