I. Tabel
Pegawai
Untuk
latihan kali ini, kembali menggunakan tabel Pegawai, struktur database dari
tabel tersebut adalah :
mysql> desc
pegawai;
+-----------+-------------+------+-----+---------+-------+
| Field |
Type | Null | Key | Default |
Extra |
+-----------+-------------+------+-----+---------+-------+
| nip |
varchar(5) | NO | PRI | NULL |
|
| nama |
varchar(25) | YES | | NULL
| |
| alamat |
varchar(30) | YES | | NULL
| |
| tgl_lahir | date | YES
| | NULL |
|
| no_telp |
varchar(15) | YES | | NULL
| |
| thn_masuk | year(4) | YES
| | NULL |
|
| golongan |
char(1) | YES | |
NULL | |
| gaji |
int(11) | YES | |
NULL | |
+-----------+-------------+------+-----+---------+-------+
8 rows in set (0.11 sec)
Isi
record yang ada di dalam tabel Pegawai adalah sebagai berikut :
mysql> select
* from pegawai;
+-----+-------------------+-------------------+------------+-------------+-----------+----------+---------+
| nip | nama | alamat | tgl_lahir | no_telp | thn_masuk | golongan | gaji |
+-----+-------------------+-------------------+------------+-------------+-----------+----------+---------+
| 001 | Ahmad Burhanuddin | Jln Buah Batu 15b |
1990-12-12 | 08123334543 | 2010 |
3 | 1250000 |
| 002 | Amin Imsyorry | Jln Cipaku 5 | 1989-12-02 | 08123337777 | 2009 | 2 | 1350000 |
| 003 | Budhy Bungaox | Jln Cisoka 112 | 1989-01-20 | 0812367654 |
2011 | 4 | 1050000 |
| 004 | Zulkarnaen | Jln Alhambra 2 | 1991-02-20 | 0812367655 |
2009 | 1 | 1450000 |
| 005 | Dewi Sudewa | Jln Iman 34 | 1990-12-02 | 08123337766 | 2009 | 1 | 1450000 |
| 006 | Ina Nurlian | Jln Cisatu 1 | 1993-08-09 | 0812345676 | 2011
| 4 | 1050000 |
| 007 | Cheppy Chardut | Jln Cilama 13 | 1992-07-09 | 0812345688 |
2011 | 4 | 1050000 |
| 008 | Dodong M | Jln Sutami 16 | 1990-07-10 | 0812345555 |
2010 | 3 | 1250000 |
+-----+-------------------+-------------------+------------+-------------+-----------+----------+---------+
8 rows in set (0.11 sec)
II. Membuat
Query SQL dari Tabel Pegawai
Untuk
membuat query dengan persyaratan lebih dari satu kita dapat menggunakan klausa
‘or’ lebih dari sekali seperti contoh
dibawah ini, sebuah query yang menampilkan pegawai yang mempunyai nip 001 atau
002 atau 003
- select
nip, nama from pegawai where nip = '001' or nip = '002' or nip = '003';
perintah seperti
diatas terasa kurang praktis karena penggunaan ‘or’ yang berulang, sebagai
penggantinya dapat menggunakan perintah ‘in’ setelah field nip pada persyaratan
‘where’ seperti di bawah ini :
- select
nip, nama from pegawai where nip in ('001','002','003');
untuk lawan data
diatas,tinggal sisipkan ‘not’ sebelum ‘in’
- select
nip, nama from pegawai where nip not in ('001','002','003');
untuk mencari
karakter tertentu dalam sebuah field tidak hanya dapat dilakukan menggunakan
perintah ‘like’ dan ‘%’ saja tetapi dapat menggunakan perintah regexp (regular expression). Perintah ini mirip
dengan ‘Like’ misalnya seperti contoh dibawah ini, query yang berfungsi untuk
mencari nama pegawai yang diawali karakter ‘Em’, tanda ‘^’ menyatakan
awalan.
- select
nip, nama from pegawai where nama regexp '^Em';
sedangkan untuk
mencari akhiran dengan karakter tertentu gunakan tanda ‘$’ dibelakang karakter
yang akan dicari seperti contoh berikut
- select
nip, nama from pegawai where nama regexp 'di$';
berikut ini
query untuk menampilkan data pegawai yang diawali dengan karakter A, B dan C
- select
nip, nama from pegawai where nama regexp '^[ABC]';
kadang kala kita
ingin menampilkan seluruh data dari sebuah tabel dengan urutan tertentu (sorting) berdasarkan urutan dari sebuah
field. Untuk mengurutkan, gunakan perintah ‘order
by’ pada field yang menjadi patokan seperti contoh berikut, dimana tabel
Pegawai diurutkan berdasarkan field tgl_lahir, default pengurutan adalah
ascending (dari kecil ke besar)
- select
* from pegawai order by tgl_lahir;
jika urutan
ingin descending, buatlah query seperti berikut
- select
* from pegawai order by thn_masuk desc;
query berikut
menggunakan perintah ‘group by’ yang
berfungsi menggabungkan beberapa record yang mempunyai isi field tertentu yang
sama, duplikasi akan dihilangkan. Query berikut akan mengelompokan data pegawai
berdasarkan field golongan
- select
* from pegawai group by golongan;
gunakan perintah
‘having’ untuk menambah persyaratan dalam pengelompokan, contoh query berikut
mirip dengan query diatas hanya saja golongan = 1 tidak ditampilkan
- select
nip from pegawai group by golongan having golongan <> '1';
III. Query SQL dengan menggunakan
fungsi aggregasi
Fungsi
aggregat kadang-kadang disebut pula fungsi ringkasan. Fungsi ini akan
menampilkan ringkasan dari sebuah field yang bisa dihitung, dalam latihan ini
kita akan menggunakan field gaji yang bertipe integer. Contoh pertama adalah
mencari rata-rata (average) dari seluruh gaji pegawai dengan menggunakan fungsi
avg
- select
avg(gaji) from pegawai;
mencari
rata-rata gaji yang dikelompokan berdasarkan field golongan
- select
golongan, avg(gaji) from pegawai
group by
golongan;
mencari gaji
terkecil gunakan fungsi min
- select
min(gaji) from pegawai;
mencari gaji
terbesar gunakan fungsi max
- select
max(gaji) from pegawai;
hitung jumlah
pegawai menggunakan fungsi count dengan berpatokan pada field nip
- select
count(nip) from pegawai;
hitung jumlah
pegawai berdasarkan pengelompokan golongan
- select
golongan, count(*) from pegawai
group by
golongan;
hitung jumlah
pegawai dengan menghilangkan duplikasi
- select
count(distinct golongan) from pegawai;
jumlahkan
seluruh gaji pegawai dalam tabel Pegawai dengan fungsi sum (summarize)
- select
sum(gaji) from pegawai;
IV. Latihan
Buatlah
query dari tabel Pegawai untuk menjawab permintaan data berikut ini :
1.
Cari nama
pegawai yang dimulai dengan huruf ‘B’.
2.
Tampilkan
seluruh nama pegawai, kecuali yang namanya dimulai dengan huruf ‘A’.
3.
Cari nip, nama
dan alamat pegawai yang mulai masuk kerja tahun 2010.
4.
Tampilkan nip
dan nama pegawai yang mulai masuk kerja antara tahun 2010 sampai dengan tahun
2012.
5.
Cari seluruh
field pegawai yang gajinya lebih dari atau sama dengan Rp. 1.250.000,-
6.
Tampilkan nip
pegawai yang gajinya antara Rp. 1.000.000,- sampai dengan Rp. 1.500.000,-
7.
Tampilkan
seluruh field pegawai yang memiliki golongan 1, 2 dan 3.
8.
Tampilkan
seluruh field pegawai kecuali yang memiliki golongan 2.
9.
Cari nip, nama,
alamat dan gaji pegawai yang lahir tahun 1989.
10. Cari nip, nama, alamat dan gaji pegawai yang lahir
tahun 1988 sampai dengan 1990.
Comments
Post a Comment