#标识列 /* 又称为自增长列 含义:可以不用手动插入值,系统提供默认的序列值 特点: 1.表示列必须和主键搭配吗?不一定,但是要求是一个key 2.一个表中只能有一个标识列! 3.标识列的类型有限制吗?只能是数值类型(int,float,double) 4.标识列可以通过set auto_increment_increment=3;设置步长, 可以通过 手动插入值, 设置起始值 */ #一、创建表时设置标识列 create table tab_identity( id int primary key, name varchar(20) ); show tables; # 插入数据 insert into tab_identity values(1,"john"); insert into tab_identity values(2,"lily"); #这里的id编号你需要手动输入 select * from tab_identity; 如果你想实现自动的插入id列,你需要 drop table if exists tab_identity; create table tab_identity( id int primary key auto_increment, name varchar(20) ); # 插入数据 insert into tab_identity values(null,"john"); insert into tab_identity values(null,"lily"); insert into tab_identity(name) values("lucy") # 查看变量auto_increment的参数 show variables like "%auto_increment%"; 可以通过修改其实变量与步长来修改更新幅度 auto_increment_increment参数:步长 auto_increment_offset参数:起始位置 #修改步长 set auto_increment_increment=3; show variables like "%auto_increment%"; #删除表中的数据 truncate table tab_identity; select * from tab_identity; #重新插入数据 insert into tab_identity values(null,"john"); insert into tab_identity values(null,"lily"); insert into tab_identity(name) values("lucy") 这时候表中的id顺序为1,4,7,。。。。 #起始值是不支持类似步长的修改的,如何修改呢? #删除表中的数据 truncate table tab_identity; select * from tab_identity; #重新插入数据 insert into tab_identity values(10,"john"); insert into tab_identity values(null,"lily"); insert into tab_identity(name) values("lucy"); 这时候表中的id顺序为10,13,16,。。。。 这个就对起始值进行了修改 #二、修改表时设置标识列(类似修改约束) #准备表格 drop table if exists tab_identity; create table tab_identity( id int, name varchar(20) ); show variables like "%auto_increment%"; set auto_increment_increment=1; desc tab_identity; #设置标识列 alter table tab_identity modify column id int primary key auto_increment; # 插入数据 insert into tab_identity values(null,"john"); insert into tab_identity values(null,"lily"); insert into tab_identity(name) values("lucy"); #三、修改表时删除标识列 alter table tab_identity modify column id int; show index from tab_identity;