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;

  

转载于:https://www.cnblogs.com/ivyharding/p/11571162.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值