史上最简单的 MySQL 教程(十六)「列属性 之 唯一键」
来源:互联网 发布:淘宝评价了还能退货吗 编辑:程序博客网 时间:2024/04/29 08:13
唯一键
唯一键:每张表往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此唯一键就是用来解决表中多个字段需要具有唯一性的问题。
唯一键的本质与主键差不多,唯一键默认的允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。
增加唯一键
增加唯一键的方法和主键类似,有 3 种方法,分别为:
第一种:在创建表的时候,字段后面直接添加unique
或者unique key
关键字
-- 增加唯一键create table my_unique( number char(10) unique comment '学号', name varchar(20) not null)charset utf8;
第 2 种:在所有字段之后,增加unique key(字段列表)
,可以设置复合唯一键
-- 测试唯一键create table my_unique2( number char(10) not null, name varchar(20) not null, unique key(number) )charset utf8;
观察上图,咱们可能会发现一个问题,那就是:咱们设置的唯一键UNI
,怎么变成了主键PRI
啊?这是由于当唯一键满足非空条件的时候,其性质就和主键一样啦,因此在表中显示为PRI
. 当然,在咱们执行如下 SQL 语句的时候,其就会表现出真正的性质:
-- 查看表创建语句show create table my_unique2;
第 3 种:在创建表之后,增加唯一键
-- 创建未设置唯一键的表create table my_unique3( id int primary key auto_increment, number char(10) not null, name varchar(20) not null)charset utf8;
如上图所示,表my_unique3
未设置唯一键。接下来,执行如下 SQL 语句,进行测试:
-- 增加唯一键alter table my_unique3 add unique key(number);
如上图所示,咱们已经成功向表中增加唯一键啦!
唯一键约束
唯一键与主键本质相同,区别在于:唯一键允许字段值为空,并且允许多个空值存在。
-- 测试唯一键约束insert into my_unique values(null,'Charies');insert into my_unique values(null,'Guo');
更新唯一键 & 删除唯一键
在表中,更新唯一键的时候,可以不用先删除唯一键,因为表的唯一键允许有多个。
删除唯一键的语法为:
- 基本语法:
alter table + 表名 + drop index + 索引名字;
在这里,唯一键默认使用字段名作为索引名。
-- 删除唯一键alter table my_unique3 drop index number;
如上图所示,显然咱们已经成功删除表中的唯一键啦!
温馨提示:符号+
表示连接的意思。
———— ☆☆☆ —— 返回 -> 史上最简单的 MySQL 教程 <- 目录 —— ☆☆☆ ————
阅读全文
1 1
- 史上最简单的 MySQL 教程(十六)「列属性 之 唯一键」
- 史上最简单的 MySQL 教程(十三)「列属性 之 空属性、列描述和默认值」
- 史上最简单的 MySQL 教程(十四)「列属性 之 主键」
- 史上最简单的 MySQL 教程(十五)「列属性 之 自动增长」
- 史上最简单的 MySQL 教程(九)「列类型 之 数值型」
- 史上最简单的 MySQL 教程(十)「列类型 之 日期时间型」
- 史上最简单的 MySQL 教程(十一)「列类型 之 字符串型」
- 史上最简单的 MySQL 教程(二十六)「连接查询(上)」
- 史上最简单的 MySQL 教程(二十六)「连接查询(上)」
- MySQL 学习教程(四)【整理】-列属性(空属性、列描述和默认值/ 主键/ 自动增长/ 唯一键)
- MySQL_007_基础_列属性之 自增、唯一键
- 史上最简单的 MySQL 教程(四)「SQL 基本操作 之 库操作」
- 史上最简单的 MySQL 教程(五)「SQL 基本操作 之 表操作」
- 史上最简单的 MySQL 教程(六)「SQL 基本操作 之 数据操作」
- Mysql入门(三)之列属性
- 史上最简单的 MySQL 教程(一)「数据库」
- 史上最简单的 MySQL 教程(十七)「索引」
- 史上最简单的 MySQL 教程(十八)「关系」
- 注释规范
- android studio怎么删除module
- 链路聚合——team
- 网络编程
- 编译与链接时对extern的处理
- 史上最简单的 MySQL 教程(十六)「列属性 之 唯一键」
- ubuntu中安装oracle java8两种方法
- C++中的井号
- 二路归并算法的实现
- 离散题目2
- XML之四种解析dom,sax,jdom,dom4j原理及性能比较
- 运动控制入门问答
- SDUT 3802 离散题目8
- Servlet 生命周期