mysql主键和外键的作用
时间: 2025-03-06 21:23:02 浏览: 95
### MySQL 中主键和外键的功能与作用
#### 主键(Primary Key)
主键用于唯一标识表中的每一行记录。通过确保每条记录都有一个独一无二的标识符,可以防止重复数据并提高查询效率。在创建表时,通常会指定某一列为 `id` 并将其设为主键[^1]。
```sql
CREATE TABLE Student (
id INT PRIMARY KEY,
name VARCHAR(50)
);
```
这条语句定义了一个名为 `Student` 的新表,在其中 `id` 列被设定为主键,意味着该列不允许有重复值或空值[^2]。
#### 外键(Foreign Key)
外键用来建立两个表之间的联系,即参照完整性约束。具体来说,当一张表内的某字段作为另一张表中某个特定记录的引用时,则此字段称为外键。这有助于维护跨多张表格的数据一致性和逻辑关系[^3]。
假设有一个课程表 `Course` 和学生选课情况表 `Enrollment`:
```sql
CREATE TABLE Course (
course_id INT PRIMARY KEY,
title VARCHAR(100),
credits TINYINT UNSIGNED
);
CREATE TABLE Enrollment (
student_id INT NOT NULL,
course_id INT NOT NULL,
grade CHAR(2),
FOREIGN KEY (course_id) REFERENCES Course(course_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
```
这里,`Enrollment` 表里的 `course_id` 字段就是指向 `Course` 表的一个外键。它表示每位学生的选修课程对应于实际存在的课程编号。如果删除了一门课程,那么所有与此课程相关的报名记录也会自动移除 (`ON DELETE CASCADE`);同样地,更新一门课程的信息会影响到所有的关联记录(`ON UPDATE CASCADE`)。
#### 功能对比
- **唯一性**:两者均需保持其值的独特性,不过值得注意的是,虽然主键不接受任何 `NULL` 值,但允许其他类型的索引包含 `NULL`。
- **数量限制**:在一个给定的关系型数据库模式下,仅能设立单一主键,然而却能够拥有若干个不同的外键来连接至其它实体对象。
综上所述,合理运用主键和外键对于构建稳定可靠的应用程序至关重要。这些机制不仅简化了复杂业务逻辑的设计过程,而且增强了系统的整体性能表现。
阅读全文
相关推荐


















