- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL 查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查询
- SQL - 删除查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION 与 UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接与右连接
- SQL - Union 与 Join
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 复合键
- SQL - 备用键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 集群索引
- SQL - 非集群索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - Min & Max
- SQL - 空函数
- SQL - 检查约束
- SQL - 默认约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - Group By 与 Order By
- SQL - IN 与 EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- 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;
示例
假设我们使用 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;