数据库中清空表内容的两种方式比较(delete 和 TRUNCATE 的区别)
当在数据库中清空表的时候,会有两种清空表内容的方式,分别是:
- delete
使用语句:
delete from table1 (当然我们在使用 delete 删除数据时通常删除的是具体的行数据)
- truncate
truncate table table1 (这里最好带上 table 说明删除的是表也是为了安全)
测试:
- 先创建表,插入数据
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 在清空表数据之后,会继续删除之前的子增量。