史上最简单的 MySQL 教程(十六)「列属性 之 唯一键」

温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋StarFork,纠错。

唯一键

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

唯一键的本质与主键差不多,唯一键默认的允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。

增加唯一键

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

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

-- 增加唯一键
create table my_unique(
	number char(10) unique comment '学号',
	name varchar(20) not null
)charset utf8;
1

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

-- 测试唯一键
create table my_unique2(
	number char(10) not null,
	name varchar(20) not null,
	unique key(number)	
)charset utf8;
2

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

-- 查看表创建语句
show create table my_unique2;
3

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

-- 创建未设置唯一键的表
create table my_unique3(
	id int primary key auto_increment,
	number char(10) not null,
	name varchar(20) not null
)charset utf8;
4

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

-- 增加唯一键
alter table my_unique3 add unique key(number);
5

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

唯一键约束

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

-- 测试唯一键约束
insert into my_unique values(null,'Charies');
insert into my_unique values(null,'Guo');
6

更新唯一键 & 删除唯一键

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

删除唯一键的语法为:

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

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

-- 删除唯一键
alter table my_unique3 drop index number;
7

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


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


———— ☆☆☆ —— 返回 -> 史上最简单的 MySQL 教程 <- 目录 —— ☆☆☆ ————

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏烂笔头

Django 1.10中文文档-第一个应用Part6-静态文件

目录[-] 本教程上接Part5 。前面已经建立一个网页投票应用并且测试通过,现在主要讲述如何添加样式表和图片。 除由服务器生成的HTML文件外,网页应用一...

2847
来自专栏互联网杂技

mysql主键primary key与唯一键unique key

主键 每张表中只能有一个主键 主键自动回not null 主键的设置方式是创建的时候加上:primary key 一般主键设置为自动增加,auto_increm...

33415
来自专栏小夜博客

Crontab自动记录服务器负载

3339
来自专栏木头编程 - moTzxx

PHP 开发学习[2] —— wamp memcache 的安装与扩展(Windows 64)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

894
来自专栏noteless

springmvc 项目完整示例09 maven项目创建

注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了

692
来自专栏Hongten

Windows7下面手把手教你安装Django

在搜索了一些资料发现,对于Django的安装,详细的真的很少,都说的很简化,然而,这篇blog可以手把手教你成功安装Django

562
来自专栏jiajia_deng

正确处理安装程序提示 “这个程序可能安装不正确” 问题

932
来自专栏我是攻城师

小知识之Linux系统中的最大进程数,最大文件描述,最大线程数

3514
来自专栏达摩兵的技术空间

linux之文件基本操作学习笔记

通过本教程你将熟悉linux文件的基本操作以及其具体使用。本文目录结构摘抄自《鸟哥的LINUX私房菜》基础学习篇(第三版)。

601
来自专栏xingoo, 一个梦想做发明家的程序员

Oozie分布式工作流——Action节点

前篇讲述了下什么是流控制节点,本篇继续来说一下什么是 Action Nodes操作节点。Action节点有一些比较通用的特性: Action节点是远程的 ...

1756

扫码关注云+社区