DROP TABLE

DROP TABLE 语句用于从当前所选的数据库中删除表。如果表不存在则会报错,除非使用 IF EXISTS 修饰符。

语法图

DropTableStmt

DROP TABLE - 图1

OptTemporary

DROP TABLE - 图2

TableOrTables

DROP TABLE - 图3

TableNameList

DROP TABLE - 图4

  1. DropTableStmt ::=
  2. 'DROP' OptTemporary TableOrTables IfExists TableNameList RestrictOrCascadeOpt
  3. OptTemporary ::=
  4. ( 'TEMPORARY' | ('GLOBAL' 'TEMPORARY') )?
  5. TableOrTables ::=
  6. 'TABLE'
  7. | 'TABLES'
  8. TableNameList ::=
  9. TableName ( ',' TableName )*

删除临时表

删除普通表和临时表的用法如下:

  • DROP TEMPORARY TABLE 只能删除本地临时表
  • DROP GLOBAL TEMPORARY TABLE 只能删除全局临时表
  • DROP TABLE 可以删除普通表或临时表

示例

  1. CREATE TABLE t1 (a INT);
  1. Query OK, 0 rows affected (0.11 sec)
  1. DROP TABLE t1;
  1. Query OK, 0 rows affected (0.22 sec)
  1. DROP TABLE table_not_exists;
  1. ERROR 1051 (42S02): Unknown table 'test.table_not_exists'
  1. DROP TABLE IF EXISTS table_not_exists;
  1. Query OK, 0 rows affected, 1 warning (0.01 sec)
  1. SHOW WARNINGS;
  1. +-------+------+---------------------------------------+
  2. | Level | Code | Message |
  3. +-------+------+---------------------------------------+
  4. | Note | 1051 | Unknown table 'test.table_not_exists' |
  5. +-------+------+---------------------------------------+
  6. 1 row in set (0.01 sec)
  1. CREATE VIEW v1 AS SELECT 1;
  1. Query OK, 0 rows affected (0.10 sec)
  1. DROP TABLE v1;
  1. Query OK, 0 rows affected (0.23 sec)

MySQL 兼容性

  • 目前 RESTRICTCASCADE 仅在语法上支持。

另请参阅