MySQL DROP TABLE 删除表
在本文中,我们介绍了在 MySQL 服务器上如何使用 DROP TABLE
语句删除已有的表。
当我们不需要某个表的时候,我们可以将此表删除。在 MySQL 中,DROP TABLE
语句用来删除表。
注意:DROP TABLE
语句将永久删除表和表中的数据,请谨慎操作。
DROP TABLE
语句语法
以下是 DROP TABLE
语句的基本语法:
DROP TABLE [IF EXISTS]
table_name [, table_name] ...
说明:
-
DROP TABLE
关键字后面是要删除的表名。如果要删除多个表,请使用逗号分隔表名。 -
IF EXISTS
选项避免了删除不存在的表时发生的错误。它是可选的。当要删除的表中有不存在的表时:
- 有
IF EXISTS
选项,不会对不存在的表报错。该语句会删除存在的表,并给出不存在的表的提示。 - 没有
IF EXISTS
选项,该语句运行失败带有一个指示不能移除不存在的表的错误。该语句不会删除任何表。
- 有
-
DROP TABLE
删除表的定义和表中的数据,以及表上触发器。 -
你需要具有要删除的每一个表的
DROP
权限。
DROP TABLE 实例
为了演示 DROP TABLE
用法,我们需要在 testdb
数据库中创建几个表。请跟随以下步骤:
-
使用
root
用户登录 MySQL 数据库:mysql -u root -p
根据提示输入
root
用户的密码。注意:您也可以使用其他任何具有相应的数据库权限的用户登录。
-
使用以下语句选择
testdb
数据库:USE testdb;
如果还未创建
testdb
数据库,请先使用CREATE DATABASE
语句创建数据库:CREATE DATABASE testdb;
-
使用
CREATE TABLE
语句创建实例表。CREATE TABLE test1 ( id INT NOT NULL AUTO_INCREMENT, v VARCHAR(45) NULL, PRIMARY KEY (id));
然后,克隆几个相同定义的表。
CREATE TABLE test2 LIKE test1; CREATE TABLE test3 LIKE test1; CREATE TABLE test4 LIKE test1; CREATE TABLE test5 LIKE test1;
-
查看数据库中所有的表。
SHOW TABLES;
+------------------+ | Tables_in_testdb | +------------------+ | test1 | | test2 | | test3 | | test4 | | test5 | | user | | user_hobby | +------------------+ 7 rows in set (0.00 sec)
现在,演示表已经准备完成,让我们看几个具体的实例。
删除一个表
我们使用以下语句删除 test5
表:
DROP TABLE test5;
Query OK, 0 rows affected (0.01 sec)
这里说明已经成功删除了 test5
表。
我们通过查看数据库的所有的表来验证此 DROP TABLE
操作的结果。
SHOW TABLES;
+------------------+
| Tables_in_testdb |
+------------------+
| test1 |
| test2 |
| test3 |
| test4 |
| user |
| user_hobby |
+------------------+
6 rows in set (0.00 sec)
删除多个表
我们使用以下语句删除 test3
和 test4
表:
DROP TABLE test3, test4;
Query OK, 0 rows affected (0.01 sec)
这里说明已经成功删除了 test3
和 test4
表。
我们通过查看数据库的所有的表来验证此 DROP TABLE
操作的结果。
SHOW TABLES;
+------------------+
| Tables_in_testdb |
+------------------+
| test1 |
| test2 |
| user |
| user_hobby |
+------------------+
4 rows in set (0.00 sec)
删除不存在的表
我们使用以下语句删除 test5
表:
DROP TABLE test5;
ERROR 1051 (42S02): Unknown table 'testdb.test5'
因为我们在前面的实例中已经删除了 test5
表,此时 test5
表是不存在的。所以此语句返回了错误信息。
现在我们使用 IF EXISTS
选项进行删除:
DROP TABLE IF EXISTS test5;
Query OK, 0 rows affected, 1 warning (0.00 sec)
这里我们使用了 IF EXISTS
选项,该语句并没有返回错误。但是,1 warning
表示有一个需要注意的事项。我们可以使用以下语句查看具体的注意事项:
SHOW WARNINGS;
+-------+------+------------------------------+
| Level | Code | Message |
+-------+------+------------------------------+
| Note | 1051 | Unknown table 'testdb.test5' |
+-------+------+------------------------------+
1 row in set (0.00 sec)
这里告诉我们具体的注意事项是:Unknown table 'testdb.test5'
。
我们再看一个列子:
DROP TABLE test2, test5;
ERROR 1051 (42S02): Unknown table 'testdb.test5'
就像前面的例子一样,因为 test5
表是不存在的。所以此语句返回了错误信息。
现在我们使用 IF EXISTS
选项进行删除:
DROP TABLE IF EXISTS test2, test5;
Query OK, 0 rows affected, 1 warning (0.00 sec)
这里我们使用了 IF EXISTS
选项,该语句并没有返回错误。该语句的执行结果是:删除了 test2
表。
我们通过查看数据库的所有的表来验证此 DROP TABLE
操作的结果。
SHOW TABLES;
+------------------+
| Tables_in_testdb |
+------------------+
| test1 |
| user |
| user_hobby |
+------------------+
3 rows in set (0.00 sec)
可见,DROP TABLE
语句中带上 IF EXISTS
选项,它会忽略不存在表,并删除存在的表。
结论
在本文中,我们讨论了在 MySQL 中使用 DROP TABLE
语句删除表。本文要点如下:
DROP TABLE
关键字后面是要删除的表名。如果要删除多个表,请使用逗号分隔表名。IF EXISTS
选项避免了删除不存在的表时发生的错误。它是可选的。
始终需要注意的是:DROP TABLE
语句会物理删除表和表中的数据。这个操作不能撤销,请谨慎操作。