mysql alter 唯一键_MySQL列属性 之 唯一键

MySQL列属性 之 唯一键

唯一键

唯一键:每张表往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此 唯一键就是用来解决表中多个字段需要具有唯一性的问题。

例如身份证号码应该每一行的记录不一样,需要具有唯一性。

唯一键的本质与主键差不多,唯一键允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。也就是说可以插入多个空字段。

增加唯一键

增加唯一键的方法和主键类似,有 3 种方法,分别为:

第一种:在创建表的时候,字段后面直接添加unique或者unique key关键字

-- 增加唯一键

create table my_unique(

number char(10) unique comment '学号',

name varchar(20) not null

)charset utf8;

43fcdffeaae884b9b20c922c32e9e23e.png

第 2 种:在所有字段之后,增加unique key(字段列表),可以设置复合唯一键

-- 测试唯一键

create table my_unique2(

number char(10) not null,

name varchar(20) not null,

unique key(number)

)charset utf8;

4031f30eaa4e1e993ef3400210b990f7.png

观察上图,咱们可能会发现一个问题,那就是: 咱们设置的唯一键UNI,怎么变成了主键PRI啊?这是由于当唯一键满足非空条件的时候,其性质就和主键一样啦,因此在表中显示为PRI. 当然,在咱们执行如下 SQL 语句的时候,其就会表现出真正的性质:

-- 查看表创建语句

show create table my_unique2;

df6eda02fd5907cdc868feb33bcf6aab.png

第 3 种:在创建表之后,增加唯一键

-- 创建未设置唯一键的表

create table my_unique3(

id int primary key auto_increment,

number char(10) not null,

name varchar(20) not null

)charset utf8;

65dd16d9fa1fe362b6de1bd2fafcaf08.png

如上图所示,表my_unique3未设置唯一键。接下来,执行如下 SQL 语句,进行测试:

-- 增加唯一键

alter table my_unique3 add unique key(number);

d3b82345c8edd23adbf59241a6b21616.png

如上图所示,咱们已经成功向表中增加唯一键啦!

唯一键约束:允许多个值为空

唯一键与主键本质相同,区别在于: 唯一键允许字段值为空,并且允许多个空值存在。

-- 测试唯一键约束

insert into my_unique values(null,'Charies');

insert into my_unique values(null,'Guo');

3269596959b092dc554766096a6a7055.png

更新唯一键 & 删除唯一键

在表中,更新唯一键的时候,可以不用先删除唯一键,因为表的唯一键允许有多个。

删除唯一键的语法为:

基本语法:alter table + 表名 + drop index + 索引名字;

在这里,唯一键默认使用字段名作为索引名。

-- 删除唯一键

alter table my_unique3 drop index number;

dc78a6df0768e263b4701d53a938510e.png

如上图所示,显然咱们已经成功删除表中的唯一键啦!

温馨提示:符号+表示连接的意思。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值