自增列
自增列的作用:
是某个字段的值自增
自增列的特点:
- 一个表中最多只能有一个自增列
- 当需要产生一个唯一标识符或者顺序值时,我们就可以设置自增列
- 自增长列约束的列必须是键列(主键列(primary key)或者唯一键列(unique key))
- 自增约束的列的数据必须是整数类型
- 自增列中无法添加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字段设置为了不自增(我们可以发现: 我们删除自增其实就是设置为了不自增,也就是对字段进行了修改)