在MySQL 中,當(dāng)需要刪除已創(chuàng)建的數(shù)據(jù)庫時,可以使用 DROP DATABASE 語句。其語法格式為:
DROP DATABASE [ IF EXISTS ]
語法說明如下:
:指定要刪除的數(shù)據(jù)庫名。
IF EXISTS:用于防止當(dāng)數(shù)據(jù)庫不存在時發(fā)生錯誤。
DROP DATABASE:刪除數(shù)據(jù)庫中的所有表格并同時刪除數(shù)據(jù)庫。使用此語句時要非常小心,以免錯誤刪除。如果要使用 DROP DATABASE,需要獲得數(shù)據(jù)庫 DROP 權(quán)限。
注意:MySQL 安裝后,系統(tǒng)會自動創(chuàng)建名為 information_schema 和 mysql 的兩個系統(tǒng)數(shù)據(jù)庫,系統(tǒng)數(shù)據(jù)庫存放一些和數(shù)據(jù)庫相關(guān)的信息,如果刪除了這兩個數(shù)據(jù)庫,MySQL 將不能正常工作。
例 1
下面在 MySQL 中創(chuàng)建一個測試數(shù)據(jù)庫 test_db_del。
mysql> CREATE DATABASE test_db_del;
Query OK, 1 row affected (0.08 sec)
mysql> SHOW DATABASES;
+--------------------+
Database
+--------------------+
information_schema
mysql
performance_schema
sakila
sys
test_db
test_db_char
test_db_del
world
+--------------------+
9 rows in set (0.00 sec)
使用命令行工具將數(shù)據(jù)庫 test_db_del 從數(shù)據(jù)庫列表中刪除,輸入的 SQL 語句與執(zhí)行結(jié)果如下所示:
mysql> DROP DATABASE test_db_del;
Query OK, 0 rows affected (0.57 sec)
mysql> SHOW DATABASES;
+--------------------+
Database
+--------------------+
information_schema
mysql
performance_schema
sakila
sys
test_db
test_db_char
world
+--------------------+
8 rows in set (0.00 sec)
此時數(shù)據(jù)庫 test_db_del 不存在。再次執(zhí)行相同的命令,直接使用 DROP DATABASE test_db_del,系統(tǒng)會報(bào)錯,如下所示:
mysql> DROP DATABASE test_db_del;
ERROR 1008 (HY000): Can't drop database 'test_db_del'; database doesn't exist
如果使用IF EXISTS從句,可以防止系統(tǒng)報(bào)此類錯誤,如下所示:
mysql> DROP DATABASE IF EXISTS test_db_del;
Query OK, 0 rows affected, 1 warning (0.00 sec)
使用 DROP DATABASE 命令時要非常謹(jǐn)慎,在執(zhí)行該命令后,MySQL 不會給出任何提示確認(rèn)信息。DROP DATABASE 刪除數(shù)據(jù)庫后,數(shù)據(jù)庫中存儲的所有數(shù)據(jù)表和數(shù)據(jù)也將一同被刪除,而且不能恢復(fù)。因此最好在刪除數(shù)據(jù)庫之前先將數(shù)據(jù)庫進(jìn)行備份。備份數(shù)據(jù)庫的方法會在教程后面進(jìn)行講解。