MySQL两张表关联添加

在数据库中,经常会遇到需要在两张或多张表之间进行关联操作的情况。本文将介绍如何使用MySQL来实现两张表的关联添加操作,并提供示例代码来帮助读者更好地理解。

1. 创建表

首先,我们需要创建两张表。假设我们有两张表,分别是studentscoursesstudents表用于存储学生的信息,包括学生的ID(id)、姓名(name)和年龄(age)。courses表用于存储课程的信息,包括课程的ID(id)、名称(name)和学分(credit)。

下面是创建这两张表的SQL语句:

CREATE TABLE students (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  age INT NOT NULL
);

CREATE TABLE courses (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  credit INT NOT NULL
);

2. 插入数据

接下来,我们需要向这两张表中插入一些数据。假设我们有以下数据:

学生表(students):
| id | name  | age |
|----|-------|-----|
| 1  | 张三  | 18  |
| 2  | 李四  | 20  |
| 3  | 王五  | 19  |

课程表(courses):
| id | name   | credit |
|----|--------|--------|
| 1  | 语文   | 4      |
| 2  | 数学   | 3      |
| 3  | 英语   | 2      |

我们可以使用以下SQL语句向这两张表中插入数据:

INSERT INTO students (name, age) VALUES ('张三', 18);
INSERT INTO students (name, age) VALUES ('李四', 20);
INSERT INTO students (name, age) VALUES ('王五', 19);

INSERT INTO courses (name, credit) VALUES ('语文', 4);
INSERT INTO courses (name, credit) VALUES ('数学', 3);
INSERT INTO courses (name, credit) VALUES ('英语', 2);

3. 关联添加

现在,我们已经创建了两张表并向其插入了一些数据。接下来,我们将进行两张表的关联添加操作。假设我们需要将学生和课程进行关联,即每个学生可以选择多门课程。

为了实现这个关联,我们可以创建一个中间表student_courses,用于存储学生和课程的关联关系。中间表student_courses包含两个字段,分别是student_idcourse_id,分别用于存储学生的ID和课程的ID。

下面是创建中间表的SQL语句:

CREATE TABLE student_courses (
  student_id INT,
  course_id INT,
  CONSTRAINT fk_student FOREIGN KEY (student_id) REFERENCES students(id),
  CONSTRAINT fk_course FOREIGN KEY (course_id) REFERENCES courses(id)
);

现在,我们已经创建了中间表,接下来需要向中间表插入数据来建立学生和课程之间的关联关系。假设张三选择了语文和数学两门课程,李四选择了数学和英语两门课程,王五选择了语文和英语两门课程。

下面是向中间表插入数据的SQL语句:

INSERT INTO student_courses (student_id, course_id) VALUES (1, 1);
INSERT INTO student_courses (student_id, course_id) VALUES (1, 2);
INSERT INTO student_courses (student_id, course_id) VALUES (2, 2);
INSERT INTO student_courses (student_id, course_id) VALUES (2, 3);
INSERT INTO student_courses (student_id, course_id) VALUES (3, 1);
INSERT INTO student_courses (student_id, course_id) VALUES (3, 3);

4. 查询关联数据

现在,我们已经完成了关联添加操作,接下来我们可以查询关联后的数据。假设我们想要查询张三选择了哪些课程,可以使用以下SQL语句:

SELECT c.name
FROM courses c
JOIN student_courses sc ON c.id = sc.course_id
WHERE sc.student_id = 1;