mysql批量删除数据方法及注意事项

一、批量删除数据有三种常见的方法

1、drop table

当不需要该表时,可以使用该方法。

2、truncate table

删除所有数据,同时保留表,速度很快。
可以理解为,drop table然后再create table。

3、delete from table

可以删除所有数据,也能保留表,但性能较差。
也可以带where条件删除部分数据,灵活性强。

二、truncate和delete的相同之处:

truncate和delete都能够删除所有数据,且保留表

三、truncate和delete的差异,

1、truncate是DDL语句,它不存在所谓的“事务回滚”;
delete是DML语句,它执行完是可以rollback的。

2、truncate table返回值是0;
delete from table返回值是被删除的行数。

3、InnoDB支持一个表一个文件时:
truncate会一次性把表干掉,且不会激活触发器,速度非常快;
delete from table则会一行一行删除,会激活触发器,速度比较慢。
delete数据,是要记录日志的,truncate表不需要记录日志。

4、当表中有列被其它表作为外键(foreign key)时:
truncate会是失败; delete则会成功。

5、当表中有自增列是:
truncate会使得自增列计数复原;
delete所有数据后,自增列计数并不会复原,而是保持原来的顺序自增。

你可能感兴趣的:(mysql,mysql,数据库)