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

Postingan Populer