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