SQL 删除表格

SQL 删除表格

SQL提供了一个命令,可以在数据库中完全删除现有的表。一旦执行了SQL DROP命令,就没有办法恢复表,包括表中的数据,因此在生产系统中执行此命令之前要小心。

SQL DROP表语句

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

注意

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

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

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

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

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

语法

此DROP TABLE语句的基本语法如下−

DROP TABLE table_name;

示例

首先,让我们验证CUSTOMERS表,然后按照以下的方式从数据库中删除它。

Field Type Null Key Default Extra
ID int(11) NO PRI NULL
NAME varchar(20) NO NULL
AGE int(11) NO NULL
ADDRESS char(25) YES NULL
SALARY decimal(18,2) YES NULL

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

DROP TABLE CUSTOMERS;

输出

输出显示如下 –

Query OK, 0 rows affected (0.001 sec)

验证

现在,要验证表是否真的已被删除,您可以使用”DESC CUSTOMERS”命令如下所示-

DESC CUSTOMERS;

显示以下错误−

ERROR 1146 (42S02): Table 'testDB.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 'testDB.CUSTOMERS'

如果您在DROP TABLE语句中使用 IF EXISTS 子句,如下所示,指定的表将被删除,如果给定名称的表不存在,则查询将被忽略。

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

DROP TABLE IF EXISTS CUSTOMERS;

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

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

删除临时表

您可以在DROP TABLE语句中使用 TEMPORARY 关键字,只删除临时表。包含TEMPORARY关键字是防止意外删除非临时表的好方法。

语法

DROP TEMPORARY TABLE TEMP_TABLE;

示例

以下是删除临时表CUSTOMERS的示例。

DROP TEMPORARY TABLE CUSTOMERS;

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程