Belajar MySQL Part 21 : Menghapus Baris dari Table MySQL (DELETE)
Dalam administrasi database, penghapusan record/baris yang dianggap sudah tidak diperlukan lagi merupakan hal yang sering dilakukan. MySQL menyediakan beberapa cara untuk menghapus record dari tabel. Pada tutorial belajar MySQL kali ini kita akan mempelajari cara menghapus baris dari tabel MySQL menggunakan query DELETE.
Mempersiapkan Table Sample : daftar_dosen
Sebagai tabel sample, saya akan menggunakan tabel daftar_dosen dengan isi tabel seperti tertera pada tabel dibawah. Jika anda ingin mencoba query pada tutorial ini, silahkan input data tabel tersebut dengan query INSERT, atau ikuti cara import tabel daftar_dosen seperti pada Menampilkan Data dari Tabel MySQL (SELECT)
Kunci dari query DELETE adalah pernyataan kondisi setelah WHERE, yaitu dimana kita memberitahukan kepada MySQL syarat/kondisi yang harus dipenuhi untuk menghapus suatu record. Kondisi ini juga mendukung logika OR atau AND untuk penghapusan yang lebih kompleks, seperti contoh berikut:
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 digunakan untuk mengurutkan data, sedangkan LIMIT digunakan untuk membatasi hasil record.
Perintah opsional ORDER BY dan LIMIT disediakan untuk perintah penghapusan yang lebih spesifik, misalkan: hapus 10 baris terakhir dari tabel dimulai dari tanggal transaksi paling awal. Hal ini biasanya dilakukan jika kita tabel yang regular di hapus jika telah melebihi batas maksimum record.
Sebagai contoh untuk tabel daftar_dosen, misalkan kita ingin menghapus 3 baris terakhir dari tabel daftar_dosen yang dimulai dari abjad terakhir dari nama dosen. Untuk keperluan ini, pertama-tama kita harus mengurutkan tabel daftar_dosen dengan menggunakan kolom nama dosen secara terbalik, lalu menghapus 3 record paling awal.
Karena tabel contoh daftar_dosen hanya tinggal berisi 5 record, maka saya menghapus seluruh record dengan query DELETE, lalu menginputnya lagi menggunakan query LOAD DATA INFILE.
Sebelum query DELETE ORDER BY LIMIT, saya menampilkan seluruh tabel dengan perintah SELECT dan mengurutkannya berdasarkan kolom nama_dosen. Dengan membandingkan hasil SELECT setelah dan sebelum query DELETE ORDER BY LIMIT, kita dapat melihat bahwa 3 baris terakhir telah terhapus dari tabel.
Menghapus Seluruh Isi dari Table
Untuk keperluan penghapusan seluruh isi dari tabel, cukup menggunakan query DELETE tanpa mencantumkan kodisi WHERE. Misalkan untuk menghapus keseluruhan tabel daftar_dosen, querynya adalah:
Dari query diatas, MySQL juga menampilkan jumlah record/baris yang telah dihapus, hal ini cukup berguna sebagai informasi kepada pengguna.
Namun jika informasi tersebut tidak kita butuhkan, MySQL menyediakan query TRUNCATE seperti contoh berikut:
Secara internal, TRUNCATE dijalankan dengan cara menghapus tabel menggunakan DROP, lalu membuat ulang tabel itu kembali. Cara ini akan lebih cepat dari pada perintah DELETE yang menghapus baris satu persatu. Perbedaan kecepatan eksekusi ini baru terasa jika tabel tersebut memiliki jumlah record yang banyak.
Dalam tutorial MySQL kali ini kita telah membahas tentang cara penggunaan query DELETE untuk menghapus data tabel MySQL. Dalam tutorial selanjutnya, kita akan membahas tentang Cara Memperbaharui / Update data di dalam Tabel MySQL.
Mempersiapkan Table Sample : daftar_dosen
Sebagai tabel sample, saya akan menggunakan tabel daftar_dosen dengan isi tabel seperti tertera pada tabel dibawah. Jika anda ingin mencoba query pada tutorial ini, silahkan input data tabel tersebut dengan query INSERT, atau ikuti cara import tabel daftar_dosen seperti pada Menampilkan Data dari Tabel MySQL (SELECT)
Table Daftar_dosen
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 atau record tersebut berada, dan kondisi untuk penghapusan tersebut.
Format Penulisan Query DELETE adalah :
DELETE FROM nama_tale WHERE kondisi
- nama_tabel adalah nama dari tabel yang record/barisnya akan dihapus
- kondisi adalah kodisi baris yang akan dihapus, misalnya hapus kolom dimana nama dosen = Sabrina Sari
Langsung saja dengan contoh, misalkan kita ingin menghapus record/baris untuk nama dosen Sabrina Sari maka querynya:
DELETE FROM daftar_dosen WHERE nama_dosen = 'Sabrina Sari' ;
Kunci dari query DELETE adalah pernyataan kondisi setelah WHERE, yaitu dimana kita memberitahukan kepada MySQL syarat/kondisi yang harus dipenuhi untuk menghapus suatu record. Kondisi ini juga mendukung logika OR atau AND untuk penghapusan yang lebih kompleks, seperti contoh berikut:
DELETE FROM daftar_dosen WHERE nama_dosen ='Maya Ari Putri' OR nama_dosen = 'Tia Santrini ';
Dengan menggunakan logika OR seperti dalam query diatas, dengan satu perintah DELETE kita menghapus 2 buah baris/record sekaligus.
Peringatan !Dalam manual MySQL, format penulisan lengkap dari query DELETE adalah :
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
Kita akan membahas 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 digunakan untuk mengurutkan data, sedangkan LIMIT digunakan untuk membatasi hasil record.
Perintah opsional ORDER BY dan LIMIT disediakan untuk perintah penghapusan yang lebih spesifik, misalkan: hapus 10 baris terakhir dari tabel dimulai dari tanggal transaksi paling awal. Hal ini biasanya dilakukan jika kita tabel yang regular di hapus jika telah melebihi batas maksimum record.
Sebagai contoh untuk tabel daftar_dosen, misalkan kita ingin menghapus 3 baris terakhir dari tabel daftar_dosen yang dimulai dari abjad terakhir dari nama dosen. Untuk keperluan ini, pertama-tama kita harus mengurutkan tabel daftar_dosen dengan menggunakan kolom nama dosen secara terbalik, lalu menghapus 3 record paling awal.
mysql> DELETE FROM daftar_dosen;
Query OK, 5 rows affected (0.04 sec)
mysql> LOAD DATA INFILE '//home//forbidden//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 contoh daftar_dosen hanya tinggal berisi 5 record, maka saya menghapus seluruh record dengan query DELETE, lalu menginputnya lagi menggunakan query LOAD DATA INFILE.
Sebelum query DELETE ORDER BY LIMIT, saya menampilkan seluruh tabel dengan perintah SELECT dan mengurutkannya berdasarkan kolom nama_dosen. Dengan membandingkan hasil SELECT setelah dan sebelum query DELETE ORDER BY LIMIT, kita dapat melihat bahwa 3 baris terakhir telah terhapus dari tabel.
Menghapus Seluruh Isi dari Table
Untuk keperluan penghapusan seluruh isi dari tabel, cukup menggunakan query DELETE tanpa mencantumkan kodisi WHERE. Misalkan untuk menghapus keseluruhan tabel daftar_dosen, querynya adalah:
DELETE FROM daftar_dosen;
Dari query diatas, MySQL juga menampilkan jumlah record/baris yang telah dihapus, hal ini cukup berguna sebagai informasi kepada pengguna.
Namun jika informasi tersebut tidak kita butuhkan, MySQL menyediakan query TRUNCATE seperti contoh berikut:
TRUNCATE TABLE daftar_dosen ;
SELECT * FROM daftar_dosen;
Secara internal, TRUNCATE dijalankan dengan cara menghapus tabel menggunakan DROP, lalu membuat ulang tabel itu kembali. Cara ini akan lebih cepat dari pada perintah DELETE yang menghapus baris satu persatu. Perbedaan kecepatan eksekusi ini baru terasa jika tabel tersebut memiliki jumlah record yang banyak.
Dalam tutorial MySQL kali ini kita telah membahas tentang cara penggunaan query DELETE untuk menghapus data tabel MySQL. Dalam tutorial selanjutnya, kita akan membahas tentang Cara Memperbaharui / Update data di dalam Tabel MySQL.
No comments