不会2023年你还不知道Mysql中index、primary key、unique key、foreign key是什么和如何创建吧?

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 不会2023年你还不知道Mysql中index、primary key、unique key、foreign key是什么和如何创建吧?

首先了解一下什么是索引,索引通常用来快速定位到某一行的数据,MySQL的索引是存在B树中的。


候选码 : 若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为候选码。例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。

主码 : 主码也叫主键。主码是从候选码中选出来的。 一个实体集中只能有一个主码,但可以有多个候选码。

外码 : 外码也叫外键。如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。

主属性 : 候选码中出现过的属性称为主属性。比如关系 工人(工号,身份证号,姓名,性别,部门). 显然工号和身份证号都能够唯一标示这个关系,所以都是候选码。工号、身份证号这两个属 性就是主属性。如果主码是一个属性组,那么属性组中的属性都是主属性。

非主属性: 不包含在任何一个候选码中的属性称为非主属性。比如在关系——学生(学号,姓名,年龄,性别,班级)中,主码是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性

index(唯一索引)

1.一般为普通索引,没啥特殊,通常是作为辅助查询


使用语法:

ALTER TABLE 表名 ADD INDEX 索引名称(索引字段);

primary key(主键约束)

1.可以为一列或者多列为主键,但主键只能有一个

2.没有重复值且不允许为空(NULL)

3.可以作为外键

4.一般不会去更新,因为更新的代价很大,对损耗很多性能

使用语法:

  • 在表中
PRIMARY KEY (`id`) USING BTREE

image.png

unique key(唯一性约束)

1.一张表可以有多个唯一性约束,通常限制非主键列

2.没有重复值但允许为空(NULL)

3.不可作为外键

4.只要唯一就可以更新

使用语法:

CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name (index_col_name, ...);

foreign key

1.起约束作用(constraint)

2.通常是联系其他表(两个以上)的主键,组合在一起成为本表的主键

使用语法:

FOREIGN KEY(user_id) REFERENCES user(id),

image.png

primary key和unique key区别

primary key = unique key +不能为null

index(唯一索引)和unique key(唯一性约束)区别

唯一约束是通过创建唯一索引来实现,删除唯一约束时可以只删除约束而不删除对应的索引

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
关系型数据库 MySQL 网络安全
mysql只能通过ssh通道连接到内网,如何创建只能访问MySQL的SSH用户
mysql只能通过ssh通道连接到内网,如何创建只能访问MySQL的SSH用户
334 0
|
8月前
|
SQL 关系型数据库 MySQL
MySQL唯一约束(UNIQUE KEY)
MySQL唯一约束(UNIQUE KEY)
234 0
|
6月前
|
XML 关系型数据库 MySQL
【MySQL异常】ExecutorException: Error getting generated key or setting result to parameter object
【MySQL异常】ExecutorException: Error getting generated key or setting result to parameter object
125 0
|
29天前
|
关系型数据库 MySQL
MySQL创建表出现 Specified key was too long; max key length is 767 bytes
MySQL创建表出现 Specified key was too long; max key length is 767 bytes
20 2
|
5月前
|
关系型数据库 MySQL 数据库
连接MySQL时报错:Public Key Retrieval is not allowed的解决方法
连接MySQL时报错:Public Key Retrieval is not allowed的解决方法
167 1
|
7月前
|
关系型数据库 MySQL
Mysql 主键冲突(ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY')
Mysql 主键冲突(ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY')
344 0
|
4月前
|
关系型数据库 MySQL
零基础带你学习MySQL—foreign key 外键(二十六)
零基础带你学习MySQL—foreign key 外键(二十六)
|
4月前
|
关系型数据库 MySQL
零基础带你学习MySQL—primary key主键(二十三)
零基础带你学习MySQL—primary key主键(二十三)
|
5月前
|
SQL 关系型数据库 MySQL
Mysql统计技巧:ON DUPLICATE KEY UPDATE用法
Mysql统计技巧:ON DUPLICATE KEY UPDATE用法
|
5月前
|
关系型数据库 MySQL 数据库
Mysql中key与index区别
Mysql中key与index区别