mysql的外键怎么加
时间 : 2023-03-08 16:11:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 MySQL 中,可以通过 FOREIGN KEY 约束来实现表与表之间的关联。具体来说,一个表可以定义一个或多个外键,用于参照另一个表的主键或唯一键。本文将分步骤介绍如何在 MySQL 中添加外键。

1. 创建两个表

在本例中,我们将创建两个表:students 和 classes。students 表包含学生信息,而 classes 表包含班级信息。每个班级都有一个唯一 ID,每个学生都会被分配到一个班级。

在 MySQL 中,可以使用以下命令创建表:

CREATE TABLE students (

id INT(11) PRIMARY KEY,

name VARCHAR(50),

class_id INT(11),

FOREIGN KEY (class_id) REFERENCES classes(id)

);

CREATE TABLE classes (

id INT(11) PRIMARY KEY,

name VARCHAR(50)

);

students 表中包含三个字段:id,name 和 class_id。其中,id 是主键,class_id 是外键,引用了 classes 表的 id 字段。

classes 表中包含两个字段:id 和 name。其中,id 是主键,用于唯一标识每个班级。

2. 插入数据

为了测试,我们需要向两个表中插入一些数据:

INSERT INTO classes (id, name) VALUES

(1, 'Class A'),

(2, 'Class B'),

(3, 'Class C');

INSERT INTO students (id, name, class_id) VALUES

(1, 'John', 1),

(2, 'Mary', 1),

(3, 'Tom', 2),

(4, 'Jerry', 2),

(5, 'Mike', 3);

在插入数据时,需要遵守外键约束。例如,如果尝试向 students 表中插入一个不存在的 class_id,则会返回错误。

3. 查询数据

现在,我们可以执行一些查询来验证外键约束是否起作用。例如,我们可以从 students 表中获取每个学生所属班级的名称:

SELECT students.name, classes.name

FROM students

JOIN classes ON students.class_id = classes.id;

结果应该如下所示:

+-------+---------+

| name | name |

+-------+---------+

| John | Class A |

| Mary | Class A |

| Tom | Class B |

| Jerry | Class B |

| Mike | Class C |

+-------+---------+

4. 更新和删除数据

在更新和删除数据时,MySQL 将强制执行外键约束。例如,如果尝试更新 classes 表中的一个 id,以便其与 students 表中的记录不再匹配,则会返回错误。

类似地,在删除 classes 表中的一个记录之前,必须先删除 students 表中引用该记录的任何记录。否则,MySQL 将返回一个错误。

总之,使用 MySQL 的外键约束可以确保表与表之间的关联关系的完整性和一致性。通过按照上述步骤定义和使用外键,可以避免数据不一致的问题。