在 MySQL 中,使用 truncate、delete 和 drop 都可以实现表删除,但它们 3 个的使用场景和执行效果完全不同,接下来我们来盘点一下。
truncate、delete、drop区别概述
它们 3 个的区别如下表所示:
区别点 |
drop |
truncate |
delete |
执行速度 |
快 |
较快 |
慢 |
命令分类 |
DDL(数据定义语言) |
DDL(数据定义语言) |
DML(数据操作语言) |
删除对象 |
删除整张表和表结构,以及表的索引、约束和触发器。 |
只删除表数据,表的结构、索引、约束等会被保留。 |
只删除表的全部或部分数据,表结构、索引、约束等会被保留。 |
删除条件(where) |
不能用 |
不能用 |
可使用 |
回滚 |
不可回滚 |
不可回滚 |
可回滚 |
自增初始值 |
- |
重置 |
不重置 |