MySQL 两张表的关联方案

在MySQL数据库中,我们可以通过关联(JOIN)来将两个或多个表的数据连接在一起。关联操作在数据库中非常常见,它能够通过共享一个或多个列(通常是主键和外键)来建立表之间的关系,使得我们可以更方便地进行查询和分析。

下面我们将通过一个具体的问题场景来演示如何在MySQL中关联两张表,并给出相应的代码示例。

问题场景

假设我们有两张表,分别是studentsscores

  • 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表。具体步骤如下:

  1. 使用INNER JOIN关键字将两张表进行关联。
  2. 指定关联条件,即students表的主键idscores表的外键student_id进行关联。
  3. 选择需要查询的字段,可以是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