文档首页
MySQL 8.4 参考手册
相关文档 下载本手册

MySQL 8.4 参考手册  /  ...  /  DROP TABLE 语句

15.1.32 DROP TABLE 语句

DROP [TEMPORARY] TABLE [IF EXISTS]
    tbl_name [, tbl_name] ...
    [RESTRICT | CASCADE]

DROP TABLE 删除一个或多个表。您必须拥有每个表的 DROP 权限。

注意 使用此语句!对于每个表,它都会删除表定义和所有表数据。如果表已分区,则该语句会删除表定义、所有分区、存储在这些分区中的所有数据以及与已删除表关联的所有分区定义。

删除表还会删除表的任何触发器。

DROP TABLE 会导致隐式提交,除非与 TEMPORARY 关键字一起使用。请参见 第 15.3.3 节,“导致隐式提交的语句”

重要

删除表时,专门授予该表的权限 不会 自动删除。它们必须手动删除。请参见 第 15.7.1.6 节,“GRANT 语句”

如果参数列表中命名的任何表不存在,则 DROP TABLE 的行为取决于是否给出 IF EXISTS 子句

  • 如果没有 IF EXISTS,则该语句将失败并出现错误,指出它无法删除哪些不存在的表,并且不会进行任何更改。

  • 使用 IF EXISTS,对于不存在的表不会出现错误。该语句会删除所有存在的命名表,并为每个不存在的表生成一个 NOTE 诊断信息。这些信息可以通过 SHOW WARNINGS 显示。请参见 第 15.7.7.41 节,“SHOW WARNINGS 语句”

IF EXISTS 也可以用于在数据字典中有条目但存储引擎没有管理表的不寻常情况下删除表。(例如,如果在从存储引擎中删除表后但在从数据字典中删除条目之前服务器异常退出。)

TEMPORARY 关键字具有以下效果:

  • 该语句只删除 TEMPORARY 表。

  • 该语句不会导致隐式提交。

  • 不会检查访问权限。 TEMPORARY 表只对创建它的会话可见,因此无需检查。

包含 TEMPORARY 关键字是一种防止意外删除非 TEMPORARY 表的好方法。

RESTRICTCASCADE 关键字没有任何作用。允许它们是为了便于从其他数据库系统移植。

DROP TABLE 不支持所有 innodb_force_recovery 设置。请参见 第 17.20.3 节,“强制 InnoDB 恢复”