MySQL 两张表的关联方案
在MySQL数据库中,我们可以通过关联(JOIN)来将两个或多个表的数据连接在一起。关联操作在数据库中非常常见,它能够通过共享一个或多个列(通常是主键和外键)来建立表之间的关系,使得我们可以更方便地进行查询和分析。
下面我们将通过一个具体的问题场景来演示如何在MySQL中关联两张表,并给出相应的代码示例。
问题场景
假设我们有两张表,分别是students和scores。
-
students表包含学生的基本信息,结构如下:字段名 类型 说明 id int 学生ID name varchar(50) 学生姓名 gender varchar(10) 学生性别 birthday date 学生生日 address varchar(100) 学生住址 -
scores表包含学生的考试成绩,结构如下:字段名 类型 说明 id int 成绩ID student_id int 学生ID subject varchar(50) 科目 score int 考试成绩 exam_date date 考试日期
我们的问题是:如何根据学生ID查询出学生的基本信息以及他们的考试成绩?
关联方案
我们可以使用JOIN关键字来关联students表和scores表。具体步骤如下:
- 使用
INNER JOIN关键字将两张表进行关联。 - 指定关联条件,即
students表的主键id与scores表的外键student_id进行关联。 - 选择需要查询的字段,可以是
students表中的字段,也可以是scores表中的字段,或者两者的组合。
下面是具体的代码示例:
SELECT students.id, students.name, students.gender, students.birthday, students.address, scores.subject, scores.score, scores.exam_date
FROM students
INNER JOIN scores ON students.id = scores.student_id;
以上代码中,我们使用SELECT语句选择了students表和scores表中的字段,并使用INNER JOIN将两者关联起来。通过指定关联条件students.id = scores.student_id,我们可以根据学生ID查询出学生的基本信息以及他们的考试成绩。
示例结果
假设我们有以下数据:
students表:
| id | name | gender | birthday | address |
|---|---|---|---|---|
| 1 | 张三 | 男 | 1990-01-01 | 北京市海淀区 |
| 2 | 李四 | 男 | 1992-05-10 | 上海市浦东新区 |
| 3 | 王五 | 女 | 1991-11-20 | 广州市天河区 |
scores表:
| id | student_id | subject | score | exam_date |
|---|---|---|---|---|
| 1 | 1 | 数学 | 80 | 2021-01-01 |
| 2 | 1 | 英语 | 90 | 2021-01-02 |
| 3 | 2 | 数学 | 85 | 2021-01-01 |
| 4 | 2 | 英语 | 95 | 2021-01-02 |
| 5 | 3 | 数学 | 75 | 2021-01-01 |
| 6 | 3 | 英语 | 85 | 2021-01-02 |
运行以上的SQL查询语句,我们会得到以下结果:
| id | name | gender | birthday | address | subject | score | exam_date |
|---|---|---|---|---|---|---|---|
| 1 | 张三 | 男 | 199 |
















