网络数据

当前位置:永利402游戏网站-永利402com官方网站 > 网络数据 > mysql清空表数据的两种方式和区别解析_Mysql_脚本

mysql清空表数据的两种方式和区别解析_Mysql_脚本

来源:http://www.xtcsyb.com 作者:永利402游戏网站-永利402com官方网站 时间:2019-11-25 15:10

在MySQL中删除数据有两种方式:

转自:

truncate属于粗暴型的清空 delete属于精细化的删除

Mysql清空表(truncate)与删除表中数据(delete)的区别

删除操作

为某基于wordpress搭建的博客长久未除草,某天升级的时候发现已经被插入了几万条垃圾留言,如果一条条删除那可真是累人的活。遂考虑直接进入mysql直接清空表或者删除表中数据。

如果你需要清空表里的所有数据,下面两种均可:

本文记录一下这2种操作模式的区别,目标对象是表wp_comments,里面的所有留言均是垃圾留言,均可删除。然后便有了以下2种方式(进入mysql操作界面后):

delete from tablename;truncate table tablename;

truncatetable wp_comments;

而如果你只是删除一部分数据,就只能使用delete:

delete* from wp_comments;

delete from tablename where case1 and case2;

其中truncate操作中的table可以省略,delete操作中的*可以省略。这两者都是将wp_comments表中数据清空,不过也是有区别的,如下:

区别

truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。

在精细化的删除部分数据时,只能使用delete。而清空所有表数据时,两者均可,此时这两种方式有一定的区别:

truncate不写服务器log,delete写服务器log,也就是truncate效率比delete高的原因。

返回值

truncate不激活trigger(触发器),但是会重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID数。而delete删除以后,Identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。

truncate返回值为0,而delete会返回被删除的记录数

如果只需删除表中的部分记录,只能使用DELETE语句配合where条件。 DELETE FROM wp_comments WHERE……

mysql> truncate serviceHost;Query OK, 0 rows affected mysql> delete from serviceHost where creator='test';Query OK, 4 rows affected 

全文完。

自增字段

如果表中有自增字段,truncate会重置为1,而delete会保持自增的最大值。

执行效率

truncate不扫描表,相当于重新创建了表,只保留了表的结构,然后删除掉原有表,效率非常高。delete会扫描全表,根据where语句做判断,因此效率低。

操作日志

truncate不写服务器日志,无法恢复。delete会写服务器日志。

触发器

truncate不激活触发器,delete会激活触发器。

总结

以上所述是小编给大家介绍的mysql清空表数据的两种方式和区别解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文由永利402游戏网站-永利402com官方网站发布于网络数据,转载请注明出处:mysql清空表数据的两种方式和区别解析_Mysql_脚本

关键词: