9.创建表-自增长(AUTO_INCREAMENT)

Posted abby123wen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.创建表-自增长(AUTO_INCREAMENT)相关的知识,希望对你有一定的参考价值。

自增长-AUTO_INCREAMENT

之前说我们通过主键可以保证记录的唯一性,举个栗子,如果我们对人找一个主键的话,一般会找身份证号,因为身份证大家都不一样,以身份证为主键来保证记录的唯一性;

但是如果其他的表,可能不像人这样会存在身份证号的字段,这时候我们会引入一个id,我们习惯性对每一个表建一个id,这个id通过一种正整数的值来保证数据的唯一。第一条记录用1.第二个用2.依次往下增加。

通过自然数或者正整数保证每条记录的唯一,但正整数虽然想法很好,但控制起来并不简单,因为每一次要去数据库现在最大的是哪一个值,再往上+1,所以这时就引入了自增长的概念。

自增长:把这种字段的这种增长。1,2,3,4,5不再自己去维护,交由数据库去维护,但这种自增长它会自动去进行编号,需要注意的地方有:

1.必须与主键组合使用,即自增长的字段必须定义为主键。

2.默认情况下,起始值为1,每次增量为1 

3.定义的语法也非常简单,在字段类型加AUTO_INCREAMENT

CREATE  TABLE S(id  INT  PRINMARY KEY  AUTO_INCREMENT,S_name  VARCHAR(20));

当你建表的时候这样设置后,id这列的值就不需要填入了,它自动会赋值,第一条赋值为1;

1.当表中已经自动由自增长id为1和2 后,我手动指定第三条记录给一个id(1000)填入表格中,此时在插入一条数据不填id时,id会显示为1001,而非3,因为我们当前数据库会找到最大的值1000,在此基础+1;

2.当我在1的基础上再输入1001,此时会提示重复duplicate,因为唯一性。

3.当我再1的基础上再插入一条记录且id=3.是完全可以的,即:中间有没有用到的值,是可以使用的。

4.假设我删掉1000,和1001,再新建一条记录不设置id值,保存,此时为1002.也就是说,虽然你把它删掉了,它已经把前面最大的值已经记录到数据库中去了,所以以1002使用。

 

重置自增长初始值:

什么叫重置,也就是说把自增长的初始值给改掉。

1.ALTER   TABLE   S AUTO_INCREMENT=0;(这种适合表中没有记录的时候,如果有记录的情况下设置,是无效的。)

2.TRUNCATE  TABLE  S;(TRUNCATE 表示截断的意思,表示把数据给清空,清空后表中没有记录,再增加数据的时候,会从1开始。这里需要注意的是:通过TRUNCATE 截取、清空数据后都是从初始值开始的,但是如果是手动删除数据后,是没有影响的,仍然在删除前的最大数据基础上+1增加自增长值)

3删除表 ,重建表。

 

以上是关于9.创建表-自增长(AUTO_INCREAMENT)的主要内容,如果未能解决你的问题,请参考以下文章

oracle创建表空间自增长和创建用户

oracle创建表空间自增长和创建用户

2)MySQL表管理之创建删除约束实施自增长字段复制表结构

oracle_创建表空间_临时表空间_修改表空间_以及自增长

oracle的自增长

Java自学-JDBC 获取自增长id以及表的元数据