zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    React生命周期, 兄弟组件之间通信
    React组件式编程Demo-用户的增删改查
    React之this.refs, 实现数据双向绑定
    CCF CSP 201812-4 数据中心
    CCF CSP 201812-4 数据中心
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    Codeforces 1245C Constanze's Machine
    Codeforces 1245C Constanze's Machine
    CCF CSP 201712-4 行车路线
  • 原文地址:https://www.cnblogs.com/Abby123wen/p/11177535.html
Copyright © 2011-2022 走看看