MySQL基础教程22-Mysql列属性-唯一键

       一张表往往有很多字段需要具有唯一性,数据不能重复,但是一张表中只能有一个主键。唯一键(unique key)就可以解决表中有多个字段需要唯一性约束的问题。唯一键的本质与主键差不多,唯一键默认的允许自动为空,而且可以多个为空(因为字段为空不参与唯一性比较)。


增加唯一键


基本与主键差不多,也有三种方法。

方案1:在创建表的时候,字段之后直接跟unique关键字

MySQL基础教程22-Mysql列属性-唯一键

看到Key列下显示UNI就表示unique,代表唯一性生效了。


方案2:在所有的字段之后增加unique key(字段列表); -- 支持复合唯一键

MySQL基础教程22-Mysql列属性-唯一键

       上面显示PRI,其实不是主键,原因是:这里number刚好是一个不为空的唯一键(主键性质一样),真实原因是该表没有主键,系统自动给添加上去的。具体你可以使用下面show create table命令查看。

MySQL基础教程22-Mysql列属性-唯一键


方案3:在创建表之后增加唯一键

MySQL基础教程22-Mysql列属性-唯一键

上面先是创建一个没有唯一键的表,然后通过追加的方式给number添加唯一键属性。


唯一键约束


唯一键和主键本质相同,唯一区别是唯一键允许为空,而且多个字段允许为空。


举例,插入数据。

MySQL基础教程22-Mysql列属性-唯一键

查看表数据

MySQL基础教程22-Mysql列属性-唯一键

上面表示如果列属性有unique修饰,那么是允许为空,但是不能重复,下面来验证唯一性冲突检查。

MySQL基础教程22-Mysql列属性-唯一键


删除唯一键


举例删除唯一键

语法格式:alter table 表名drop index 索引名称;

上面语法提到index,这个索引指的是什么呢,请看下图。

MySQL基础教程22-Mysql列属性-唯一键

执行删除唯一键操作

MySQL基础教程22-Mysql列属性-唯一键