用具体的图表介绍一下inner join 和left join的区别,
时间: 2023-07-03 20:28:40 浏览: 77
好的,下面我将用具体的图表来介绍 inner join 和 left join 的区别。
假设我们有两个表:学生表(students)和班级表(classes)。
students 表结构:
| student_id | student_name | class_id |
|------------|--------------|----------|
| 1 | Alice | 1 |
| 2 | Bob | 2 |
| 3 | Charlie | 1 |
| 4 | David | NULL |
classes 表结构:
| class_id | class_name |
|----------|------------|
| 1 | A班 |
| 2 | B班 |
| 3 | C班 |
现在,我们想要将这两个表连接起来,得到学生所在的班级信息。下面我们分别使用 inner join 和 left join 来实现。
使用 inner join 的连接方式:
```
SELECT *
FROM students
INNER JOIN classes
ON students.class_id = classes.class_id;
```
连接后的结果如下图所示:
![inner join](https://i.imgur.com/5eg2VzB.png)
可以看到,使用 inner join 连接后,只有学生表中 class_id 字段和班级表中的 class_id 字段匹配的数据才被连接起来,而学生表中的 David 这条数据没有被连接,因为它的 class_id 字段为 NULL。
使用 left join 的连接方式:
```
SELECT *
FROM students
LEFT JOIN classes
ON students.class_id = classes.class_id;
```
连接后的结果如下图所示:
![left join](https://i.imgur.com/9DxS6sM.png)
可以看到,使用 left join 连接后,除了连接匹配的数据之外,学生表中的所有数据都被保留了下来,而没有匹配上的班级信息被填充为 NULL。
综上所述,inner join 仅返回两个表中匹配的记录,而 left join 则返回左表中的所有记录,同时匹配的右表记录填充为 NULL。
阅读全文