MySQL Bagian 3 - Latihan Query


I.                   Membuat Tabel Pegawai
Buatlah sebuah database baru dengan nama Perusahaan (gunakan nama Perusahaan_[nim mhs] untuk setiap praktikan) dimana di dalam database tersebut akan di ‘create’ sebuah tabel dengan nama Pegawai, struktur database dari tabel tersebut adalah :

mysql> use perusahaan;
Database changed
mysql> show tables;
+----------------------+
| Tables_in_perusahaan |
+----------------------+
| pegawai              |
+----------------------+
1 row in set (0.06 sec)

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.20 sec)


Perhatikan bahwa tabel tersebut menggunakan 5 buah tipe data yaitu varchar, date, year, char dan int. Khusus untuk tipe data ‘date’ isiannya adalah tahun-bulan-tanggal, contoh : 2010-05-06. Setelah selesai membuat struktur tabel Pegawai gunakanlah perintah ‘Insert’ untuk mengisi tabel tersebut dengan paling sedikit 15 buah record seperti gambar di bawah ini :
  
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.                Insert Record
Untuk menyisipkan (insert) record baru, dapat diisi satu persatu seperti contoh berikut :

       mysql> insert into pegawai
    -> (nip, nama, alamat, tgl_lahir, no_telp, thn_masuk, golongan, gaji)
    -> values
    -> ('006','Ina Nurlian','Jln Cisatu 1','1993-08-09','0812345676',2011,4,1050000);
Query OK, 1 row affected (0.14 sec)

            Atau langsung di isi beberapa record sekaligus menggunakan ‘,’ (koma) seperti contoh berikut :
       mysql> insert into pegawai
    -> (nip, nama, alamat, tgl_lahir, no_telp, thn_masuk, golongan, gaji)
    -> values
    -> ('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);
Query OK, 2 rows affected (0.08 sec)
Records: 2  Duplicates: 0  Warnings: 0
                       
III.             Membuat Query SQL dari Tabel Pegawai
Dibawah ini adalah latihan query SQL dari tabel Pegawai yang sebelumnya telah dibuat, query paling sederhana tentu saja menampilkan seluruh record dari tabel Pegawai dengan perintah :

  1. select * from pegawai;
query selanjutnya adalah menampilkan hanya field nip dan nama dari tabel Pegawai, agar diperhatikan bahwa perintah select akan menampilkan duplikasi data misalnya jika ada 2 nama pegawai yang persis sama maka dua-duanya akan ditampilkan.

  1. select nip,nama from pegawai;
mirip dengan query sebelumnya, query di bawah ini hanya menampilkan field nip, nama dan golongan saja.

  1. select nip, nama, golongan from pegawai;
query berikut mulai menggunakan klausa ‘where’ yang bisa diartikan sebagai kriteria atau syarat pencarian tertentu, dalam kasus di bawah ini adalah tampilkan nip dan nama pegawai yang bernama 'Asep Burhanuddin'.

  1. select nip, nama from pegawai where nama = 'Asep Burhanuddin';
field dengan tipe data year dapat dikenai operator relasional >,<,>= dan <=, contohnya adalah cari pegawai yang bekerja (thn_masuk) dari tahun 2005.

  1. select nip, nama from pegawai where thn_masuk = 2005;
gunakan operator relasional yang lain contohnya :

  1. select nip, nama from pegawai where thn_masuk > 2004;
gunakan klausa ‘and’ jika terdapat dua persyaratan dalam ‘where’ dimana kedua persyaratan tersebut harus benar, contoh query :

  1. select nip, nama from pegawai where thn_masuk = 2003 and golongan = '1';
selain ‘and’ dapat pula kita gunakan klausa ‘or’ jika terdapat dua persyaratan dalam ‘where’ dimana kedua persyaratan tersebut, salah satunya harus benar, contoh query :

  1. select nip, nama from pegawai where thn_masuk = 2003 or gaji > 800000;
untuk field dengan tipe data varchar dapat pula menggunakan operator relasional, contoh berikut adalah mencari nama pegawai yang >= ‘C’, artinya nama pegawai tersebut harus dimulai dengan huruf C atau D atau E dan seterusnya.

  1. select nip, nama from pegawai where nama >= 'C';
untuk mencari ‘lawan’ data dari data yang dicari gunakan perintah ‘not’.

  1. select * from pegawai where not golongan = '3';
gunakan perintah ‘select distinct’ untuk memastikan tidak adanya duplikasi dari query yang dihasilkan, untuk latihan cobalah perintah berikut :

  1. select distinct thn_masuk from pegawai;
field dengan tipe data integer tentu saja dapat dihitung, contoh dibawah adalah menghitung ½ gaji pegawai dan menempatkannya dalam sebuah field baru tanpa harus mengubah struktur database yang telah ada.

  1. select nip, nama, golongan, 1/2 * gaji from pegawai;
gunakan perintah ‘between’ dan ‘and’ dalam kriteria pencarian untuk membuat ‘kekangan’ data tertentu, latihan berikut adalah menggunakan kriteria dari field tgl_lahir untuk menampilkan pegawai yang lahir antara tahun 1990 sampai dengan tahun 1991.

  1. select * from pegawai where tgl_lahir between '1990-01-01' and '1991-12-31';
untuk menampilkan pegawai yang lahir selain antara tahun 1990 sampai dengan tahun 1991, gunakan ‘not’ sebelum field tgl_lahir.

  1. select * from pegawai where not tgl_lahir between '1990-01-01' and '1991-12-31';
gunakan perintah ‘like’ untuk mencari karakter tertentu dalam sebuah field, perintah ini menggunakan tanda wildcard ‘%’ (wildcard = karakter bebas)untuk karakter apa saja. Contoh : nama like ‘Cah%’ artinya  nama pegawai yang dimulai dengan karakter ‘Cah...’ dimana karakter dibelakangnya adalah wildcard, tidak dipedulikan. Hasilnya querynya mungkin saja Cahoen, Cahyadi, Cahyono, dll atau mungkain hanya Cah saja.

  1. select nama from pegawai where nama like 'Cah%';
lihat perbedaannya dengan perintah di bawah ini

  1. select nama from pegawai where nama not like 'C%';

IV.             Latihan Query
Buatlah query SQL berikut dari tabel Pegawai
a.       Cari nama pegawai yang dimulai dengan huruf ‘D’ dan diakhiri dengan huruf ‘y’
b.      Cari nip, nama dan golongan pegawai yang beralamat di ‘Bandung’
c.       Cari nip, nama dan golongan pegawai yang beralamat selain di ‘Bandung’
d.      Hitung 5% dari gaji setiap pegawai
e.       Cari ada berapa golongan pegawai yang terdapat dalam tabel pegawai
f.       Cari nama pegawai yang mempunyai karakter ‘ud’ di dalam namanya
g.       Tampilkan nomor telepon pegawai yang mempunyai kode area selain ‘(022)’
h.      Hapus pegawai dengan nip = ‘001’


Comments