MySQL数据库三表关系添加外键的实现方法(mysql三表添加外键)

MySQL数据库:三表关系添加外键的实现方法

在MySQL数据库中,当有三个或以上的表之间存在关系时,我们需要添加外键来确保数据一致性和完整性。在这篇文章中,我们将讨论如何在三表关系中添加外键。

我们需要创建三个表:

表1:students(学生表)

“`sql

CREATE TABLE students (

student_id INT AUTO_INCREMENT PRIMARY KEY,

student_name VARCHAR(50) NOT NULL,

student_age INT NOT NULL

);


表2:courses(课程表)

```sql
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_name VARCHAR(50) NOT NULL,
course_credit INT NOT NULL
);

表3:student_courses(学生课程关系表)

“`sql

CREATE TABLE student_courses (

student_id INT NOT NULL,

course_id INT NOT NULL,

FOREIGN KEY (student_id) REFERENCES students(student_id),

FOREIGN KEY (course_id) REFERENCES courses(course_id)

);


在以上代码中,我们定义了三个表,其中student_courses是两个表之间的中间表。为了确保数据一致性和完整性,我们在student_id和course_id列上加入了外键约束。

接下来,我们将演示如何向student_courses表中添加数据,并确保数据的完整性。

我们向students表和courses表中添加数据:

```sql
INSERT INTO students (student_name, student_age) VALUES ('Tom', 20);
INSERT INTO students (student_name, student_age) VALUES ('Jerry', 22);
INSERT INTO students (student_name, student_age) VALUES ('Lucas', 19);
INSERT INTO courses (course_name, course_credit) VALUES ('Math', 3);
INSERT INTO courses (course_name, course_credit) VALUES ('English', 2);
INSERT INTO courses (course_name, course_credit) VALUES ('Physics', 4);

然后,我们将Tom同学选修了Math和English两门课程:

“`sql

INSERT INTO student_courses (student_id, course_id) VALUES ((SELECT student_id FROM students WHERE student_name = ‘Tom’), (SELECT course_id FROM courses WHERE course_name = ‘Math’));

INSERT INTO student_courses (student_id, course_id) VALUES ((SELECT student_id FROM students WHERE student_name = ‘Tom’), (SELECT course_id FROM courses WHERE course_name = ‘English’));


在以上代码中,我们使用了SELECT语句来获取Tom同学和Math、English两门课程的ID,然后将它们插入到student_courses表中。

我们查询student_courses表中的数据,并与students表和courses表联合查询,以获取完整的学生和选课信息:

```sql
SELECT students.student_name, courses.course_name
FROM students
JOIN student_courses ON students.student_id = student_courses.student_id
JOIN courses ON courses.course_id = student_courses.course_id;

以上查询语句将返回以下结果:

+--------------+-------------+
| student_name | course_name |
+--------------+-------------+
| Tom | Math |
| Tom | English |
+--------------+-------------+

总结:

在MySQL数据库中,我们可以通过添加外键来确保三个或以上表之间的数据一致性和完整性。我们必须在中间表中添加外键约束,并参考相关的主表和副表的主键。这样,当我们向中间表中添加或删除数据时,我们就可以确保数据的完整性。


数据运维技术 » MySQL数据库三表关系添加外键的实现方法(mysql三表添加外键)