当前位置: 首页 > MySQL数据库

mysql中外键和主键的区别有哪些

时间:2026-01-28 12:53:13

本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。

mysql中外键和主键有区别吗

主键和外键都是约束。主键用于保持数据完整性,外键作用于两个表建立连接。下面分别介绍主键、外键及其区别。

主键

表中经常有多个列,主键是唯一标识表中每行的列。一个表只能有一个主键,主键列不能包含null值。

例如:
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键;

课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键

联合主键

当某一列不能唯一识别每行,使用联合主键,将两列看为一个整体。非空、唯一、不重复。

例如:
成绩表(学号,课程号,成绩)

成绩表中单一一个属性无法唯一标识一条记录,学号和课程编号的组合才可以唯一标识一条记录,所以学号和课程编号的属性组是一个主键。

外键

外键用于与另一张表相关联。以另一个表的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。
表的外键值必须在主表中能找到。
当主表的记录被从表参照时,主表的记录不允许删除。

例如:

class表与Student表通过class_id 关联,实现一对多的关系。class_id作为Student表的外键,Student表为从表,在class表中为主键,class表为主表。

主键、外键和索引的区别:a.定义

主键:唯一标识一条记录,不能有重复,不允许为空。
外键:表的外键是另一表的主键,外键是可以有重复的,可以是空值。
索引:该字段没有重复值,但可以有一个空值。

b.作用

主键:用来保证数据完整性
外键:用来和其他表建立联系用
索引:用来提高查询排序的速度

c.个数

主键:主键只能有一个。
外键:一个表可以有多个外键。
索引:一个表可以有多个唯一索引。

添加主键、外键约束

主键约束

create table 表名(  列名1 数据类型 primary key,列名2 数据类型);--------或------------create table 表名(  列名1 数据类型,列名2 数据类型,  primary key(列名1));------已经存在的表-----alter table 表名 add primary key(列名);

外键约束

---------主表------create table 表1(列名1 数据类型 primary key,列名2 数据类型  );----从表(外键约束所在的表)------create table 表2(FK_列名1 数据类型,  列名2 数据类型,  constraint 外键约束的名字 foreign key(从表的列名1) references 主表表名(主表的列名1));

上一篇:mysql嵌套查询语句实例分析
下一篇:MySQL中的事务和MVCC原理是什么
mysql
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素