MySQL DELETE语句和TRUNCATE TABLE语句的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL DELETE语句和TRUNCATE TABLE语句的区别相关的知识,希望对你有一定的参考价值。

mysql DELETE语句和TRUNCATE TABLE语句都是删除表中的数据,区别在于前者只是删除表中的所有记录而不会对数据表结构进行改动;后者实际上是先删除整张表,然后再按原有的表结构重新创建回结构一致的同名空表,这样TRUNCATE TABLE要比DELETE 运行的快,但是重新建表的方式会导致一些特殊效果的发生,例如自增ID被重置等。具体的情况请参见下列本人以往的一条知道回答链接:
https://zhidao.baidu.com/question/1991897004989657467
参考技术A 在MySQL中TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。 TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。 TRUNCATE,DELETE,DROP放在一起比较: TRUNCATE TABLE:删除内容、释放空间但不删除定义。 DELETE TABLE:删除内容不删除定义,不释放空间。 DROP TABLE:删除内容和定义,释放空间。

MYSQL:如何清空表中的数据 truncate delete

清空mysql表中数据

delete from 表名;

truncate table 表名;

 

技术图片

不带where参数的delete语句可以删除mysql表中所有内容

使用truncate table也可以清空mysql表中所有内容。

效率


效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。
delete的效果有点像将mysql表中所有记录一条一条删除到删完,
而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。

以上是关于MySQL DELETE语句和TRUNCATE TABLE语句的区别的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL:如何清空表中的数据 truncate delete

MySQL DELETE语句和TRUNCATE TABLE语句的区别

mysql 删除语句:droptruncate和delete

MySQL中DELETE子句与TRUNCATE TABLE语句的区别

MySQL DELETE语句和TRUNCATE TABLE语句的区别

MySQL DELETE语句和TRUNCATE TABLE语句的区别