Minggu, 20 Oktober 2013

Resume SQL1-Per7



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