Cara Menghapus Tabel dan Database MySQL


Di MySQL untuk menghapus database berseta tabel didalamnya atau hanya menghapus tabel dari sebuah database kita dapat menggunakan statement drop yang dapat digunakan untuk kedua hal tersebut untuk itu anda harus berhati-hati dalam menggunakan statement drop agar tidak salah menghapus database/tabel. Berikut adalah penjabaran, format dan contohnya.

Menghapus Database MySQL
Saat kalian memutuskan untuk menghapus sebuah database, pastikan database dan tabel didalamnya memang sudah tidak dibutuhkan lagi atau kalian dapat membuat cadangan (backup)nya terlebih dahulu sehingga ketika masih membutuhkannya lagi disuatu hari nanti kalian masih memiliki cadangan dari database yang akan dihapus tersebut. Berikut adalah format dan contoh menghapus database di MySQL.

Format:

drop table nama_tabel;

Contoh:

mysql> create database coba;
Query OK, 1 row affected (0.02 sec)
mysql> drop database coba;
Query OK, 0 rows affected (0.07 sec)

Menghapus Tabel MySQL
Statement drop juga dapat digunakan untuk menghapus sebuah tabel pada sebuah database. Berikut adalah format dan contoh penggunaan statement drop table.

Format:

drop table nama_tabel;

Contoh

mysql> create table mahasiswa (id_mhs int primary key auto_increment, nama varchar(65), npm varchar(8), j_kelamin enum ("L", "P"), alamat varchar(65), kota varchar(65), email varchar(50));
Query OK, 0 rows affected (0.12 sec)
mysql> drop table mahasiswa;
Query OK, 0 rows affected (0.11 sec)

Untuk menghapus beberapa tabel sekaligus, cukup dengan memisahkannya dengan tanda koma seperti contoh berikut:

mysql> show tables;
+-------------------+
| Tables_in_latihan |
+-------------------+
| dosen             |
| gaji              |
+-------------------+
2 rows in set (0.02 sec)

mysql> drop table dosen, gaji;
Query OK, 0 rows affected (0.21 sec)

Jika tabel yang akan dihapus tidak memiliki relasi maka kita bisa langsung menjalankan statement drop table, namun jika table yang akan dihapus memiliki relasi maka kita tidak dapat langsung menghapus tabel parent seperti contoh berikut:

mysql> desc dosen;
+----------+---------------+------+-----+---------+----------------+
| Field    | Type          | Null | Key | Default | Extra          |
+----------+---------------+------+-----+---------+----------------+
| id_dosen | int           | NO   | PRI | NULL    | auto_increment |
| nid      | char(8)       | YES  | UNI | NULL    |                |
| nama     | varchar(65)   | YES  |     | NULL    |                |
| j_kel    | enum('L','P') | YES  |     | NULL    |                |
| t_lahir  | date          | YES  |     | NULL    |                |
| alamat   | varchar(50)   | YES  |     | NULL    |                |
| kota     | varchar(50)   | YES  |     | NULL    |                |
| telepon  | char(12)      | YES  |     | NULL    |                |
| email    | varchar(50)   | YES  |     | NULL    |                |
+----------+---------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)

mysql> desc gaji;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id_gaji    | int         | NO   | PRI | NULL    | auto_increment |
| dosen_id   | int         | YES  | MUL | NULL    |                |
| kontrak    | char(9)     | YES  |     | NULL    |                |
| gaji_pokok | varchar(14) | YES  |     | NULL    |                |
| tunjangan  | varchar(14) | YES  |     | NULL    |                |
| lembur     | varchar(14) | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

mysql> drop table dosen;
ERROR 3730 (HY000): Cannot drop table 'dosen' referenced by a foreign key constraint 'gaji_dosen' on table 'gaji'.

Untuk mengatasi hal tersebut, sebelum menghapus tabel parent kita perlu menghapus foreign key terlebih dahulu atau bisa juga dengan langsung menghapus child table jika memang keduanya sudah tidak diperlukan. Selain cara tersebut untuk menghapus tabel yang memiliki relasi adalah dengan menonaktifkan (disable) foreign key checks seperti contoh berikut:

mysql> drop table dosen;
ERROR 3730 (HY000): Cannot drop table 'dosen' referenced by a foreign key constraint 'fk_dosen' on table 'gaji'.

mysql> set foreign_key_checks = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> drop table dosen;
Query OK, 0 rows affected (0.15 sec)

Dengan cara menonaktifkan foreign key checks maka kita tidak perlu menghapus child table / foreign key terlebih dahulu karena mysql akan melewati pengecekan foreign key, namun pastikan kalian tidak salah menghapus tabel saat foreign key checks di nonaktifkan.

Menghilangkan error dan menghapus beberapa database/tabel sekaligus
Saat akan menghapus database ataupun tabel, kita juga dapat menambahkan kondisi if exists dimana biasanya hanya untuk menghilangkan pesan error jika database maupun tabel yang akan dihapus tidak ada. Format dan contohnya sebagai berikut:
Format:

drop table if exists nama_tabel;
drop table if exists tabel1, tabel2, tabelN;
Contoh:

mysql> drop table if exists mahasiswa;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> drop table mahasiswa;
ERROR 1051 (42S02): Unknown table 'latihan2.mahasiswa'

Pada contoh diatas jika kita tidak menggunakan fungsi if exists maka akan menampilkan pesan error 1051 namun jika kita menggunakan fungsi exists maka pesan error tersebut sebenarnya hanya diganti menjadi pesan peringatan. Kita tidak dapat menggunakan if exists pada tabel yang memiliki relasi dan tetap akan menampilkan error 3730.
Bayu Radityo

Seorang lulusan teknik informatika yang senang dalam berbagi ilmu pengetahuan, dan membuat karya digital berupa photomanipulation dan digital drawing. instagram external-link

Posting Komentar

Lebih baru Lebih lama