A. Struktur SQL Query - 03. SQL Query
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
WHERE
GROUP BY
HAVI NG
ORDER BY
nama tabel atau nama view
kondisi (selection of rows)
nama kolom
kondisi (selection of groups)
nama kolom atau angka urutan kolom
Penggunaan pernyataan SELECT untuk menampilkan isi sebuah tabel baik secara keseluruhan
ataupun terbatas pada baris-baris yang memenuhi kriteria tertentu. Sebelum mempraktekkan
perintah-perintah SQL, perlu menyiapkan tabel infoprib dan pegawai. I si kedua tabel dapat dilihat
sebagai berikut :
Tabel infoprib
I d_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-18 | 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-03 | P
SANDR
| Sandra Bullock
| 1964-07-26 | W
RGERE
| Richard Gere
| 1946-08-29 | P
RAHAR
| Slamet Rahardjo
|
| P
KELLY
| Kelly McGillis
| 1957-07-09 | W
JOLI E
| Angelina Jolie
| 1975-06-04 | W
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
1
Tabel pegaw ai
Konsep Sistem Informasi B
nip
| nama_peg
| gaji
| kota
| depart
--------------+ -------------------------+ ----------------+ ----------------+ --------12345
| Fuad Mawardi
| 3000000
| Yogya
| Akunting
12346
| John Simatupang
| 3600000
| Yogya
| Pemasaran
12347
| Freska I skandar
| 1500000
| Klaten
| Personalia
12348
| Kadarisman
| 960000
| Sleman
| Akunting
12349
| Kresnawan
| 1200000
| Magelang
| EDP
12351
| Rianto
| 750000
| Bantul
| Akunting
12352
| Fahmi
|
| Klaten
| EDP
12353
| I da Ayu Lestari
| 750000
| Sleman
| Personalia
12354
| Dian Arum
| 800000
| Yogya
| Produksi
12345
| Kartono
| 700000
| Yogya
| Produksi
Catatan:
•
•
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:
I d_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-18 | 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-03 | P
SANDR
| Sandra Bullock
| 1964-07-26 | W
RGERE
| Richard Gere
| 1946-08-29 | P
RAHAR
| Slamet Rahardjo
|
| P
KELLY
| Kelly McGillis
| 1957-07-09 | W
JOLI E
| Angelina Jolie
| 1975-06-04 | W
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
2
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
FROM infoprib;
maka hasilnya:
nama
| tgl_lahir
-----------------------------------------+ --------------Drew Barrymore
1975-02-22
Sharon Stone
1958-03-10
Sylvester Stallone
1946-07-06
Kevin Costner
1955-01-18
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
Keanu Reeves
1964-09-03
Sandra Bullock
1964-07-26
Richard Gere
1946-08-29
Slamet Rahardjo
Kelly McGillis
1957-07-09
Angelina Jolie
1975-06-04
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:
jkel
---W
W
P
P
W
W
W
W
W
P
W
P
P
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
3
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:
WHERE kondisi
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:
SELECT nama FROM infoprib
WHERE jkel = ‘W’;
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
4
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
-------------------Slamet Rahardjo
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
5
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
. 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;
Maka akan diperoleh hasil:
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
6
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 OR kondisi_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’.
Catatan: Kondisi ‘tak dikenal’ kadangkala disebut sebagai kondisi NULL.
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
7
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
Where jkel = ‘W’ OR tgl_lahir = NULL;
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
8
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 AND kondisi_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
WHERE jkel = ‘P’ AND tgl_lahir < ‘ 1950-01-01’;
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
9
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’;
Adapun pernyataan berikut digunakan untuk menampilkan bintang film yang tidak lahir pada
tahun 1950-an:
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
10
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
Distinct berfungsi untuk menghilangkan duplikasi pada nilai kolom dan mengurangi duplikasi pada
output record. Penggunaan distinct dapat dilihat pada contoh berikut ini:
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
11
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;
Maka hasilnya seperti tabel berikut ini:
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
12
Kota
------Bantul
Klaten
Magelang
Sleman
Yogya
Konsep Sistem Informasi B
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
anto1987.files.wordpress.com/ 2011/ .../ sql-bab-6.
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
13
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
WHERE
GROUP BY
HAVI NG
ORDER BY
nama tabel atau nama view
kondisi (selection of rows)
nama kolom
kondisi (selection of groups)
nama kolom atau angka urutan kolom
Penggunaan pernyataan SELECT untuk menampilkan isi sebuah tabel baik secara keseluruhan
ataupun terbatas pada baris-baris yang memenuhi kriteria tertentu. Sebelum mempraktekkan
perintah-perintah SQL, perlu menyiapkan tabel infoprib dan pegawai. I si kedua tabel dapat dilihat
sebagai berikut :
Tabel infoprib
I d_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-18 | 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-03 | P
SANDR
| Sandra Bullock
| 1964-07-26 | W
RGERE
| Richard Gere
| 1946-08-29 | P
RAHAR
| Slamet Rahardjo
|
| P
KELLY
| Kelly McGillis
| 1957-07-09 | W
JOLI E
| Angelina Jolie
| 1975-06-04 | W
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
1
Tabel pegaw ai
Konsep Sistem Informasi B
nip
| nama_peg
| gaji
| kota
| depart
--------------+ -------------------------+ ----------------+ ----------------+ --------12345
| Fuad Mawardi
| 3000000
| Yogya
| Akunting
12346
| John Simatupang
| 3600000
| Yogya
| Pemasaran
12347
| Freska I skandar
| 1500000
| Klaten
| Personalia
12348
| Kadarisman
| 960000
| Sleman
| Akunting
12349
| Kresnawan
| 1200000
| Magelang
| EDP
12351
| Rianto
| 750000
| Bantul
| Akunting
12352
| Fahmi
|
| Klaten
| EDP
12353
| I da Ayu Lestari
| 750000
| Sleman
| Personalia
12354
| Dian Arum
| 800000
| Yogya
| Produksi
12345
| Kartono
| 700000
| Yogya
| Produksi
Catatan:
•
•
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:
I d_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-18 | 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-03 | P
SANDR
| Sandra Bullock
| 1964-07-26 | W
RGERE
| Richard Gere
| 1946-08-29 | P
RAHAR
| Slamet Rahardjo
|
| P
KELLY
| Kelly McGillis
| 1957-07-09 | W
JOLI E
| Angelina Jolie
| 1975-06-04 | W
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
2
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
FROM infoprib;
maka hasilnya:
nama
| tgl_lahir
-----------------------------------------+ --------------Drew Barrymore
1975-02-22
Sharon Stone
1958-03-10
Sylvester Stallone
1946-07-06
Kevin Costner
1955-01-18
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
Keanu Reeves
1964-09-03
Sandra Bullock
1964-07-26
Richard Gere
1946-08-29
Slamet Rahardjo
Kelly McGillis
1957-07-09
Angelina Jolie
1975-06-04
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:
jkel
---W
W
P
P
W
W
W
W
W
P
W
P
P
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
3
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:
WHERE kondisi
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:
SELECT nama FROM infoprib
WHERE jkel = ‘W’;
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
4
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
-------------------Slamet Rahardjo
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
5
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
. 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;
Maka akan diperoleh hasil:
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
6
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 OR kondisi_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’.
Catatan: Kondisi ‘tak dikenal’ kadangkala disebut sebagai kondisi NULL.
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
7
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
Where jkel = ‘W’ OR tgl_lahir = NULL;
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
8
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 AND kondisi_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
WHERE jkel = ‘P’ AND tgl_lahir < ‘ 1950-01-01’;
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
9
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’;
Adapun pernyataan berikut digunakan untuk menampilkan bintang film yang tidak lahir pada
tahun 1950-an:
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
10
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
Distinct berfungsi untuk menghilangkan duplikasi pada nilai kolom dan mengurangi duplikasi pada
output record. Penggunaan distinct dapat dilihat pada contoh berikut ini:
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
11
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;
Maka hasilnya seperti tabel berikut ini:
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
12
Kota
------Bantul
Klaten
Magelang
Sleman
Yogya
Konsep Sistem Informasi B
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
anto1987.files.wordpress.com/ 2011/ .../ sql-bab-6.
Pertemuan 3 ‐ Jeje, SKom, MMSI – Universitas Gunadarma
13