Mysql 简明教程

MySQL - Drop Tables

The MySQL DROP TABLE statement

DROP TABLE 语句是数据定义语言 (DDL) 命令,用于删除表的定义,及其数据、索引、触发器、约束和权限规范(如果任何)。简单来说,此语句会从数据库中删除整个表。

但是,在使用 DROP TABLE 命令时,我们需要注意到以下内容 -

  1. 使用此命令时应非常小心,因为在删除表后,此表中可用的所有信息也将永久丢失。

  2. 想要在数据库中删除表,必须有指定表上的 ALTER 权限和表架构上的 CONTROL 权限。

  3. 虽然它是一条数据定义语言命令,但它不同于 TRUNCATE TABLE 语句,因为 DROP 语句从数据库中彻底删除了表。

Syntax

以下是 MySQL DROP TABLE 语句的语法 -

DROP TABLE table_name ;

Dropping Tables from a database

为了从数据库中删除表,我们需要使用 MySQL DROP TABLE 命令。但在删除之前,我们必须确保表存在于数据库中。如果我们尝试删除数据库中不存在的表,将引发一个错误。

Example

让我们先通过执行以下语句创建 TUTORIALS 数据库 -

CREATE DATABASE TUTORIALS;

使用以下查询,将 TUTORIALS 修改为数据库 -

USE TUTORIALS;

使用以下 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)
);

为了验证上面创建的内容是否在 TUTORIALS 数据库中,执行以下 SHOW TABLES 命令 -

SHOW TABLES IN TUTORIALS;

正如我们在下面给出的输出中看到,CUSTOMERS 表已在 TUTORIALS 数据库中创建。

现在,让我们使用 MySQL DROP TABLE 语句删除上面创建的 CUSTOMERS 表 -

DROP TABLE CUSTOMERS;

Output

执行上述查询将产生以下输出:

Query OK, 0 rows affected (0.02 sec)

Verification

由于我们已经删除了 CUSTOMERS 表,如果我们尝试使用“SHOW TABLES”查询再次验证表列表的,它将显示下面的 Empty Set -

Empty set (0.00 sec)

The IF EXISTS clause

而不是在删除表之前一直检查它是否存在于数据库中,我们可以将 IF EXISTS 子句和 DROP TABLE 语句一起使用。

当我们在 DROP TABLE 查询中指定此子句时,它将自动验证表是否存在于当前数据库中。如果存在,它将删除表。如果表不存在,该查询将被忽略。

Syntax

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

DROP TABLE [IF EXISTS] table_name;

Example

在这里,我们只使用 DROP TABLE 语句删除已经在上个示例中删除的 CUSTOMERS 表。

DROP TABLE CUSTOMERS;

Output

由于我们没有使用 IF EXISTS 和 DROP TABLE 命令,它将显示如下错误 -

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

Example

如果我们尝试删除数据库中不存在的 CUSTOMERS,使用 IF EXISTS 子句时,该查询将被忽略而不发出任何错误 -

DROP TABLE IF EXISTS CUSTOMERS;

执行上述查询将产生以下输出:

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

Dropping Table Using a Client Program

除了使用 MySQL 查询从 MySQL 数据库中删除表以外,还可以使用客户端程序对表执行 DROP TABLE 操作。

Syntax

以下是使用各种编程语言从 MySQL 中删除表的语法:

Example

以下是这些程序 −