自增字段的值为什么不连续例?实例分析

在MySQL中,当主键定义为自增长时,这个主键的值不再需要用户输入数据,数据库系统根据定义自动赋值。每次添加一条记录,主键都会在同一个步骤中自动增长。

通过向字段添加属性来实现主键的自增长。语法格式如下:

字段名 数据类型 AUTO_INCREMENT

注意:

示例 1

定义数据表,指定表中id字段自增,SQL语句及运行结果如下:

mysql> CREATE TABLE tb_student(
    -> id INT(4) PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(25) NOT NULL
    -> );
Query OK, 0 rows affected (0.07 sec)

其中,id为主键,每插入一条新记录,id的值会在上一条记录的基础上自动加1。 name为非空字段mysql设置主键自增长,该字段的值不能为NULL。

向表中插入数据,SQL语句如下:

INSERT INTO tb_student(name) VALUES ('Java'), ('MySQL');

语句执行后,表中增加了2条记录。这里没有输入id值,但系统已经自动添加了该值。使用命令查看记录,如下图。

添加约束后,字段中的每个值都会自动增加。因此,该字段中不能出现相同的值。一般情况下作为id字段的约束条件,id字段作为表的主键。

指定自增字段的初始值

如果在第一条记录中设置了该字段的初始值,那么新添加的记录将从这个初始值开始递增。例如,如果表中插入的第一条记录的id值设置为5,那么当再次插入该记录时,id值将从5开始向上递增。

示例 2

在下面创建一个表,并指定主键从100增长。SQL语句和运行结果如下:

mysql> create table if not exists student3
    -> (
    -> id int(11) primary key auto_increment,
    -> name varchar(25) not null
    -> ) auto_increment=100;
Query OK, 0 rows affected, 1 warning (0.37 sec)

向表中插入数据,使用命令查询表中的记录。

从结果可以看出,id值从100开始,自动增长。

增量字段值不连续

接下来我们通过一个例子来分析为什么自增字段的值不连续。

示例 3

创建一张表,其中id为自增主键字段,name为唯一索引,SQL语句和执行结果语句如下:

mysql> create table if not exists student4
    -> (
    -> id int(4) primary key auto_increment,
    -> name varchar(25) unique key,
    -> age int(4) default null
    -> );
Query OK, 0 rows affected, 2 warnings (0.47 sec)

向表中插入数据,SQL语句如下:

mysql> insert into student4 values (null, 'Java', 1);

此时表中已经有(1,’Java’,1)这条数据mysql设置主键自增长,如果再次插入相同的数据(id列值为空,自增)

因为表中已经有记录,所以报key错误(唯一键冲突)。之后插入新数据时,自增id为3,这样自增字段值就不连续了。

文章来源:https://www.codeprj.com/blog/ce46181.html

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享