• 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删除表 ,重建表。

     关于SQL SERVER自增长的设置鱼mysql有所不同,使用identity来设置,可参考这篇文章:https://blog.csdn.net/tswc_byy/article/details/81747159

  • 相关阅读:
    iOS开发_WKWebView
    蒲公英获取UDID和下载App使用指南
    UIScrollView 遇到了AutoLayout之后其contentSize 的计算
    资料 和 快捷操作
    ME01 创建货源清单
    ME51N 创建采购申请
    LT01 创建转储单
    MM01 物料主数据批导
    PS 创建网络去掉反冲增强
    BP 供应商创建与修改
  • 原文地址:https://www.cnblogs.com/Abby123wen/p/11177535.html
Copyright © 2020-2023  润新知