所在的位置: mysql >> mysql资源 >> MySQL自增ID的理解

MySQL自增ID的理解

先看一下下面的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,预览时标签不可点收录于合集#个上一篇下一篇

转载请注明:http://www.aierlanlan.com/rzgz/339.html