delete和truncate的区别
delete:一条一条的删除,不清空auto_increment记录数
truncate:直接将表删除,重新建表,auto_increment将设置为零,从新开始。(如果原表是自动增长,新表也可自动增长)
如创建一个表设置自动增长
create table stu(
id int primary key auto_increment,
name varchar(20) ,
age int,
score double
);
insert into stu(null,‘张三’,18,80),(null,‘李四’,26,70),(null,‘王五’,28,60);
对于这个表,插入数据后,id自动递增
删除3之后,再在表中添加数据,id设为null,自动增加就会从最高的3递增得到id为4,如下图
而如果在想用3这个id只能在插入数据语句中将id赋值为3,不能再设为null,否则依然会自动增加。
所以如果用delete(delete from stu;)清空表,再在表中加数据时,数据不会从id为1开始,而是从删除之前的最高id继续递增。
而用truncate(truncate from stu;)清空表,再在表中加数据,数据就会从id为1开始。
自学笔记,来自黑马程序员