mysql - 标识列

#标识列
/*
又称为自增长列
含义:可以不用手动插入值,系统提供默认的序列值

特点:
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;

  

上一篇:Java中==和equals()之间有什么区别?


下一篇:Mybatis Generator最完整配置详解[mybatis代码自动生成配置]