MySQL多表查询练习三表查询(mysql三表查询题)

MySQL多表查询练习:三表查询

在关系型数据库中,多表查询是非常常见的操作。在此次MySQL练习中,我们将练习三表查询,以便更好地理解多表查询的概念和运用。

在此之前,我们需要先了解一下三种连接查询的概念:

– 内连接查询:只查询两个表中相互匹配的行。

– 左连接查询:查询左表中所有的行,以及右表中匹配的行。

– 右连接查询:查询右表中所有的行,以及左表中匹配的行。

接下来,我们将通过以下的示例来演示三种连接查询的具体应用。

三个表分别为:学生表(students)、选课表(chosen_courses)和课程表(courses)。它们的数据结构如下:

students表:

| id | name | age | gender |

|——-|——–|——-|——–|

| 1 | Alice | 18 | F |

| 2 | Bob | 20 | M |

| 3 | Charlie| 19 | M |

| 4 | David | 20 | M |

chosen_courses表:

| student_id | course_id |

|————|———–|

| 1 | 1 |

| 1 | 2 |

| 2 | 2 |

| 3 | 3 |

| 4 | 1 |

courses表:

| id | course_name | teacher_name |

|——|—————-|————–|

| 1 | Math | Mr. Lee |

| 2 | English | Mr. Smith |

| 3 | Chemistry | Ms. Brown |

| 4 | Physics | Ms. Green |

示例一:内连接查询

内连接查询需要在两个表中都存在的记录。上述示例中,我们可以查询出选课信息和对应的学生和课程信息:

“` sql

SELECT students.name, courses.course_name

FROM students

INNER JOIN chosen_courses ON students.id = chosen_courses.student_id

INNER JOIN courses ON chosen_courses.course_id = courses.id;


查询结果为:

| name | course_name |
|---------|-------------|
| Alice | Math |
| Alice | English |
| Bob | English |
| Charlie | Chemistry |
| David | Math |

示例二:左连接查询

左连接查询可以获取左表的所有行,以及右表中与左表相关联的行。如果右表中没有相应的行,则显示NULL值。下面我们可以查询出每个学生选了哪些课程:

``` sql
SELECT students.name, courses.course_name
FROM students
LEFT JOIN chosen_courses ON students.id = chosen_courses.student_id
LEFT JOIN courses ON chosen_courses.course_id = courses.id;

查询结果为:

| name | course_name |

|———|————-|

| Alice | Math |

| Alice | English |

| Bob | English |

| Charlie | Chemistry |

| David | Math |

| Alice | Biology |

| NULL | Physics |

示例三:右连接查询

右连接查询与左连接查询类似,只不过它会获取右表的所有行。下面我们可以查询出每个课程被哪些学生选了:

“` sql

SELECT students.name, courses.course_name

FROM students

RIGHT JOIN chosen_courses ON students.id = chosen_courses.student_id

RIGHT JOIN courses ON chosen_courses.course_id = courses.id;


查询结果为:

| name | course_name |
|---------|-------------|
| Alice | Math |
| Bob | English |
| Charlie | Chemistry |
| David | Math |
| Alice | Biology |
| NULL | Physics |
以上就是关于MySQL多表查询练习三表查询的介绍。通过掌握三种连接查询,我们可以更好地解决各种多表查询问题。

数据运维技术 » MySQL多表查询练习三表查询(mysql三表查询题)