delete和truncate区别
mysql清空表语句
truncate table [表名] ; delete from [表名] where …;
相同点
- 两者都是删除表数据 但不会删除表结构
不同点
- 1.delete支持按条件删除,truncate不支持。
- 2.delete 删除后自增列不会重置,而truncate会被重置。
- 3.delete是逐条删除(速度较慢),truncate是整体删除(速度较快)。
- 4.delete删除是一条一条删除,并不会改变表结构,属于dml,而truncate删除表数据是将表删掉,重新新建一张表,属于ddl。
- 5.delete不会释放空间,而truncate会释放空间。
- 6.delete 支持回滚,truncate不支持。
总结
由于delete 是数据操作语言(dml - data manipulation language),操作时原数据会被放到 rollback segment中,可以被回滚;而truncate是数据定义语言(ddl - data definition language),操作时不会进行存储,不能进行回滚。truncate语句实际是删除原来的表然后重新建立一个新表。
注:drop table tablename 会连整个表结构一起删除。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论