### 13.1.32 DROP TABLE 语句

[](<>)[](<>)[](<>)

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

[`删除表`](drop-table.html)删除一个或多个表。你必须拥有[`降低`](privileges-provided.html#priv_drop)每个表的权限。

*当心*有了这个声明！对于每个表，它会删除表定义和所有表数据。如果表已分区，则该语句将删除表定义、其所有分区、存储在这些分区中的所有数据以及与删除的表关联的所有分区定义。

删除表也会删除该表的所有触发器。

[`删除表`](drop-table.html)导致隐式提交，除非与`暂时的`关键词。看[第 13.3.3 节，“导致隐式提交的语句”](implicit-commit.html).

重要的

当一个表被删除时，专门为该表授予的权限是*不是*自动下降。必须手动删除它们。看[第 13.7.1.6 节，“GRANT 声明”](grant.html).

如果参数列表中命名的任何表不存在，[`删除表`](drop-table.html)行为取决于是否`如果存在`子句给出：

-   没有`如果存在`，该语句失败并显示错误，指示它无法删除哪些不存在的表，并且没有进行任何更改。

-   和`如果存在`，不存在的表不会发生错误。该语句删除所有确实存在的命名表，并生成一个`笔记`对每个不存在的表进行诊断。这些注释可以显示为[`显示警告`](show-warnings.html).看[第 13.7.7.42 节，“显示警告声明”](show-warnings.html).

`如果存在`在数据字典中有条目但没有存储引擎管理的表的异常情况下，也可用于删除表。（例如，如果在从存储引擎中删除表之后但在删除数据字典条目之前发生异常的服务器退出。）

这`暂时的`关键字具有以下效果：

-   该声明仅下降`暂时的`表。

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

-   不检查访问权限。一种`暂时的`表仅对创建它的会话可见，因此无需检查。

    包括`暂时的`关键字是防止意外丢弃非`暂时的`表。

    这`严格`和`级联`关键字什么都不做。他们被允许更容易地从其他数据库系统移植。

[`删除表`](drop-table.html)并非所有人都支持[`innodb_force_recovery`](innodb-parameters.html#sysvar_innodb_force_recovery)设置。看[第 15.21.3 节，“强制 InnoDB 恢复”](forcing-innodb-recovery.html).

[](<>)
