Mysql---truncate与delete区别

来源:互联网 发布:日本娱乐圈 知乎 编辑:程序博客网 时间:2024/05/16 06:34

DELETE和TRUNCATE TABLE的最大区别是DELETE可以通过WHERE语句选择要删除的记录。但执行得速度不快。而且还可以返回被删除的记录数。而TRUNCATE TABLE无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。

MySQL中有两种方法可以删除数据,一种是MySQL DELETE语句,另一种是MySQL TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。

truncate是数据定义语言,而delete是数据操作语言,并且delete是事务级别的,可以进行回滚,但是truncate不支持事务,一旦执行就不能进行回滚,不支持事务的语句时立即执行,并且执行立即完成,无法回滚。

如果被删除的表中有自增字段,delete的执行就算讲表中的记录全部清除,自增字段的状态也不会改变,在插入数据的时候是根据之前的记录继续自增的,但是truncate则会讲自增字段的起点初始化为1,换句话说,delete只是执行了数据表的删除动作,而truncate是将当前表进行初始化,执行后的效果就像是重新定义了一个表一样。

使用场景:

A.如果要删除表中的部分数据则使用delete

B.如果要删除表中的所有记录但是又想保留表的原有的结构则用truncate

C.如果要删除整个表和表中的记录则用drop

三者的速度比较:drop>truncate>delete

三者的所属范围:drop和truncate属于数据定义语言;delete属于数据操纵语言

0 0