Header Ads

Belajar MySQL Part 18 : Pencarian Data dari table MySQL (SELECT...LIKE)

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.



Mempersiapkan Table Sample : Daftar_dosen

Sebagai tabel sample untuk tutorial ini, saya akan menggunakan tabel sample dari tutorial sebelumnya, yaitu 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



Pencarian Data Table 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:



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:



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’:



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:


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.


Keterangan ! 
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 Merubah Tabel (ALTER TABLE).  



Kesimpulan !
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 Pencarian Data dari Tabel MySQL dengan Regular Expression (REGEXP)

No comments

Powered by Blogger.