大数跨境
0
0

什么是主键、外键、唯一键

什么是主键、外键、唯一键 Linux运维技术之路
2025-09-13
0
导读:什么是主键、外键、唯一键?

 










 

什么是主键、外键、唯一键

一、主键(PRIMARY KEY)

  • • 定义:表中用来唯一标识一行数据的字段(或字段组合)。
  • • 特点
    1. 1. 唯一(不能重复)
    2. 2. 非空(NOT NULL)
    3. 3. 一张表只能有 一个主键

👉 例子:


   
    
   CREATE TABLE student (
    student_id INT PRIMARY KEY,   -- 主键
    name VARCHAR(50),
    age INT
);

这里 student_id 是主键,每个学生必须有唯一的学号。


二、唯一键(UNIQUE KEY)

  • • 定义:保证字段的值不能重复,但允许出现 NULL
  • • 特点
    1. 1. 可以有多个唯一键
    2. 2. 与主键不同,唯一键 允许空值(但一个唯一键字段里,多个 NULL 也算“不冲突”)

👉 例子:


   
    
   CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    phone CHAR(11) UNIQUE,   -- 唯一键,手机号不能重复
    email VARCHAR(100) UNIQUE
);

这里手机号和邮箱都要求唯一,但不是主键。


三、外键(FOREIGN KEY)

  • • 定义:一个表的字段,引用另一张表的主键,用来保证数据的 参照完整性
  • • 特点
    1. 1. 外键值必须存在于被引用表的主键/唯一键中
    2. 2. 用来建立表与表之间的关系(比如一对多)

👉 例子:


   
    
   -- 学生表
CREATE TABLE
 student (
    student_id INT PRIMARY KEY,
    name VARCHAR(50)
);

-- 成绩表

CREATE TABLE
 score (
    id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT,
    subject VARCHAR(50),
    grade INT,
    FOREIGN KEY
 (student_id) REFERENCES student(student_id)
);

这里 score.student_id 是外键,必须能在 student 表中找到对应的 student_id,否则插入失败。


四、总结对比

键类型
是否唯一
是否允许空值
是否能有多个
主要作用
主键 (PK)
✅ 唯一
❌ 不允许
❌ 一张表只有一个
唯一标识一条记录
唯一键 (UK)
✅ 唯一
✅ 允许
✅ 可以有多个
保证某列值不重复
外键 (FK)
❌ 不保证唯一
✅ 可空
✅ 可以有多个
建立表与表关系

⚡ 记忆口诀:

  • • 主键 → 唯一 & 不为空(身份证)
  • • 唯一键 → 可以唯一,但能空(手机号/邮箱)
  • • 外键 → 建立联系(学生表-成绩表)

 




 

 


往期回顾


【声明】内容源于网络
0
0
Linux运维技术之路
专注运维架构、高可用、高并发、高性能、大数据、容器化、数据库、python、devops等开源技术和实践的分享。
内容 347
粉丝 0
Linux运维技术之路 专注运维架构、高可用、高并发、高性能、大数据、容器化、数据库、python、devops等开源技术和实践的分享。
总阅读710
粉丝0
内容347