Pada tutorial sebelumnya, kita telah mempelajari cara menghapus data pada tabel MySQL. pada tutorial kali ini kita akan memahami cara mencari data pada tabel MySQL menggunakan operator LIKE
Daftar Isi
Operator LIKE MySQL
Operator LIKE digunakan bersama dengan klausa WHERE untuk menemukan data dengan pola tertentu di tabel MySQL
Terdapat dua karakter khusus (wildcard) yang dapat digunakan untuk pencarian data menggunakan operator LIKE
- Tanda persen ( % ) digunakan untuk mencocokkan nol, satu, atau beberapa karakter
- Garis bawah ( _ ) digunakan untuk mencocokkan satu karakter
PERTANYAAN SUKA
SELECT kolom1, kolom2, … FROM nama_tabel WHERE nama_kolom LIKE pattern;
Keterangan
- kolom1, kolom2, dst adalah nama kolom yang ingin ditampilkan
- CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); 0 adalah tabel yang akan dicari datanya
- CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); 1 adalah kolom yang akan dicari datanya
- CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); _2/pattern adalah bagaimana data akan ditampilkan
Berikut adalah beberapa contoh penggunaan karakter khusus dalam pencarian menggunakan operator LIKE
LIKE OperatorDescriptionLIKE 'a%'Menampilkan data pada kolom tertentu yang berprefiks huruf 'a'LIKE '%a'Menampilkan data pada kolom tertentu yang berhuruf 'a'LIKE '%an%'Menampilkan data pada kolom tertentu yang didalamnya terdapat huruf 'an' LIKE 'a__'Menampilkan data pada kolom tertentu yang memiliki awalan huruf 'a' yang memiliki panjang 3 karakterLIKE 'a%a'Menampilkan data pada kolom tertentu yang memiliki awalan dari huruf 'a' dan akhiran dari huruf 'a'Pelatihan Menggunakan Operator LIKE MySQL
Bagi sobat yang belum memiliki tabel data untuk dicari, silahkan copy query dibawah ini
CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); _
Berikut adalah tampilan dari tabel CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); _3
MariaDB [mahasiswa]> SELECT * FROM biodata_mahasiswa; +--------+-----------+------------+---------------+---------------+----------+ | id_mhs | nim | nama_depan | nama_belakang | alamat | kode_pos | +--------+-----------+------------+---------------+---------------+----------+ | 1 | 191100111 | Zoe | Martin | Jakarta Barat | 11231 | | 2 | 191100112 | Dwi | Jane | Jakarta Timur | 90902 | | 3 | 191100113 | Ayra | Mysha | Medan | 80804 | | 4 | 191100114 | Azka | Putra | Padang | 99993 | | 5 | 191100115 | Tyas | Miranda | Padang | 99993 | | 6 | 191100116 | Kayle | Jane | Padang | 99993 | | 7 | 191100117 | Regina | Rajendra | Padang | 99993 | +--------+-----------+------------+---------------+---------------+----------+ _
Contoh Penggunaan Karakter Khusus (%)
- Temukan CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); _4 yang memiliki huruf 'a' sebagai awalannya
MariaDB [mahasiswa]> SELECT nama_depan, nama_belakang -> FROM biodata_mahasiswa -> WHERE nama_depan LIKE 'a%'; +------------+---------------+ | nama_depan | nama_belakang | +------------+---------------+ | Ayra | Mysha | | Azka | Putra | +------------+---------------+ _
Hasil penelusuran di atas menjelaskan bahwa ada dua siswa yang nama depannya berawalan huruf 'a', yaitu Ayra dan Azka
Kiat
Kami juga dapat menggabungkan pencarian data menggunakan operator AND dan OR
Catatan
MySQL secara default tidak membedakan huruf besar dan huruf kecil (incase sensitive) walaupun nama yang memiliki awalan huruf kapital 'A' akan tetap ditampilkan walaupun yang kita cari menggunakan awalan huruf kecil 'a'
Sekarang mari kita lihat contoh lain
- Mencari last_name yang mengandung huruf 'an' di dalamnya
MariaDB [mahasiswa]> SELECT nama_depan, nama_belakang -> FROM biodata_mahasiswa -> WHERE nama_belakang LIKE '%an%'; +------------+---------------+ | nama_depan | nama_belakang | +------------+---------------+ | Dwi | Jane | | Tyas | Miranda | | Kayle | Jane | +------------+---------------+ _
Hasil penelusuran di atas menjelaskan bahwa siswa yang CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); 5 mengandung huruf 'an' adalah tiga orang, yaitu Dwi Jane, Tyas Miranda, dan Kayle Jane
- Mencari CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); _4 yang diawali dengan huruf 'a' dan diakhiri dengan huruf 'a'
MariaDB [mahasiswa]> SELECT nama_depan, nama_belakang -> FROM biodata_mahasiswa -> WHERE nama_depan LIKE 'a%a'; +------------+---------------+ | nama_depan | nama_belakang | +------------+---------------+ | Ayra | Mysha | | Azka | Putra | +------------+---------------+
Hasil penelusuran di atas menjelaskan bahwa, siswa yang memiliki CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); 4 berawalan huruf 'a' dan diakhiri dengan huruf 'a' juga ada dua orang yaitu Ayra dan Azka
Contoh Penggunaan Karakter Khusus ( _ )
- Mencari CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); _4 yang hanya memiliki total 4 huruf
MariaDB [mahasiswa]> SELECT nama_depan, nama_belakang -> FROM biodata_mahasiswa -> WHERE nama_depan LIKE '____'; +------------+---------------+ | nama_depan | nama_belakang | +------------+---------------+ | Ayra | Mysha | | Azka | Putra | | Tyas | Miranda | +------------+---------------+
Dengan menggunakan 4 garis bawah (_), maka CREATE TABLE biodata_mahasiswa ( id_mhs INT NOT NULL AUTO_INCREMENT, nim VARCHAR (9) NOT NULL, nama_depan VARCHAR (50) NOT NULL, nama_belakang VARCHAR (50) NOT NULL, alamat VARCHAR (200) NOT NULL, kode_pos VARCHAR (5), PRIMARY KEY (id_mhs) ) ENGINE = InnoDB; INSERT INTO biodata_mahasiswa VALUES (NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'), (NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'), (NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'), (NULL, '191100114','Azka', 'Putra', 'Padang', '99993'), (NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'), (NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'), (NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993'); 4 yang memiliki total 4 karakter yaitu Ayra, Azka, dan Tyas
- Mencari CREATE TABLE biodata_mahasiswa (
id_mhs INT NOT NULL AUTO_INCREMENT,
nim VARCHAR (9) NOT NULL,
nama_depan VARCHAR (50) NOT NULL,
nama_belakang VARCHAR (50) NOT NULL,
alamat VARCHAR (200) NOT NULL,
kode_pos VARCHAR (5),
PRIMARY KEY (id_mhs)
) ENGINE = InnoDB;
INSERT INTO biodata_mahasiswa VALUES
(NULL,'191100111','Zoe', 'Martin', 'Jakarta Barat', '11231'),
(NULL, '191100112','Dwi', 'Jane', 'Jakarta Timur', '90902'),
(NULL, '191100113','Ayra', 'Mysha', 'Medan', '80804'),
(NULL, '191100114','Azka', 'Putra', 'Padang', '99993'),
(NULL, '191100115','Tyas', 'Miranda', 'Padang', '99993'),
(NULL, '191100116','Kayle', 'Jane', 'Padang', '99993'),
(NULL, '191100117','Regina', 'Rajendra', 'Padang', '99993');
_5 yang bernama 'Rajend__' kemudian diikuti oleh dua karakter yang tidak diketahui
Misalkan kita mengingat nama belakang seseorang dan melupakan beberapa karakter di akhir nama tersebut, kita dapat menggunakan tanda (_) untuk mencari kemungkinan nama orang tersebut
MariaDB [mahasiswa]> SELECT nama_depan, nama_belakang -> FROM biodata_mahasiswa -> WHERE nama_belakang LIKE 'Rajend__'; +------------+---------------+ | nama_depan | nama_belakang | +------------+---------------+ | Regina | Rajendra | +------------+---------------+
Hasil pencarian di atas menjelaskan bahwa nama belakang adalah Rajend__ diikuti dengan dua karakter huruf yang tidak diketahui, yaitu Rajendra
Operator NOT LIKE MySQL
Not Like Operator Fungsinya hampir sama dengan Like Operator, namun hasil yang diberikan saat menggunakan Not Like Operator merupakan pengecualian dari pola yang ditentukan
Perhatikan contoh berikut
MariaDB [mahasiswa]> SELECT nama_depan -> FROM biodata_mahasiswa -> WHERE nama_depan NOT LIKE 'a%' ; +------------+ | nama_depan | +------------+ | Zoe | | Dwi | | Tyas | | Kayle | | Regina | +------------+
Hasil pencarian di atas menunjukkan nama yang diawali dengan selain huruf 'a'
Setelah memahami penggunaan Operator Like MySQL, materi selanjutnya dilanjutkan dengan pemahaman penggunaan Operator AND & OR pada MySQL