ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

史上最简单的 MySQL 教程(十五)「列属性 之 自动增长」

2019-01-13 15:04:14  阅读:248  来源: 互联网

标签:auto 增长 increment my 如上图 修改 SQL


  自动增长
  
  自动增长:auto_increment,当对应的字段,不给值,或者是默认值,或者是null的时候,就会自动的被系统触发,系统会从当前字段中取已有的最大值再进行+1操作,得到新的字段值。
  
  自增长通过跟主键进行搭配使用,其特点为:
  
  任何字段要做自增长,前提其本身必须是一个索引,即key栏有值;
  
  自增长字段必须是数字(整型);
  
  每张表最多有一个自增长字段。
  
  执行如下 SQL 语句,进行测试:
  
  -- 自增长示例
  
  create table my_auto(
  
  id int primary key auto_increment,
  
  name varchar(20) not null
  
  )charset utf8;
  
  使用自增长
  
  当自增长给定的值为null或者默认值的时候,就是触发自动增长。
  
  -- 触发自增长
  
  insert into my_auto (name) values('Charies');
  
  insert into my_auto values(null,'Guo');
  
  insert into my_auto values(default,'ChariesGuo');
  
  如上图所示,自增长的第一个元素默认是1,自增长每次都是自增1。此外,如果自增长对应的字段输入了值,那么自增长失效,但是下一次还是能够正确的自增长,即从取该字段的最大值+1.
  
  那么,如何确定下一次自增长的数值是什么呢?简单,咱们可以通过查看表的创建语句看到。
  
  -- 查看表的创建语句
  
  show create table my_auto;
  
  如上图所示,显然在咱们之前插入的 3 条记录之后,下一次自增长是4,符合咱们的结论。
  
  修改自增长
  
  自增长如果是涉及到字段改变,就必须先删除自增长,然后再增加自增长,因为每张表只能有一个自增长字段。
  
  如果修改当前自增长字段已经存在的值,则只能修改比当前已有自增长字段中的最大值更大,不能更小,因为更小不生效。
  
  基本语法:alter table + 表名 + auto_increment = 值;
  
  执行如下 SQL 语句,进行测试:
  
  -- 修改自增长测试
  
  alter table my_auto auto_increment = 2;
  
  如上图所示,当咱们修改自增长小于当前自增长字段中的最大值时,虽然显示 SQL 语句执行成功,但实际上并没有修改成功。下面,在执行如下 SQL 语句,进行测试:
  
  -- 修改自增长测试
  
  alter table my_auto auto_increment = 5;
  
  如上图所示,显然当咱们修改自增长大于当前自增长字段中的最大值时,修改成功。
  
  在这里,咱们不妨思考一下,为什么自增长是从1开始呢?为什么每次都自增1呢?虽然现在咱们不知道是什么原因导致上面的表示形式,但是咱们知道,所有系统的表现(如字符集、校对集)都是由系统内部的变量进行控制的,因此咱们可以查看自增长对应的变量:
  
  基本语法:show variables like 'auto_increment%';
  
  -- 查看自增长变量
  
  show variables like 'auto_increment%';
  
  如上图所示,其中auto_increment_increment表示步长,auto_increment_offset表示初始值.
  
  因此,咱们可以通过修改上面的两个变量实现不同的效果,但是需要注意的是:修改是会话级别,并且修改的是整个数据库,而不是单张表。
  
  基本语法:set auto_increment_increment = 值;
  
  执行如下 SQL 语句,进行测试:
  
  -- 修改自增长步长
  
  set auto_increment_increment = 5;
  
  insert into my_auto values (null,www.dasheng178.com'Guobinhit');
  
  如上图所示,咱们已经修改成功!接下来,执行如下 SQL 语句,进行测试:
  
  -- 插入测试数据
  
  insert into my_auto values (null,'www.gcyL157.com Guobinhit');
  
  insert into my_auto values (www.fengshen157.com/ default,'Guobinhit');
  
  如上图所示,咱们插入的第一个Guobinhit的id值竟然是6,第二个Guobinhit的id值倒是在6的基础上增加了5为11正常。这个现象产生的原因是:咱们之前的修改会导致系统产生一个误差,从初始值1开始计算加5,因此第一个Guobinhit的id值是6.
  
  不过说实话,修改自增长并没有什么实际的意义,在此只是想让大家知道:自增长的初始值和步长都是可以修改的而已。
  
  删除自增长
  
  自增长是字段的一个属性,因此可以通过modify来进行修改。想要删除自增长的话,只需要保证字段没有auto_increment即可。
  
  基本语法:alter table + 表名 + modify + 字段 + 类型;
  
  执行如下 SQL 语句,进行测试:
  
  -- 删除自增长
  
  alter table my_auto modify www.michenggw.com id int primary key;
  
  如上图所示,呃,好吧,出错啦!这是因为表my_auto之前已经定义了主键,所以在执行上述 SQL 语句的时候,系统会认为咱们想要定义多个主键,自然就要报错啦!解决方法就是,去掉上述 SQL 语句中的primary key即可。
  
  如上图所示,显然咱们已经成功删除自增长啦!
  
  温馨提示:符号+表示连接的意思。
  
  ———— ☆☆☆ —— 返回 -> 史上最简单的 MySQL 教程 <- 目录 —— ☆☆☆ ————

标签:auto,增长,increment,my,如上图,修改,SQL
来源: https://www.cnblogs.com/qwangxiao/p/10262549.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有