知识点一:delete数据后,自增列计数不会从头开始。画外音:truncate数据后,自增列计数会从头开始。
因此,在第四步delete删除所有4条记录后,自增列计数,并不会重新归0,也就是说,下一条insert的记录,自增列的值会是5。知识点二:含自增列的表,插入时可以手动指定自增列的值,但不能与已有值冲突,也可以使用系统默认自增列的值。知识点三:如果手动指定自增列的值是0或者NULL,MySQL会视为无效,并使用系统默认自增列的值。
insert (0, '000') 又或者 insert (NULL, '000')知识点四:如果使用系统默认自增列的值,会从当前最大值开始往后增加。也就是说,第七步
insert ('222'),会使用默认值6,而不是2。drop table t1;
create table t1(
id int not null auto_increment,
name varchar(10) unique,
count int default 0,
primary key(id),
index(name)
)engine=innodb;
insert into t1(id, name) values(1, "shenjian");
insert into t1(id, name) values (111, "111"),(NULL, "abc"),(222, "222"),(NULL,"xyz");(1, 'shenjian')
(111, '111') // 允许指定值
(112, 'abc') // 忽略NULL,从最大值开始增
(222, '222') // 允许指定值
(223, 'xyz') // 忽略NULL,从最大值开始增
insert into t1(name)values("shenjian"),("aaa"),("bbb")
on duplicate key update count=100;
相关文章:
《架构师之路,21年干货精选》