Tutorial Belajar MySQL Part 22:
Pencarian Data dari Tabel MySQL
(SELECT..LIKE)
09 Jun 13 | Andre | Tutorial MySQL | 60 Comments
Pencarian data dari database merupakan kegiatan rutinitas dalam administrasi
database, dalam tutorial belajar MySQL kali ini kita akan membahas cara
pencarian data dari tabel MySQL menggunakan query SELECT..LIKE untuk
pencarian sederhana.
Untuk pencarian yang lebih rumit dapat menggunakan Regular Expression yang
akan kita bahas pada tutorial selanjutnya, Pencarian Data dari Tabel MySQL
dengan Regular Expression (REGEXP).
Mempersiapkan Tabel Sample: daftar_dosen
Sebagai tabel sample untuk tutorial ini, saya akan menggunakan tabel sample
dari tutorial sebelumnya, yaitu Tutorial Belajar MySQL: Menampilkan Data dari
Tabel MySQL (SELECT). Jika anda ingin mencoba langsung query yang akan kita
bahas, silahkan mengikuti petunjuk pembuatan tabel sample dari tutorial . Tabel
kita akan terdiri dari tabel mata_kuliah dan tabel daftar_dosen. Dalam tutorial kali
ini kita hanya akan menggunakan tabel daftar_dosen.
Tabel daftar_dosen
NIP Nama Dosen No HP Alamat
0160436012 Sabrina Sari 0812349900 Pekanbaru
0260432002 Maya Ari Putri 0812345234 Palembang
0275430005 Susi Indriani 0812656532 Bogor
0480432066 Tia Santrini 0812451177 Padang
0576431001 M. Siddiq 0812979005 Jakarta
0770435006 Rubin Hadi 0812567678 Papua
0869437003 Mustalifah 0812338877 Aceh
1080432007 Arif Budiman 0812456345 Makasar
Pencarian Data Tabel MySQL Menggunakan query
SELECT..LIKE
MySQL menyediakan query SELECT..LIKE untuk menampilkan tabel
berdasarkan pencarian karakter sederhana. Format dasar
struktur SELECT..LIKE adalah sebagai berikut:
SELECT nama_kolom_tampil FROM nama_tabel WHERE nama_kolom_cari LIKE keyword_pencarian
nama_kolom_tampil adalah nama dari kolom yang akan kita tampilkan, bisa
semua kolom dalam tabel, atau hanya kolom tertentu saja.
nama_tabel adalah nama tabel dimana nama_kolom_tampil berada.
nama_kolom_cari adalah kolom yang akan kita gunakan untuk pencarian.
keyword_pencarian merupakan kata kunci yang digunakan untuk pencarian.
Cara penulisan kata kunci ini akan kita bahas lebih lanjut.
Sebagai contoh awal, misalkan kita ingin menampilkan seluruh kolom dari
tabel daftar_dosen dimana nama dosen adalah Rubin Hadi. Maka contoh
querynya:
1 mysql> SELECT * FROM daftar_dosen WHERE nama_dosen LIKE 'Rubin Hadi';
2 +------------+------------+------------+--------+
3 | NIP | nama_dosen | no_hp | alamat |
4 +------------+------------+------------+--------+
5 | 0770435006 | Rubin Hadi | 0812567678 | Papua |
+------------+------------+------------+--------+
6 1 row in set (0.04 sec)
7
Dalam query ini, saya menggunakan LIKE dengan kata kunci yang sama persis
dengan isi dari kolom nama_dosen. Query LIKE ini tidak terlalu membantu
karena kita bisa saja mengganti query tersebut dengan operator =, seperti contoh
berikut:
1 mysql> SELECT * FROM daftar_dosen WHERE nama_dosen='Rubin Hadi';
2 +------------+------------+------------+--------+
3 | NIP | nama_dosen | no_hp | alamat |
4 +------------+------------+------------+--------+
5 | 0770435006 | Rubin Hadi | 0812567678 | Papua |
+------------+------------+------------+--------+
6 1 row in set (0.00 sec)
7
Namun katakan kita ingin menampilkan seluruh kolom dari
tabel daftar_dosen dimana nama_dosen diawali dengan huruf ‘S’. Untuk pencarian
seperti inilah kita menggunakan query LIKE.
MySQL menyediakan 2 karakter khusus untuk pencarian LIKE, yaitu karakter
‘_’ dan ‘%’, penjelasannya:
_ : karakter ganti yang cocok untuk satu karakter apa saja.
% : karakter ganti yang cocok untuk karakter apa saja dengan panjang
karakter tidak terbatas, termasuk tidak ada karakter.
Agar mudah memahami, langsung saja kita gunakan untuk
pencarian nama_dosen yang diawali dengan huruf ‘S’:
1
mysql> SELECT * FROM daftar_dosen WHERE nama_dosen LIKE 'S%';
2 +------------+---------------+------------+-----------+
3 | NIP | nama_dosen | no_hp | alamat |
4 +------------+---------------+------------+-----------+
5 | 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |
| 0275430005 | Susi Indriani | 0812656532 | Bogor |
6
+------------+---------------+------------+-----------+
7 2 rows in set (0.00 sec)
8
Saya menggunakan ‘S%’ karena kita ingin mencari nama_dosen yang diawal
dengan S, dan diikuti oleh karakter apa saja dengan panjang tidak dibatasi.
Kita dapat mengganti kata kunci hasil pencarian tersebut dengan karakter lain,
sebagai contoh:
‘S%’ : Cocok dengan kata yang diawali dengan S, dan diikuti dengan
karakter apa saja, contoh: ‘S’, ‘Sa’, ‘Si’, ‘Saaaaaa’, ‘Susi’, dan ‘Sabrina Sari’.
‘S_’: Cocok dengan kata yang diawali dengan S, dan diikuti dengan satu
karakter apa saja, contoh: ‘Si’, ‘Sa’, ‘Su’, ‘Se’, dan ‘St’.
‘A__i’: Cocok dengan kata yang diawali dengan ‘A’, diikuti oleh 2 karakter
bebas, namun diakhiri dengan i, contoh: ‘Andi’, ‘ardi’, ‘aaai’.
‘%e’: Cocok dengan seluruh kata dengan panjang berapapun yang diakhiri
dengan huruf ‘e’, contoh: ‘Kece’, ‘Kue’, dan ‘mie’.
‘%dia%’: Cocok dengan seluruh kata yang mengandung kata ‘dia’, contoh:
‘media’, ‘kemudian’, ‘dia’, dan ‘diaaaa’.
Kita juga dapat menggabungkan operasi LIKE dengan operator
logika OR atau AND untuk pencarian yang lebih kompleks. Misalkan saya ingin
mencari kolom nama_dosen yang diakhiri huruf ‘i’ atau kolom alamat yang diawali
dengan huruf ‘m’. Querynya adalah sebagai berikut:
1
2 mysql> SELECT * FROM daftar_dosen WHERE nama_dosen LIKE '%i'
3 OR alamat LIKE 'm%';
+------------+----------------+------------+-----------+
4 | NIP | nama_dosen | no_hp | alamat |
5 +------------+----------------+------------+-----------+
6 | 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |
7 | 0260432002 | Maya Ari Putri | 0812345234 | Palembang |
8 | 0275430005 | Susi Indriani | 0812656532 | Bogor |
| 0480432066 | Tia Santrini | 0812451177 | Padang |
9 | 0770435006 | Rubin Hadi | 0812567678 | Papua |
10 | 1080432007 | Arif Budiman | 0812456345 | Makasar |
11 +------------+----------------+------------+-----------+
12 6 rows in set (0.00 sec)
13
Perhatikan bahwa seluruh nama_dosen diakhiri dengan huruf ‘i’, kecuali Arif
Budiman, dimana hasil ini didapat dari kata kunci kedua, yakni atau alamat
diawali dengan huruf ‘m’ : Makasar.
Pencarian LIKE dan juga operasi pencocokan karakter lainnya (seperti Regular
Expression) di dalam MySQL bersifat case sensitif atau case
insensitif tergantung dari tipe kolom yang digunakan.
Jika menggunakan tipe kolom seperti CHAR, VARCHAR, atau TEXT,
maka LIKE akan bersifat case insensitif, dalam arti huruf besar dan kecil
dianggap sama dan tidak dibedakan. Namun untuk tipe
data binary seperti BINARY, VARBINARY, atau BLOB, pencarian LIKE akan
bersifat case sensitif, dimana ‘Andi’ akan dianggap tidak sama dengan ‘andi’.
Umumnya untuk pencarian kita tidak mempermasalahkan huruf besar dan kecil,
namun jika anda membutuhkan pencarian case sensitif, kita harus merubah tipe
kolom tabelnya. Untuk merubah tipe kolom tabel, telah kita bahas pada Tutorial
Belajar MySQL: Merubah Tabel (ALTER TABLE).
Dalam kebutuhan normal, query SELECT..LIKE ini sudah mencukupi, namun
jika kita membutuhkan pencarian yang lebih rumit, seperti mencari semua nama
dosen yang diawali huruf a,b,c dan diakhiri dengan huruf vocal, maka kita
memerlukan pencarian dengan bantuan Regular Expression, selanjutnya
pada Tutorial Belajar MySQL: Pencarian Data dari Tabel MySQL dengan Regular
Expression (REGEXP)