~本特利~ |
唯一约束(UNIQUE)
- 用来保证数据表中字段的唯一性,就是表中的字段不能重复出现
- 同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。
基本语法
# 列级约束
字段名 数据类型 UNIQUE;
# 表级约束
UNIQUE (字段名1, 字段名2, ...) ;
列级约束定义在一个列上,只对一个列起约束作用;
表级约束是独立于列的定义,可以应用在一个表的多个列上。
案例学习
- 创建my_unique_1表和my_unique_2表,分别通过列级约束和表级约束添加唯一约束。
# 列级约束,查看表结构
CREATE TABLE my_unique_1 (
id INT UNSIGNED UNIQUE,
username VARCHAR(10) UNIQUE
);
DESC my_unique_1
效果如下:
# 表级约束,查看表结构
CREATE TABLE my_unique_2 (
id INT UNSIGNED,
username VARCHAR(10),
UNIQUE(id),
UNIQUE(username)
);
DESC my_unique_2
效果如下:
在key列看到了UNI则说明这两个字段是唯一键。
- 插入记录测试
# ① 插入不重复记录,插入成功
INSERT INTO my_unique_1 (id) VALUES(1);
INSERT INTO my_unique_1 (id) VALUES(2);
# ② 插入重复记录,插入失败(Duplicate entry '1' for key 'id')
INSERT INTO my_unique_1 (id) VALUES(1);
# ③ 查询插入的结果
SELECT * FROM my_unique_1;
查询插入的结果如下:
3.添加和删除唯一性约束
若为一个现有的表添加或删除唯一约束,是无法通过修改字段属性的方式操作的,而要按照索引的方式来操作。
# ① 创建测试表
CREATE TABLE my_unique_3 (id INT);
# ② 添加唯一约束
ALTER TABLE my_unique_3 ADD UNIQUE(id);
# ③ 查看添加结果
SHOW CREATE TABLE my_unique_3;
# ④ 删除唯一约束
ALTER TABLE my_unique_3 DROP INDEX id;
# ⑤ 查看删除结果
SHOW CREATE TABLE my_unique_3;
③ 查看添加结果:
⑤ 查看删除结果:
- 创建复合唯一约束
在表级唯一性约束创建时,NUIQUE()的字段列表中,可以加多个字段,组成复合唯一键,特点就是只有多个字段的值重复时才会视为重复
# ① 创建测试表,添加复合唯一键
CREATE TABLE my_unique_4 (
id INT UNSIGNED, username VARCHAR(10),
UNIQUE(id, username)
);
# ② 插入不重复记录,插入成功
INSERT INTO my_unique_4 VALUES(1, '2');
INSERT INTO my_unique_4 VALUES(1, '3');
# ③ 插入重复记录,插入失败
INSERT INTO my_unique_4 VALUES(1, '2');
当同一个字段两次插入的记录相同时,插入成功,当两个字段同时发生重复时,插入失败。
主键约束(链接)
mysql-表的约束-默认约束【初学版“链式“笔记-2】(案例结合-第1版)
mysql-表的约束-非空约束【初学版“链式“笔记-3】(案例结合-第1版)
mysql-表的约束-唯一约束【初学版“链式“笔记-4】(案例结合-第1版)
mysql-表的约束-主键约束【初学版“链式“笔记-5】(案例结合-第1版)