- 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 - BOOLEAN (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 vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接 vs 右连接
- SQL - Union vs 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 vs Order By
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - 截断表
SQL 提供命令来完全截断表,一次性完成,而不是逐条删除表记录,这将是一个非常耗时且繁琐的过程。
SQL TRUNCATE TABLE 语句
SQL 的 TRUNCATE TABLE 命令用于清空表。此命令是 DROP TABLE 和 CREATE TABLE 语句的序列,需要 DROP 权限。
您还可以使用 DROP TABLE 命令来 删除表,但它会从数据库中删除完整的表结构,如果您希望再次存储一些数据,则需要重新创建此表。
语法
TRUNCATE TABLE 命令的基本语法如下所示。
TRUNCATE TABLE table_name;
示例
首先,让我们创建一个名为 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) );
现在使用 INSERT 语句将值插入此表,如下所示:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
表将创建如下:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
以下 SQL TRUNCATE TABLE CUSTOMER 语句将删除 CUSTOMERS 表的所有记录:
TRUNCATE TABLE CUSTOMERS;
验证
现在,CUSTOMERS 表已被截断,SELECT 语句的输出将如以下代码块所示:
SELECT * FROM CUSTOMERS;
输出如下:
Empty set (0.00 sec)
TRUNCATE vs DELETE
尽管 TRUNCATE 和 DELETE 命令在逻辑上工作方式相似,但它们之间存在一些主要差异。它们在下面的表格中详细说明。
DELETE | TRUNCATE |
---|---|
SQL 中的 DELETE 命令 根据 WHERE 子句中指定的条件删除表中的一行或多行。 |
SQL 的 TRUNCATE 命令用于删除表中的所有行,无论是否满足任何条件。 |
它是 DML(数据操纵语言)命令。 |
它是 DDL(数据定义语言)命令。 |
在对 DELETE 命令进行更改后,需要手动提交才能提交修改。 |
使用 TRUNCATE 命令时,对表的修改会自动提交。 |
它一次删除一行,并对每次删除应用相同的标准。 |
它一次删除所有信息。 |
WHERE 子句在这种情况下充当条件。 |
WHERE 子句不可用。 |
删除后所有行都被锁定。 |
TRUNCATE 使用表锁,锁定页面以防止删除。 |
它在日志文件中记录每个事务。 |
仅记录存储数据的页面的释放。 |
与 TRUNCATE 命令相比,它消耗更多的事务空间。 |
它占用的事务空间相对较少。 |
如果存在标识列,则表标识不会重置为表创建时的值。 |
它将表标识返回到作为种子给定的值。 |
它需要删除授权。 |
它需要表更改权限。 |
对于大型数据库,它要慢得多。 |
它快得多。 |
TRUNCATE vs DROP
与重置表结构的 TRUNCATE 不同,DROP 命令 完全释放内存中的表空间。它们都是数据定义语言 (DDL) 操作,因为它们与数据库对象的定义交互;这允许数据库在执行这些命令后自动提交,并且没有回滚的机会。
但是,这两个命令之间仍然存在一些差异,这些差异已在以下表格中总结:
DROP | TRUNCATE |
---|---|
SQL 中的 DROP 命令从数据库中删除整个表,包括其定义、索引、约束、数据等。 |
TRUNCATE 命令用于删除表中的所有行,无论是否满足任何条件,并重置表定义。 |
它是 DDL(数据定义语言)命令。 |
它也是 DDL(数据定义语言)命令。 |
表空间完全从内存中释放。 |
表仍然存在于内存中。 |
所有完整性约束都被删除。 |
完整性约束仍然存在于表中。 |
分别需要表架构和表的 ALTER 和 CONTROL 权限才能执行此命令。 |
只需要 ALTER 权限即可截断表。 |
DROP 命令比 TRUNCATE 慢得多,但比 DELETE 快。 |
TRUNCATE 命令比 DROP 和 DELETE 命令都快。 |