使用案例场景再现: 

创建一个为test的数据库,为数据库test创建一个数据表student ,其中包含的字段有 id name sex,admission_time,其中要求student表中的人员id必须连续排列。

create database test        use test       
create table student (
id   int primary key auto_increment
name varchar(15)
sex varhcar(5)
admission_time  data
)

其中 auto_increment 就是自增列,具体功能是当需要产生唯一标识符或顺序值时,可设置自增长,一般使用于一张表中的主键

关键字 :   auto_increment   主要被用于主键

注意点:一个表最多只能有一个自增长列

(2)自增长列约束的列必须是键列(主键列,唯一键列)

(3)自增约束的列的数据类型必须是整数类型

(4)如果自增列指定了 0 和 null,会在当前最大值的基础上自增;

案例测试一:(一个表最多只能有一个自增长列)

错误示例:

CREATE TABLE student (
id   int PRIMARY KEY AUTO_INCREMENT,
NAME varchar(15),
sex varhcar(5),
admission_time  DATA UNIQUE AUTO_INCREMENT
)

错误示例:自增长列约束的列必须是(主键列或 唯一键列)

CREATE TABLE emp2(
 id INT AUTO_INCREMENT,
 `NAME` VARCHAR(20),
 pwd VARCHAR(15)
 )

错误代码: 1075
Incorrect table definition; there can be only one auto column and it must be defined as a key
         (表定义不正确;只能有一个自动列,并且必须将其定义为键)

错误示例2:自增长列约束的列必须是(主键列或 唯一键列)

CREATE TABLE emp2(
 id INT primary key,
 `NAME` VARCHAR(20) ,
 pwd int     AUTO_INCREMENT# 没有声明密码的唯一性如果改为
pwd int  unique   AUTO_INCREMENT   # 正确的
 )

为什么AUTO_INCREMENT,建议被用于 主键 而且数据类型必须为 int ,首先要从它作用看,它是被用来对某一字段自增加1的,比如你需要给你们班级建立一个表,从第一个学生开始,你每入一个学生信息,是不是需要修改一下它的id号,将其写为 1 ,2,  3,4,..... 

如果你将它的id号设置了自增,那是不是就不用管id了,你每插入新的记录它都会增。

案例:

创建一个表

CREATE TABLE emp2(
 id INT PRIMARY KEY AUTO_INCREMENT,
 `NAME` VARCHAR(20),
 pwd VARCHAR(15)
 )

插入三条数据

INSERT INTO emp2(`name`,pwd) VALUES
 ("李四","xcvb"),
 ("王麻子","xcvb"),
 ("刘栋","xcvb");

因为我们将 id字段设置了自增 (AUTO_INCREMENT) 所以 emp2表的id字段会自动增长,我们就不用在给她赋值例如:

INSERT INTO emp2(`name`,pwd) VALUES
   (1,"李四","xcvb"),(2,"王麻子","xcvb"),
 (3,"刘栋","xcvb");

mysql构建自增列 mysql 自增列_数据

注意: 如果我们已经将id号设置为了自增列,就不建议再次对自增列复新值了

INSERT INTO emp2(id,`name`,pwd) VALUES
 (10,"周记","xcvb")

mysql构建自增列 mysql 自增列_数据_02

我们在插入新的排列顺序时,会出现问题 

INSERT INTO emp2(`name`,pwd) VALUES
 ("马林","xcvb")

mysql构建自增列 mysql 自增列_mysql构建自增列_03

name = 马林 这条数据会从id = 11 开始,而不是我们刚按顺序排列的4 插入完成后应该是 id = 5 

注意:在对已经设置了自增列的表插入新的数据时,一定要考虑好里面的数据,如果在后续出现问题的话,删除这条信息 ,在重新插入的时候会出现裂缝

我们来删除 id = 4 name = "刘栋" 这条数据 
 DELETE FROM emp3 WHERE id = 4重新插入一条数据 :INSERT INTO emp3(`name`,pwd) VALUES
 ("周记","xcvb")

如果按照常规理解 id = 4被删掉了,重新按照顺序插入的话应该是4,其实不是。

mysql构建自增列 mysql 自增列_mysql构建自增列_04

通过查看表内数据,id是从5开始排列,这样操作有的时候会造成主键冲突及其一些其他问题,(主键冲突的原因就是,列表中存在这样一条数据,我们重新相同id的数据插入的话会发现插入不成功,出现这种问题的原因是因为我删除了某些数据,经过一段时候后人为的记忆就会忘记一些数据信息),当然你也可以在后面另行补上。   insert into 表名(4,`name`,pwd)。

这叫自增变量持久化。mysql 8.0 不会初始化,自增列的排列数据信息,会将历史的自增后删除了数据操作记录保留在重做日志中。

总结:(论语二则)

“君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉学可谓好学也已。”

君子吃饭不求填饱肚子,居住不追求安逸宽大的房子,勤快的做自己该做的事情,和他人谈话要谨而慎之,接近有道德有学问的人并向他学习,纠正自己的缺点,就可以称得上是好学了

子曰,质胜文则野,文胜质则史,文质彬彬,然后君子

“质朴超过文采就会显得粗狂野蛮,文采超过质朴就会过于浮华。文采与质朴搭配适中,才能成为君子。”