Konsep Sistem Informasi B
SQL QUERY
A. Struktur SQL Query
SQL memberikan bahasa query tingkat tinggi (a high level query language) dengan struktur sederhana dengan kosakata dan gramatika yang sederhana pula, seperti berikut ini:
Select A1, A2, …, An
From T1, T2, …, Tn
Where P
Dimana:
A1, A2, …, An : himpunan dari semua atribut yang hendak ditampilkan
T1, T2, …, Tn : himpunan dari semua tabel yang terlibat (diperlukan) dalam query P : predikat atau kriteria yang diinginkan tentang informasi yang dicari
SELECT dapat diikuti dengan: - Nama kolom
- Fungsi kolom - Ekspresi aritmatika - Fungsi skalar - Literal
FROM nama tabel atau nama view
WHERE kondisi (selection of rows)
GROUP BY nama kolom
HAVI NG kondisi (selection of groups)
ORDER BY nama kolom atau angka urutan kolom
Konsep Sistem Informasi B
• Pada tabel infoprib memang sengaja ada data tanggal lahir yang bernilai NULL. Begitu juga pada tabel pegawai, terdapat gaji yang bernilai NULL.
• Pada tabel pegawai, kota menyatakan kota tempat tinggal dan depart menyatakan departemen tempat pegawai bekerja.
Menampilkan semua kolom semua baris
Seringkali diperlukan untuk menampilkan semua data yang terdapat pada sebuah tabel. Hal ini dapat dilakukan dengan menggunakan perintah berikut:
SELECT * FROM infoprib;
Contoh ini digunakan untuk menampilkan semua isi tabel infoprib.
Pernyataan di atas identik jika menulis menjadi seperti berikut:
SELECT id_bin, nama, tgl_lahir, jkel FROM infoprib;
Namun, tentu saja pengunaan tanda * lebih praktis daripada kalau menyebutkan semua nama kolom. Maka hasilnya adalah:
Konsep Sistem Informasi B
Menampilkan kolom tertentu
Jika akan menampilkan hanya kolom-kolom tertentu, maka perlu menyebutkan nama-nama kolom sesudah kata SELECT. Dalam hal ini, antarnama kolom perlu dipisahkan dengan koma. Contoh:
SELECT nama, tgl_lahir
Sylvester Stallone 1946-07-06
Kevin Costner 1955-01-18
Memperoleh data yang unik
Sebelum melihat perolehan data yang bersifat unik (tidak ada yang kembar), cobalah untuk memberikan perintah berikut:
SELECT jkel
FROM infoprib;
maka akan menampilkan isi kolom jkel saja. seperti berikut ini:
Konsep Sistem Informasi B
W W
Tampak bahwa hasil yang didapatkan banyak yang kembar.
Sekarang, bagaimana caranya kalau hasil yang dikendaki hanya berupa kemungkinan isi dari kolom jkel? Pada keadaan seperti inilah bisa menyisipkan kata DI STI NCT pada klausa SELECT seperti perintah berikut ini:
SELECT DI STI NCT jkel FROM infoprib;
Hasilnya dapat dilihat sebagai berikut:
Jkel ---- P W
Tampak bahwa hasil yang diberikan benar-benar mencerminkan kemungkinan isi dari kolom jkel. Nilai yang kembar hanya akan ditampilkan satu kali.
Contoh yang lain, jika ingin mengetahui di kota mana saja pegawai bertempat tinggal berdasarkan data pada tabel pegaw ai, maka dapat memberikan perintah berikut ini:
SELECT DI STI NCT kota FROM pegaw ai;
Maka hasilnya seperti tabel berikut ini:
Kota --- Bantul Klaten Magelang Sleman Yogya
Memilih baris tertentu
Jika menginginkan hasil hanya baris-baris tertentu, maka perlu menyertakan klausa WHERE pada pernyataan SELECT, maka bentuk klausanya sebagai berikut:
WHEREkondisi
Dengan kondisi berupa suatu ekspresi. Dalam hal ini, baris-baris yang disertakan hanyalah yang memenuhi kondisi.
Catatan:
Kondisi yang digunakan pada klausa WHERE sering disebut dengan istilah predikat.
Misalnya, ingin menampilkan semua nama bintang film wanita. Pernyataan yang perlu diberikan adalah:
Konsep Sistem Informasi B
Maka hasilnya adalah sebagai berikut:
nama
--- Drew Barrymore Sharon Stone Christine Hakim Julia Roberts Demi Moore Cindy Crawford Cameron Diaz Sandra Bullock Kelly McGillis Angelina Jolie
Jika ingin menampilkan hanya sebuah baris yang memenuhi syarat, kondisi dalam WHERE perlu melibatkan kunci primer.
Contoh: SELECT *
FROM infoprib
WHERE id_bin = ‘DREWB’;
Maka hasilnya adalah data Drew Barrymore yang ditamplikan:
id_bin | nama | tgl_lahir | jkel
---+ ---+ ---+ --- DREWB | Drew Barrymore | 1975-02-22 | W
Perlu diketahui, operator = (dan juga operator relasional lainnya) tidak dapat digunakan untuk membandingkan terhadap nilai NULL. Sebagai contoh, pada perintah berikut ini:
SELECT nama FROM infoprib WHERE tgl_lahir = NULL;
Apakah perintah di atas akan menampilkan daftar bintang film yang tanggalnya tidak disebutkan? Ternyata tidak! Maka akan memperoleh hasil seperti berikut ini:
SELECT nama FROM infoprib WHERE tgl_lahir = NULL;
Empty set (0.38 sec)
Keterangan: Tanggal lahir yang bernilai NULL tidak ditampilkan
Sekalipun tgl_lahir bernilai NULL, perbandingan tgl_lahir = NULL tidak menghasilkan nilai benar, melainkan menimbulkan keadaan nalar yang disebut ‘tidak dikenal’.
Catatan:
Pada PostgreSQL, SELECT di depan menghasilkan seperti berikut:
nama
Konsep Sistem Informasi B
Bila pembandingan dengan = NULL tidak dapat dilakukan pada sistem yang digunakan, persoalan ini dapat dipecahkan dengan menggunakan operator I S NULL.
B. Operator Pembanding SQL
Yang dimaksud dengan operator pembanding adalah operator yang digunakan untuk melakukan pembandingan antara dua buah nilai. Tabel berikut memperlihatkan semua operator pembanding atau relasional.
Operator Keterangan
= sama dengan
> lebih dari
< kurang dari
> = lebih dari atau sama dengan
< = kurang dari atau sama dengan
< > tidak sama dengan
Contoh penggunaan operator = telah didapatkan di depan. Sekarang untuk mencoba operator yang lain yaitu > . Operator ini biasa digunakan untuk membandingkan nilai numerik. Namun, operator ini sebenarnya dapat juga dapat digunakan untuk pembandingan string.
Contoh:
SELECT nama, tgl_lahir FROM infoprib
WHERE tgl_lahir > ‘19651231’
Pernyataan di atas akan menampilkan semua bintang film yang lahir sesudah tanggal 31 Desember 1965. Maka akan diperoleh hasil sebagaimana terlihat pada tabel berikut:
Nama | tgl_lahir
--- Drew Barrymore | 1975-02-22 Julia Roberts | 1967-10-28 Cindy Crawford | 1966-02-20 Cameron Diaz | 1972-08-30 Angelina Jolie | 1975-06-04
Adapun contoh berikut digunakan untuk menampilkan semua pegawai yang gajinya melebihi dari 2 juta:
SELECT nama_peg, gaji
FROM pegaw ai WHERE gaji > 2000000;
Konsep Sistem Informasi B
nama_peg | gaji
---
Fuad Mawardi | 3000000
John Simatupang | 3600000
C. Operator Boolean
Operator ini digunakan untuk melakukan pemeriksaan suatu nilai dan membandingkannya dengan nilai atau kondisi yang lain. Operator boolean mencakup operator OR, AND, dan NOT.
1. Operator OR
Operator OR berguna untuk melakukan query dengan kondisi majemuk. Bentuk penggunaan OR adalah sebagai berikut:
kondisi_1
ORkondisi_2
Hasil ekspresi dengan OR berupa benar (True) kalau terdapat kondisi yang bernilai benar. Tabel berikut merupakan daftar kemungkinan hasil ekspresi dengan OR
Kondisi_1 Kondisi_2 Hasil
Salah Salah Salah
Salah Benar Benar
Benar Salah Benar
Benar Benar Benar
Sebagai contoh dari operator OR:
SELECT *
FROM infoprib
WHERE jkel = ‘P’ OR id_bin = ‘STONE’;
Perintah di atas akan menampilkan semua baris yang memiliki nilai jkel berupa P ataupun baris yang memiliki nilai STONE pada kolom id_bin.
id_bin | nama | tgl_lahir | jkel ---+ ---+ ---+ ---- STONE | Sharon Stone | 1958-03-10 | W SYLVE | Sylvester Stallone | 1946-07-06 | P KEVI N | Kevin Costner | 1955-01-18 | P KEANU | Keanu Reeves | 1964-09-03 | P RGERE | Richard Gere | 1946-08-29 | P RAHAR | Slamet Rahardjo | | P
Berkaitan dengan nilai NULL, pada beberapa sistem selain keadaaan benar dan salah terdapat keadaan nalar yang telah disinggung di depan yaitu ‘tidak dikenal’. Keadaan ini terjadi kalau terdapat nilai NULL. Tabel berikut memberikan keadaan nalar yang terjadi pada pemakaian OR sekiranya terjadi kondisi ‘tak dikenal’.
Konsep Sistem Informasi B
Tabel berikut adalah tabel kemungkinan hasil ekspresi OR, termasuk untuk keadaan nalar ‘tak dikenal’.
Kondisi_1 Kondisi_2 Hasil
Tak dikenal Salah Tak dikenal
Tak dikenal Benar Benar
Tak dikenal Tak dikenal Tak dikenal
Salah Tak dikenal Tak dikenal
Benar Tak dikenal Benar
Tabel berikut memperlihatkan isi tabel infoprib secara keseluruhan.
id_bin nama tgl_lahir jkel
DREWB Drew Barrymore 1975-02-22 W
STONE Sharon Stone 1958-03-10 W
SYLVE Sylvester Stallone 1946-07-06 P
KEVI N Kevin Costner 1955-01-08 P
HAKI M Christine Hakim 1957-12-25 W
JULI A Julia Roberts 1967-10-28 W
DEMI M Demi Moore 1962-11-11 W
CI NDY Cindy Crawford 1966-02-20 W
CDI AZ Cameron Diaz 1972-08-30 W
KEANU Keanu Reeves 1964-09-02 P
SANDR Sandra Bullock 1964-07-26 W
RGERE Richard Gere 1946-08-29 P
RAHAR Slamet Rahardjo NULL P
KELLY Kelly McGilis 1957-07-09 W
JOLI E Angelina Jolie 1975-06-04 W
Sekarang, mencoba memberikan perintah berikut:
SELECT nama, tgl_lahir
FROM infoprib
Konsep Sistem Informasi B
Hasilnya dapat dilihat pada berikut:
nama tgl_lahir
Drew Barrymore 1975-02-22
Sharon Stone 1958-03-10
Christine Hakim 1957-12-25
Julia Roberts 1967-10-28
Demi Moore 1962-11-11
Cindy Crawford 1966-02-20
Cameron Diaz 1972-08-30
Sandra Bullock 1964-07-26
Kelly McGilis 1957-07-09
Angelina Jolie 1975-06-04
Hasil pada sistem yang menolak ekspresi tgl_lahir = NULL. Tampak bahwa tidak ada baris yang kolom tgl_lahir-nya bernilai NULL.
2. Operator AND
Kaidah pemakaian operator AND adalah seperti berikut:
kondisi_1
ANDkondisi_2
Operator ini memiliki sifat sebagaimana terlihat pada Tabel berikut:
Kondisi Benar Salah Tak dikenal
Benar Benar Salah Tak dikenal
Salah Salah Salah Salah
Tidak dikenal Tak dikenal Salah Salah
Untuk memudahkan dalam mengingat, dapat menggunakan pedoman berikut:
- Apapun bila di-AND-kan dengan nilai salah akan menghasilkan nilai salah - Hasil benar hanya kalau kedua kondisi bernilai benar
- Nilai benar jika di-AND-kan dengan nilai ‘tak dikenal’ akan menghasilkan nilai ‘tak dikenal’.
Contoh berikut digunakan untuk menampilkan semua bintang film pria yang lahir sebelum tahun 1950:
SELECT nama, tgl_lahir FROM infoprib
Konsep Sistem Informasi B
Maka akan diperoleh hasil sebagai berikut:
nama | tgl_lahir
---+ --- Sylvester Stallone | 1946-07-06 Kevin Costner | 1955-01-18 Richard Gere | 1946-08-29
3. Operator NOT
Operator NOT berguna untuk melakukan pembalikan nilai nalar. Kaidah pemakaiannya adalah sebagai berikut:
NOT kondisi
Hasil ekspresi ditunjukkan pada tabel berikut:
Ekspresi Hasil
NOT Benar Salah
NOT Salah Benar
NOT ‘Tak Dikenal’ ‘tak dikenal’
Contoh berikut memberikan gambaran penggunaan NOT
SELECT nama
FROM infoprib
WHERE NOT jkel = ‘P’;
Maka diperoleh hasil daftar bintang film yang mempunyai jenis kelamin wanita:
nama
--- Drew Barrymore Sharon Stone Christine Hakim Julia Roberts Demi Moore Cindy Crawford Cameron Diaz Sandra Bullock Kelly McGillis Angelina Jolie
Pernyataan di atas identik dengan pernyataan:
SELECT nama
FROM infoprib
WHERE jkel = ‘W’;
Konsep Sistem Informasi B
SELECT nama, tgl_lahir FROM infoprib
WHERE NOT ( tgl_lahir > ‘19491231’ AND
( tgl_lahir < ‘19600101’;
Maka akan diperoleh hasil daftar bintang film yang tidak lahir pada tahun 1950-an:
Nama | tgl_lahir
---+ ---- Drew Barrymore | 1975-02-22 Sylvester Stallone | 1946-07-06 Julia Roberts | 1967-10-28
Demi Moore | 1962-11-11
Cindy Crawford | 1966-02-20 Cameron Diaz | 1972-08-30 Keanu Reeves | 1964-09-02 Sandra Bullock | 1964-07-06 Richard Gere | 1946-08-29 Angelina Jolie | 1975-06-04
D. Pencarian String
Operator LI KE digunakan untuk membentuk pencarian string yang sesuai dengan nilai yang dicantumkan pada kondisi. Kondisi pencarian dapat berisi karakter atau bilangan dengan menggunakan 2 (dua) simbol khusus, yaitu:
1. % , berfungsi untuk menotasikan zero atau banyak karakter, atau menggantikan sembarang jumlah karakter
2. _ (underscore), berfungsi menotasikan atau menggantikan satu karakter
Contoh Menggunakan kondisi LI KE:
SELECT id_bin, nama, tgl_lahir, jkel
FROM infoprib
WHERE nama LI KE ‘D% ’;
SELECT id_bin, nama, tgl_lahir, jkel
FROM infoprib
WHERE nama LI KE ‘% D’;
SELECT id_bin, nama, tgl_lahir, jkel
FROM infoprib
WHERE nama LI KE ‘% D% ’;
SELECT id_bin, nama, tgl_lahir, jkel
FROM infoprib
WHERE nama LI KE ‘_a’;
E. Penggunaan Distinct
Konsep Sistem Informasi B
Sebelum menggunakan distinct maka terlihat perolehan data yang tidak bersifat unik (banyak nilai yang kembar), cobalah untuk memberikan perintah berikut:
SELECT jkel
FROM infoprib;
maka akan menampilkan isi kolom jkel saja. seperti berikut ini:
jkel ---- W W P P W W W W W P W P P W W
Tampak bahwa hasil yang didapatkan banyak yang kembar.
Sekarang, bagaimana caranya kalau hasil yang dikehendaki hanya berupa kemungkinan isi dari kolom jkel? Pada keadaan seperti inilah bisa menyisipkan kata DI STI NCT pada klausa SELECT seperti perintah berikut ini:
SELECT DI STI NCT jkel FROM infoprib;
Hasilnya dapat dilihat sebagai berikut:
Jkel ---- P W
Tampak bahwa hasil yang diberikan benar-benar mencerminkan kemungkinan isi dari kolom jkel. Nilai yang kembar hanya akan ditampilkan satu kali.
Contoh yang lain, jika ingin mengetahui di kota mana saja pegawai bertempat tinggal berdasarkan data pada tabel pegaw ai, maka dapat memberikan perintah berikut ini:
SELECT DI STI NCT kota FROM pegaw ai;
Konsep Sistem Informasi B
Kota --- Bantul Klaten Magelang Sleman Yogya
Referensi:
http: / / mhs.stiki.ac.id/ boysagi/ Software/ bdl/ bukudb11.doc
http: / / elearning.gunadarma.ac.id/ docmodul/ modul_kursus_db2_universal_database/ 7_sql_queries.p df
http: / / courseware.politekniktelkom.ac.id/ BUKU_KA/ Semester% 203/ I S222% 20Pemrograman% 20We b/ Pemrograman% 20Web.pdf