【MySQL知识点】唯一约束、主键约束

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过unique定义的。

image.gif


🙋‍ 哈喽大家好,本次是MySQL数据库原理系列第七期

⭐本期是MySQL的表的约束——唯一约束、主键约束

🏆系列专栏:MySQL数据库

😄笔者还是前端的菜鸟,还请大家多多指教呀~

👍欢迎大佬指正,一起学习,一起加油!


前言


本期学习唯一约束、主键约束噢~


唯一约束


定义


唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过unique定义的。语法如下:


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


列级约束定义在一个列上,只对该列起约束作用。

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


插入数据


如下,我们创建my_unique1和my_unique2两个表来进行测试,为两个表分别添加列级约束和表级约束,然后查看表的结构,会发现两个表的结构是相同的。


当表级约束仅建立在一个字段上时,其作用效果与列级效果相同。

d7ea78e43ae44095bf8c407781dab333.png

1fc03e94d22a483bb0c29b1d23a6c7e2.png


由以下结果我们可以发现,添加唯一约束后,插入重复记录会失败。


889dbffac2ae41058e27d3d73ab34a02.png

bf95a5c0afab4ea3940bcdeece9b451c.png


添加和删除唯一约束


若为一个现有的表添加或删除唯一约束,无法通过修改字段属性的方式操作,而是按照索引的方式来操作。


cb5540c9b0034d10a38807fe5efa2c7a.png

8a945c597c044c9abbb49773e83bf79e.png


创建复合唯一约束


在表级唯一性约束创建时,unique()的字段列表中,可以添加多个字段,组成复合唯一键,特点是只有多个字段的值相同时才视为重复记录。


a275c89ad0ed4a1ca560fece06602bf4.png

ff0b02a9ab344824b1ebee083f402cca.png


主键约束


定义


在MySQL中,为了快速查找表中的某条信息,可以通过设置主键实现。主键可以唯一标识表中的记录。主键约束通过primary key 定义,它相当于唯一约束和非空约束的组合,要求被约束字段不允许重复,也不允许出现null值。


每个表中最多只允许含有一个主键


主键约束的创建分为列级和表级,语法如下:


列级约束:
字段名 数据类型 primary key
表级约束:
primary key(字段名1,字段名2,…)


表级约束的字段若只有一个,则为单字段主键与列级约束添加的效果相同;若有多个,则为复合主键,复合主键需要用多个字段来确定一条记录的唯一性,类似于复合唯一键。


测试


我们创建一个表进行测试,为id添加主键约束,查看表结构,由图可以看出,id字段的key列为PRI,表示该字段为主键,同时,id字段的null列为NO,表示该字段不能为NULL。


17bcf049d200495e8b11532b2e31c6fd.png


插入数据


f42a5069da284a70a1c1bb0705886d14.png


插入NULL时,会插入失败,提示id字段不能为NULL


44eb1e39a8464a76a2ee2920ef23fa1b.png


插入重复值也会失败,提示”1“已经存在主键。


34d5fec031a4482cb3fbccfdcfa75538.png


删除主键约束


由下图我们可以发现,删除主键约束后,非空约束并没有删除,如果需要删除非空约束,则需要使用modify。


bd3de9ed8a9745fbbe9d434002c37649.png


478afc4054d94b72ba8320e0dcff434f.png


添加主键约束


f315ba35eeaa4d2db6ad5d7c14ef097e.png


总结


以上就是今天的学习内容啦~

如果有兴趣的话可以订阅专栏,持续更新呢~

咱们下期再见~


d8bac396c3ce4dfc866ffde316353e90.gif

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
SQL 关系型数据库 MySQL
MySQL数据库的约束+进阶版新增与查询-2
MySQL数据库的约束+进阶版新增与查询
15 1
|
3天前
|
关系型数据库 MySQL 测试技术
MySQL数据库的约束+进阶版新增与查询-1
MySQL数据库的约束+进阶版新增与查询
16 1
|
3天前
|
关系型数据库 MySQL 数据库
【MySQL】:约束全解析
【MySQL】:约束全解析
25 0
|
3天前
|
NoSQL 关系型数据库 MySQL
【MySQL探索之旅】MySQL数据表的增删查改——约束
【MySQL探索之旅】MySQL数据表的增删查改——约束
|
3天前
|
存储 关系型数据库 MySQL
{MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询
{MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询
21 0
|
3天前
|
SQL 关系型数据库 MySQL
DDL语言之常见约束(mysql)
DDL语言之常见约束(mysql)
|
3天前
|
存储 关系型数据库 MySQL
mysql约束
mysql约束
|
3天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
23 0
|
3天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
12 0
|
3天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(上)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
18 0

推荐镜像

更多