mysql-表的约束-唯一约束【初学版“链式“笔记-4】(案例结合-第1版)

~本特利~

唯一约束(UNIQUE)

  • 用来保证数据表中字段的唯一性,就是表中的字段不能重复出现
  • 同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。

基本语法

# 列级约束
字段名 数据类型 UNIQUE;
# 表级约束
UNIQUE (字段名1, 字段名2, ...) ;

列级约束定义在一个列上,只对一个列起约束作用;
表级约束是独立于列的定义,可以应用在一个表的多个列上。


案例学习

  1. 创建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则说明这两个字段是唯一键。


  1. 插入记录测试
# ① 插入不重复记录,插入成功
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;

③ 查看添加结果:
在这里插入图片描述
⑤ 查看删除结果:
在这里插入图片描述


  1. 创建复合唯一约束
    在表级唯一性约束创建时,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版)

点击学习-表的约束-【理论整理】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~本特利~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值