自增约束 [MySQL][数据库]

自增列

自增列的作用:

是某个字段的值自增

自增列的特点:

  1. 一个表中最多只能有一个自增列
  2. 当需要产生一个唯一标识符或者顺序值时,我们就可以设置自增列
  3. 自增长列约束的列必须是键列(主键列(primary key)或者唯一键列(unique key))
  4. 自增约束的列的数据必须是整数类型
  5. 自增列中无法添加0和null,如果尝试在自增列中添加0或者null,那么这个时候就会在当前自增列的最大值的基础上自增,也就是如果尝试添加0或者null,那么就会自然自增,就和没有添加一样,但是如果自增列手动指定了一个具体的0之外的数值,这个时候就直接赋值为这个具体值

那么如果设置自增长列?

这里关于设置自增长列我们也是由两种方式:

方式一: 在CREATE TABLE时设置

CREATE TABLE test7(
id INT PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(15)
);
  • 在这里我们就给id字段添加了主键约束并且将id设置为了一个自增列

这里我们通过举例来说明一些问题:

INSERT INTO test7(id,last_name)
VALUES(0,'tom');
  • 这个时候我们尝试给设置为自增列的id字段中添加0,前面我们说过,自增列中无法添加0和null,如果添加0或者null,这个时候就认为没有添加,使用默认方式进行添加,也就是进行默认赋值,而自增列默认从 1 开始自增,这个时候我们打开表之后可以发现表中tom对应的id不是0,而是 1
INSERT INTO test7(id,last_name)
VALUES(NULL,'tom1');
  • 这个时候我们再执行之后可以发现,这个时候我们的id字段我们之前设置为了主键约束(我们的自增列只能设置在键列上),这个时候我们在这个主键约束字段上添加null,按理说是添加不进去的,并且会报错,但是这个时候我们可以发现不会报错,那么究竟是为什么? — 这里其实就是因为我们自增列中如果尝试添加null或者0的时候都是以默认方式进行添加,也就是正常自增,那么这个时候前面有一个记录的id为1 ,这个时候就会自增,然后添加一个null,并不会真正的将null添加进去,所以对于我们没有将null添加进去,这个时候也就不会出错了
INSERT INTO test7(id,last_name)
VALUES(-10,'tom3');
  • 这时候表中前面有两条记录,分别id为1和2,如果是正常自增那么接下来id的值就应该是3,但是这个时候我们添加新的记录的时候我们给id指定了值为-10,那么这个时候我们的自增列我们在前面说过,只要不是添加0或者添加null都是可以添加进去的,那么这个时候我们可以发现我们添加的tom3对应的id为-10
    • 并且我们还可以发现我们添加的id为-10的记录会跑到表中的第一个条记录的位置上去,因为我们的自增列是按照自然数顺序从小到大进行排列的,这时候-10小于1和2,那么这个时候10就会成为表中第一条记录

注意: 在实际开发中,我们一般都是给主键约束的字段设置为自增列,并且我们要注意在主键约束添加了auto_increment之后,也就是设置了自增长之后,我们就不要给这个字段显式赋值了,让这个字段默认增长就可以了

方式二: 在ALTER TABLE时设置

首先我们先来创建一个数据表

CREATE TABLE test8(
id INT PRIMARY KEY,
last_name VARCHAR(15)
);
  • 这个时候我们创建了一个表test8,并且这个时候我们给这个表中的id字段添加了主键约束

接下来我们通过一个例子来说明如何在ALTER TABLE时设置自增

ALTER TABLE test8()
MODIFY id INT AUTO_INCREMENT;
  • 这里我们就通过修改字段的方式将id字段设置为了自增列

如何删除自增(也就是设置为不自增)?

我们也是在ALTER TABLE时删除自增

ALTER TABLE test8
MODIFY id INT;
  • 这里我们就成功的将test8表中的id字段设置为了不自增(我们可以发现: 我们删除自增其实就是设置为了不自增,也就是对字段进行了修改)

猜你喜欢

转载自blog.csdn.net/m0_57001006/article/details/123587309