唯一键约束
(一)概述
1、关键字:unique key
2、特点:指定了唯一键的列的值必须唯一,不能重复
3、作用:给主键以外的列,限定唯一性
4、唯一键分类
单列的唯一
复合唯一
唯一键和主键的区别:
(1)主键不能为空,唯一键可以为空
(2)主键约束,一个表只能有一个,而唯一键可以有很多个
(二)使用唯一键
1、如何创建/指定唯一键
(1)在建表时
create table 【数据库名.】表名称(
字段1 数据类型 primary key,
字段2 数据类型 【unique key】,
字段3 数据类型 【unique key】,
…
);
或
create table 【数据库名.】表名称(
字段1 数据类型 primary key,
字段2 数据类型 ,
字段3 数据类型 ,
…,
unique key(字段2), #分别唯一
unique key(字段3)
);
create table 【数据库名.】表名称(
字段1 数据类型 primary key,
字段2 数据类型 ,
字段3 数据类型 ,
…,
unique key(字段列表) #复合唯一
);
create table emp(
eid int primary key, #员工编号
ename varchar(20), #姓名
cardid varchar(18) unique key, #身份证号
tel varchar(11) unique key
);
insert into emp values(1,‘张三’,‘123456789123456789’,‘12345678912’);
insert into emp values(2,‘李四’,‘123456789123456788’,‘12345678912’);
mysql> insert into emp values(2,‘李四’,‘123456789123456788’,‘12345678912’);
ERROR 1062 (23000): Duplicate entry ‘12345678912’ for key ‘tel’
(2)在建表后
修改表结构:
alter table 【数据库名.】表名称 add unique key(字段名);
alter table 【数据库名.】表名称 add unique key(字段列表); #复合唯一
2、删除唯一键
修改表结构:
alter table 【数据库名.】表名称 drop index 索引名;
如果不知道索引名,可以通过如下的语句查询: show index from 表名称;
alter table emp drop unique key; #错误的
alter table emp drop unique key(cardid); #错误的
alter table emp drop index cardid;
索引:index
作用:为了提高查询效率,而设置索引
我们的键约束(主键、唯一键、外键),都会自动创建索引。
因为既然你建立键约束,那么该列的值一定很关键,那么在实际中肯定经常用他们的值来查询。
因此,为了提高查询效率,会自动在这些列上增加索引。
来源:CSDN
作者:试着生存
链接:https://blog.csdn.net/weixin_44050355/article/details/103948214