什么是主键、外键、唯一键
一、主键(PRIMARY KEY)
-
• 定义:表中用来唯一标识一行数据的字段(或字段组合)。 -
• 特点: -
1. 唯一(不能重复) -
2. 非空(NOT NULL) -
3. 一张表只能有 一个主键
👉 例子:
CREATE TABLE student (
student_id INT PRIMARY KEY, -- 主键
name VARCHAR(50),
age INT
);
这里 student_id 是主键,每个学生必须有唯一的学号。
二、唯一键(UNIQUE KEY)
-
• 定义:保证字段的值不能重复,但允许出现 NULL。 -
• 特点: -
1. 可以有多个唯一键 -
2. 与主键不同,唯一键 允许空值(但一个唯一键字段里,多个 NULL 也算“不冲突”)
👉 例子:
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
phone CHAR(11) UNIQUE, -- 唯一键,手机号不能重复
email VARCHAR(100) UNIQUE
);
这里手机号和邮箱都要求唯一,但不是主键。
三、外键(FOREIGN KEY)
-
• 定义:一个表的字段,引用另一张表的主键,用来保证数据的 参照完整性。 -
• 特点: -
1. 外键值必须存在于被引用表的主键/唯一键中 -
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,否则插入失败。
四、总结对比
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
⚡ 记忆口诀:
-
• 主键 → 唯一 & 不为空(身份证) -
• 唯一键 → 可以唯一,但能空(手机号/邮箱) -
• 外键 → 建立联系(学生表-成绩表)

