在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
感谢您的来访,获取更多精彩文章请收藏本站。

暂无评论内容