Sepanjang administrasi database, menghapus record/baris yang dianggap sudah tidak perlu merupakan hal yang sering dilakukan.
MySQL menyediakan beberapa cara untuk menghapus record dari tabel. Pada tutorial belajar MySQL kali ini kita akan bahas cara menghapus baris dari tabel MySQL menggunakan query DELETE.
Mempersiapkan Tabel Sample:Â daftar_dosen
Sebagai tabel sample, saya akan memakai tabel daftar_dosen dengan isi tabel seperti pada tabel dibawah.
Jika anda ingin mencoba query pada tutorial ini, silahkan input data tabel ini dengan query INSERT, atau ikuti cara import tabel daftar_dosen seperti di Tutorial Belajar MySQL: Menampilkan Data dari Tabel MySQL (SELECT)
Isi 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 |
Cara Menghapus Record dengan Query DELETE
Untuk penghapusan baris (atau disebut juga dengan record) dalam MySQL, kita memerlukan beberapa syarat, yaitu nama tabel dimana baris tersebut berada serta kondisi untuk penghapusan.
Format dasar penulisan query DELETE adalah sebagai berikut:
DELETE FROM nama_tabel WHERE kondisi
nama_tabel
adalah nama dari tabel yang record/barisnya akan dihapus.kondisi
adalah kondisi baris yang akan dihapus, misalnya hapus kolomnama_dosen = "Sabrina Sari"
.
Langsung saja masuk ke contoh, misalkan kita ingin menghapus record/baris untuk nama dosen Sabrina Sari maka querynya adalah:
mysql> DELETE from daftar_dosen WHERE nama_dosen = 'Sabrina Sari'; Query OK, 1 row affected (1.73 sec)
Kunci dari query DELETE ada di pernyataan kondisi setelah WHERE, yaitu dimana kita memberitahukan MySQL syarat/kondisi yang harus dipenuhi untuk menghapus suatu record.
Kondisi WHERE ini juga mendukung logika OR atau AND untuk proses penghapusan yang lebih kompleks, seperti contoh berikut:
mysql> DELETE from daftar_dosen WHERE nama_dosen = 'Maya Ari Putri' OR nama_dosen='Tia Santrini'; Query OK, 2 rows affected (0.15 sec) mysql> SELECT * FROM daftar_dosen; +------------+---------------+------------+---------+ | NIP_dosen  | nama_dosen   | no_hp     | alamat | +------------+---------------+------------+---------+ | 0275430005 | Susi Indriani | 0812656532 | Bogor  | | 0576431001 | M. Siddiq    | 0812979005 | Jakarta | | 0770435006 | Rubin Hadi   | 0812567678 | Papua  | | 0869437003 | Mustalifah   | 0812338877 | Aceh   | | 1080432007 | Arif Budiman | 0812456345 | Makasar | +------------+---------------+------------+---------+ 5 rows in set (0.06 sec)
Dengan tambahan logika OR seperti dalam query diatas, satu perintah DELETE bisa dipakai untuk menghapus 2 buah baris/record sekaligus.
Dalam manual MySQL, format penulisan lengkap dari query DELETE adalah sebagai berikut :
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
Kita akan bahas penggunaan ORDER BY dan LIMIT sesaat lagi.
Cara Menghapus Record dengan Query DELETE..ORDER BY..LIMIT
MySQL menyediakan kondisi tambahan dengan perintah opsional ORDER BY dan LIMIT.
Perintah ORDER BY dan LIMIT ini sama dengan pembahasan kita pada Tutorial MySQL: Cara Menampilkan data dari tabel dengan query SELECT. ORDER BY dipakai untuk mengurutkan data, sedangkan LIMIT untuk membatasi hasil record.
Perintah opsional ORDER BY dan LIMIT disediakan untuk perintah penghapusan yang lebih spesifik, seperti: hapus 10 baris terakhir dari tabel dimulai dari tanggal transaksi paling awal. Hal ini biasa dilakukan tabel sudah melebihi batas maksimum record.
Sebagai contoh untuk tabel daftar_dosen
, saya ingin "menghapus 3 baris terakhir nama dosen".
Untuk keperluan ini, tabel daftar_dosen harus diurutkan berdasarkan kolom nama_dosen
secara terbalik, lalu hapus 3 record paling awal.
mysql> DELETE FROM daftar_dosen; Query OK, 5 rows affected (0.04 sec) mysql> LOAD DATA INFILE 'D:\\MySQL\\daftar_dosen.txt'    -> INTO TABLE daftar_dosen    -> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'; Query OK, 8 rows affected (0.04 sec) Records: 8 Deleted: 0 Skipped: 0 Warnings: 0 mysql> SELECT * FROM daftar_dosen ORDER BY nama_dosen; +------------+----------------+------------+-----------+ | NIP_dosen | nama_dosen    | no_hp     | alamat   | +------------+----------------+------------+-----------+ | 1080432007 | Arif Budiman  | 0812456345 | Makasar  | | 0576431001 | M. Siddiq     | 0812979005 | Jakarta  | | 0260432002 | Maya Ari Putri | 0812345234 | Palembang | | 0869437003 | Mustalifah    | 0812338877 | Aceh     | | 0770435006 | Rubin Hadi    | 0812567678 | Papua    | | 0160436012 | Sabrina Sari  | 0812349900 | Pekanbaru | | 0275430005 | Susi Indriani | 0812656532 | Bogor    | | 0480432066 | Tia Santrini  | 0812451177 | Padang   | +------------+----------------+------------+-----------+ 8 rows in set (0.00 sec) mysql> DELETE from daftar_dosen ORDER BY nama_dosen DESC LIMIT 3; Query OK, 3 rows affected (0.04 sec) mysql> SELECT * FROM daftar_dosen ORDER BY nama_dosen; +------------+----------------+------------+-----------+ | NIP_dosen | nama_dosen    | no_hp     | alamat   | +------------+----------------+------------+-----------+ | 1080432007 | Arif Budiman  | 0812456345 | Makasar  | | 0576431001 | M. Siddiq     | 0812979005 | Jakarta  | | 0260432002 | Maya Ari Putri | 0812345234 | Palembang | | 0869437003 | Mustalifah    | 0812338877 | Aceh     | | 0770435006 | Rubin Hadi    | 0812567678 | Papua    | +------------+----------------+------------+-----------+ 5 rows in set (0.00 sec)
Karena tabel daftar_dosen hanya tinggal 5 record akibat praktek sebelumnya, maka saya menghapus seluruh record dengan query DELETE FROM daftar_dosen
, lalu menginputnya kembali memakai query LOAD DATA INFILE.
Proses penghapusan dosen memakai perintah DELETE from daftar_dosen ORDER BY nama_dosen DESC LIMIT 3
.
Dengan membandingkan hasil SELECT setelah dan sebelum query DELETE, kita bisa lihat bahwa 3 baris terakhir telah terhapus dari tabel.
Cara Menghapus Seluruh Isi dari Tabel
Untuk keperluan penghapusan seluruh isi dari tabel, cukup jalankan query DELETE tanpa menulis kondisi WHERE. Misalkan untuk menghapus keseluruhan tabel daftar_dosen, querynya adalah:
mysql> DELETE FROM daftar_dosen; Query OK, 5 rows affected (0.04 sec)
Dari query diatas, MySQL juga menampilkan jumlah record/baris yang telah dihapus.
Namun jika informasi mengenai jumlah baris ini tidak kita butuhkan, MySQL menyediakan query TRUNCATE seperti contoh berikut:
mysql> TRUNCATE TABLE daftar_dosen; Query OK, 0 rows affected (0.04 sec) mysql> SELECT * FROM daftar_dosen; Empty set (0.00 sec)
Secara internal, TRUNCATE dijalankan dengan cara menghapus tabel menggunakan query DROP, lalu membuat ulang tabel itu kembali.
Cara ini akan lebih cepat daripada perintah DELETE yang akan menghapus baris satu per satu. Namun perbedaan kecepatan eksekusi baru terasa jika tabel tersebut memiliki jumlah record yang sangat banyak.
Dalam tutorial MySQL kali ini kita telah membahas tentang cara penggunaan query DELETE untuk menghapus data tabel MySQL. Dalam tutorial selanjutnya, akan membahas tentang Cara Memperbaharui / Update data di dalam Tabel MySQL.
mas gmn ya cara nya gabungin 3 tabel jadi satu tp yg tampil sesuai dengan keinginan saya…
pakai aja relasi,
namanya relasi database mas.
cari di gugel
mantap kali gan webnya, btw mampir dong ke web culun ane, minta komennya aja di situ :D
di dalam tabel terdapat beberapa baris kosong itu kenapa ya bang? dan
bagaimana menghapusnya? thanks.
Kosong di tabel MySQL atau sudah berbentuk aplikasi ya (pakai PHP)?. Kalau masih di MySQL, seharusnya tidak bisa diinput baris kosong, minimal harus ada 1 kolom yang terisi. Tapi kalau sudah masuk ke PHP, itu tergantung kode program yang dipakai untuk menampilkan data.