Query
Query merupakan suatu proses
pengolahan data yang digunakan untuk memberikan hasil dari basis data
berdasarkan kriteria tertentu. Query tidak hanya membaca atau mengambil data,
query biasanya melibatkan beberapa tabel yang direlasikan dengan menggunakan field
kunci. Namun query juga dapat digunakan pada satu tabel saja, tetapi hasilnya
kurang informatif dan terbatas.
1. Aturan dalam melakukan query
antar tabel :
a. Setiap field disebutkan
bersama dengan nama tabelnya, dipisahkan tanda titik (.).
Syntax : Namatabel.namafield.
Contoh : buku.kode_buku
artinya field kode_buku dari tabel buku.
b. Setiap tabel yang terlibat
dalam proses query harus disebutkan dalam klausa FROM, dengan pemisah koma
(,).Dimana urutan tabel tidak mempengaruhi proses query.
Contoh : FROM buku, anggota.
c. Kondisi dalam klausa WHERE
mempengaruhi jenis join yang tercipta.
2. Jenis-jenis join pada query
:
a. Operator Cross Join
Operator ini berguna untuk melakukan operasi
penggabungan dengan perkalian kartesain. Namun penggabungan jenis ini jarang
digunakan karena tidak menghasilkan nilai informasi yang efektif. Contoh :
Mysql> select *from buku cross join pengarang limit
5;
b. Operator Inner Join
Inner join digunakan untuk menampilkan data dari dua
tabel yang berisi data sesuai dengan syarat dibelakang on (tidak boleh null),
dengan kata lain semua data dari tabel kiri mendapat pasangan data dari tabel
sebelah kanan. Berikut ini perintah untuk menampilkan data dari tabel pengarang
dan buku dengan syarat berdasarkan kolom kode_pengarang
:
Mysql> select
* from
pengarang join buku on
(pengarang.Kode_pengarang=buku.Kode_pengarang);
c. Operator Equijoin
Equijoin adalah penggabungan antar tabel dengan
menggunakan operator ‘=’ pada kondisi klausa WHERE Contoh :
Mysql> SELECT
buku.Kode_buku, buku.judul_buku, pengarang.Kode_pengarang,
pengarang.Nama_pengarang FROM buku, pengarang WHERE
buku.Kode_pengarang=pengarang.Kode_pengarang;
d. Operator Self-Join
Self-join adalah jenis penggabungan antar field dari
tabel yang sama.
Untuk melakukan penggabungan self-join menggunakan
alias.
Contoh :
Mysql> SELECT a.Kode_buku, b.Judul_buku FROM buku
a, buku b
WHERE a.harga=’25000’ AND a.harga=’25000’;
e. Operator Natural Join
Operator ini digunakan untuk melakukan operasi
equijoin dengan memperlakukan nama-nama kolom yang sama sebagai kolom
penghubung.
Contoh :
Mysql> SELECT
buku.kode_buku, buku.judul_buku, pengarang.kode_pengarang,
pengarang.nama_pengarang FROM buku NATURAL JOIN pengarang;
Natural Join dibedakan menjadi 2 yaitu :
• Natural Left Join
Natural left join digunakan untuk menampilkan semua
data dari tabel sebelah kiri perintah natural left join beserta pasangannya
dari tabel sebelah kanan. Meskipun terdapat data dari sebelah kiri tidak
memiliki pasangan, tetap akan ditampilkan dengan pasangannya berupa nilai NULL.
Mysql> select *from pengarang natural left join
buku;
• Natural Right Join
Natural right join digunakan untuk menampilkan semua
data dari tabel sebelah kanan perintah natural right join beserta pasangannya
dari tabel sebelah kiri. Meskipun terdapat data dari sebelah kanan tidak
memiliki pasangan, tetap akan ditampilkan dengan pasangannya berupa nilai NULL.
Mysql> select *from
pengarang natural right join buku;
3. UNION, INTERSECT dan EXCEPT
1.
UNION
UNION merupakan operator yang digunakan untuk
menggabungkan hasil query, dengan ketentuan jumlah, nama dan tipe kolom dari
masingmasing tabel yang akan ditampilkan datanya harus sama. Berikut ini
perintah untuk memperoleh data pada tabel buku dimana tahun penerbitan 2003 dan
2004 :
Mysql> select
tahun_terbit,judul from buku where tahun_terbit=’2003’ union > select
tahun_terbit,judul from buku where tahun_terbit=’2004’;
Perintah di atas identik dengan :
Mysql> select
tahun_terbit,Judul_buku from buku
where
tahun_terbit=’2003’ or tahun_terbit =’2004’;
Namun tidak semua penggabungan dapat dilakukan dengan
OR, yaitu jika bekerja pada dua tabel atau lebih.
2.
INTERSECT
INTERSECT merupakan operator yang digunakan untuk
memperoleh data dari dua buah query dimana data yang ditampilkan adalah yang
memenuhi kedua query tersebut dengan ketentuan jumlah, nama dan tipe kolom dari
masing-masing tabel yang akan ditampilkan datanya harus sama.
Syntax :
SELECT * FROM namatabel1 INTERSECT SELECT * FROM
namatabel2
Pada MySQL tidak terdapat operator INTERSECT namun
sebagai gantinya dapat menggunakan operator IN seperti contoh 1 pada bagian
Nested Queries.
3.
EXCEPT / Set
Difference
EXCEPT merupakan operator yang digunakan untuk
memperoleh data dari dua buah query dimana data yang ditampilkan adalah data
yang ada pada hasil query 1 dan tidak terdapat pada data dari hasil query 2
dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan
ditampilkan datanya harus sama.
Syntax :
SELECT * FROM namatabel1 EXCEPT SELECT * FROM
namatabel2
Pada MySQL tidak terdapat operator EXCEPT namun
sebagai gantinya dapat menggunakan operator NOT IN seperti contoh 2 pada bagian
Nested Queries.
4. Nested Queries / Subquery (IN, NOT IN, EXISTS, NOT EXISTS)
Subquery berarti query di dalam query. Dengan menggunakan subquery, hasil dari
query akan menjadi bagian dari query di atasnya.
Subquery terletak di dalam klausa WHERE atau HAVING.
Pada klausa WHERE, subquery digunakan untuk memilih baris-baris tertentu yang
kemudian digunakan oleh query. Sedangkan pada klausa HAVING, subquery digunakan
untuk memilih kelompok baris yang kemudian digunakan oleh query.
Contoh 1 : perintah untuk menampilkan data pada tabel
pengarang yang mana data pada kolom kode_pengarang-nya tercantum pada tabel
buku menggunakan IN :
Mysql> select * from pengarang where Kode_pengarang
in (select
Kode_pengarang from buku);
atau menggunakan EXISTS
Mysql> select * from pengarang where exists (select
* from buku where pengarang.Kode_pengarang=buku.Kode_pengarang);
Pada contoh di atas :
SELECT kode_pengarang FROM buku
disebut subquery, sedangkan :
SELECT * FROM pengarang
berkedudukan sebagai query. Perhatikan, terdapat data
jenis dan harga pada tabel pengarang yang tidak ditampilkan. Hal ini disebabkan
data pada kolom jenis tidak terdapat pada kolom jenis di tabel buku.
Contoh 2 : perintah untuk menampilkan data pada tabel
pengarang yang mana data pada kolom jenis-nya tidak tercantum pada tabel buku
menggunakan NOT IN :
Mysql> select * from pengarang where kode_pengarang
not in (select kode_pengarang from buku);
atau menggunakan NOT EXISTS
Mysql> select *from pengarang where not exists
(select * from buku where pengarang.Kode_pengarang=buku.Kode_pengarang);
Komentar
Posting Komentar