SQL - 删除表



SQL 提供命令来完全删除数据库中现有的表。一旦发出 SQL DROP 命令,就无法恢复该表,包括其数据,因此在生产系统中发出此命令之前要小心。

SQL DROP 表语句

SQL 的 **DROP TABLE** 语句是数据定义语言 (DDL) 命令,用于删除表的定义及其数据、索引、触发器、约束和权限规范(如果有)。

**注意** -

  • 使用此命令时要非常小心,因为一旦删除了表,该表中所有可用信息也将永远丢失。

  • 如果表已分区,则该语句将删除表定义、其所有分区、存储在这些分区中的所有数据以及所有分区定义。

  • 要在数据库中删除表,必须对该表具有 ALTER 权限,对表模式具有 CONTROL 权限。

  • 尽管它是一个数据定义语言命令,但它与 TRUNCATE TABLE 语句不同,因为 DROP 语句完全释放了表占用的内存。

  • DROP TABLE 会导致隐式提交,除非与 TEMPORARY 关键字一起使用。

语法

此 DROP TABLE 语句的基本语法如下所示 -

DROP TABLE table_name;

示例

假设我们使用 CREATE TABLE 语句创建了一个名为 CUSTOMERS 的表,如下所示 -

CREATE TABLE CUSTOMERS(
   ID          INT NOT NULL,
   NAME        VARCHAR (20) NOT NULL,
   AGE         INT NOT NULL,
   ADDRESS     CHAR (25),
   SALARY      DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

让我们首先使用 DESC 命令验证 CUSTOMERS 表,然后将其从数据库中删除 -

DESC Table

如果表已成功创建,则 DESC 命令将显示表的结构,如下所示 -

字段 类型 默认值 额外
ID int(11) PRI NULL
NAME varchar(20) NULL
AGE int(11) NULL
ADDRESS char(25) NULL
SALARY decimal(18,2) NULL

这意味着 CUSTOMERS 表存在于数据库中,因此让我们现在将其删除,如下所示。

DROP TABLE CUSTOMERS;

输出

输出如下所示 -

Query OK, 0 rows affected (0.001 sec)

验证

现在,要验证表是否已实际删除,可以使用 DESC CUSTOMERS 命令,如下所示 -

DESC CUSTOMERS;

显示以下错误 -

ERROR 1146 (42S02): Table 'tutorials.CUSTOMERS' doesn't exist
使用 SQL DROP 命令删除 MySQL 表时,专门授予该表的权限不会自动删除。它们必须手动删除。

IF EXISTS 子句

您可以使用 DROP TABLE 语句中的 IF EXISTS 子句,而不是始终检查表在数据库中是否存在然后再删除它。

此子句在 DROP TABLE 查询中指定时,将自动检查表是否存在于当前数据库中,如果存在则将其删除。如果表不存在于数据库中,则将忽略该查询。

语法

以下是 DROP TABLE IF EXISTS 的基本语法 -

DROP TABLE [IF EXISTS] table_name;

示例

如果您尝试删除数据库中不存在的表,而不使用 IF EXISTS 子句,如下所示 -

DROP TABLE CUSTOMERS;

将生成错误 -

ERROR 1051 (42S02): Unknown table 'tutorials.CUSTOMERS'

如果您将 **IF EXISTS** 子句与 DROP TABLE 语句一起使用,如下所示,则将删除指定的表,如果数据库中不存在具有给定名称的表,则将忽略该查询。

但是,如果您尝试删除数据库中不存在的表,使用 IF EXISTS 子句,如下所示 -

DROP TABLE IF EXISTS CUSTOMERS;

该查询将被忽略,并显示以下输出 -

Query OK, 0 rows affected, 1 warning (0.001 sec)

DROP - 临时表

您可以将 **TEMPORARY** 关键字与 DROP TABLE 语句一起使用,这将仅删除临时表。包含 TEMPORARY 关键字是防止意外删除非临时表的好方法。

语法

DROP TEMPORARY TABLE TEMP_TABLE;

示例

以下是如何删除名为 CUSTOMERS 的临时表的示例。

DROP TEMPORARY TABLE CUSTOMERS;
广告
© . All rights reserved.