数据库中清空表内容的两种方式比较(delete 和 TRUNCATE 的区别)

当在数据库中清空表的时候,会有两种清空表内容的方式,分别是:

  • delete

使用语句:
delete from table1 (当然我们在使用 delete 删除数据时通常删除的是具体的行数据)

  • truncate

truncate table table1 (这里最好带上 table 说明删除的是表也是为了安全)

测试:

  1. 先创建表,插入数据
CREATE TABLE `test`(
id INT(10) NOT NULL AUTO_INCREMENT COMMENT 'id',`name` VARCHAR(10) NOT NULL COMMENT '姓名', PRIMARY KEY(`id`)
 )ENGINE=INNODB DEFAULT CHARSET= utf8 

INSERT INTO `test`(`name`) VALUES('张三'),('李四')

创建结果:

接下来我们开始通过两种方式去删除表数据

delete:
删除了表中的全部数据

再次插入看结果:

这里的 id 是设置自增的,在删除数据之后,自增的量没有归 1,而是继续了删除之前的 id 加 1

我们再来看看 truncate

表删除空了。

我们来插入数据看看。只添加姓名,id 自动填充。

自增初始值归 1 了。这时候区别就出来了。

总结:

那么 delete 和 truncate 的区别是什么?

1. 都是删除表内容,但不会破坏表结构
2.truncate 在清空表数据的后,自增列会归 1
3.delete 在清空表数据之后,会继续删除之前的子增量。