文章目录
前言
在 MySQL 中,TRUNCATE TABLE 是一种用于快速清空表数据的命令,属于 DDL(数据定义语言) 操作,而不是 DML(数据操作语言)。它的执行效率通常比 DELETE 更高,因为它不是逐行删除,而是直接释放数据页并重新创建表结构。
用法
语法结构:
sql
TRUNCATE TABLE table_name;
当我们需要将大数据量的数据库表中所有数据全部删除时,此时如果使用delete执行时间会非常慢,使用TRUNCATE TABLE table_name命令快速清空数据库表
与DELETE的区别
- DELETE:属于 DML(数据操纵语言),是有条件的删除数据行,本质是 "逐行删除",可以通过 WHERE 子句指定删除范围,也可以不加 WHERE 删除全表数据。
- TRUNCATE TABLE:属于 DDL(数据定义语言),是清空整张表,本质是 "重置表"------ 它会删除表中所有数据,重置自增列(如 AUTO_INCREMENT),并释放数据占用的存储空间。
适用场景
用 DELETE:
- 需要删除部分数据(如删除某个用户的记录);
- 需要触发删除触发器;
- 操作后可能需要回滚(如事务内操作)。
用 TRUNCATE TABLE:
- 需要快速清空整张表(如测试环境重置数据);
- 需要重置自增列;
- 对执行效率要求高(数据量越大,TRUNCATE 优势越明显)。
总结
DELETE 是逐行删除,可带 WHERE 条件,支持事务回滚,并触发触发器。
TRUNCATE 删除所有数据,不支持条件过滤,不可回滚,且速度更快。