先看一下下面的SQL操作
1.建表T1,设定自增列Id;2.指定id=1写insert语句,第一行是id是1;3.不指定id,依赖mysql的自增机制,插入3行;问题思考:此时T1的id应该变为2,3,4吗?4.delete*fromT1,删除所有记录;5.指定id=0插入,insertintot1(id,name)values(0,);6.指定id=1插入,insertintot1(id,name)values(1,);7.第七步:不指定id,依赖自增机制,插入1行;insertintot1(name)values();请问,此时表中的三行记录,id分别是多少?知识点讲解
1.讲解一:delete数据后,自增列计数不会从头开始。truncate数据后,自增列计数会从头开始
因此,delete删除所有4条记录后,自增列计数,并不会重新归0,下一条insert的记录,自增列的值会是5。(除非用truncate语句)
2.mysql含自增列的表,插入时可以指定自增列的值,但不能与表中已有值冲突,也可以使用系统默认自增列的值。
insertintot1(id,name)values(0,);
insertintot1(id,name)values(1,);
这样的语句是可以的。
3.mysql添加值的时候,如果手动指定自增列的值是0或者NULL,MySQL会视为无效,并使用系统默认自增列的值。
insert(0,)又或者insert(NULL,)都会被MySQL视为:insert()
4.mysql中如果使用系统默认自增列的值,当前最大值开始往后增加1。这个1可以在创建table是制定每次自增的值得大小。
因此在以上的第7步,insertintot1(name)values(),会使用默认值6,而不是2。
故,实验结果,最终的三行记录是:5,1,6,预览时标签不可点收录于合集#个上一篇下一篇