介绍一下 left join 和 inner join 和 out join的区别,用二维表展示
时间: 2023-07-04 13:29:23 浏览: 113
好的,这是一个经典的 SQL 问题。让我来解答你的问题。
首先,让我们来定义这三种 join:
- Inner Join:内连接,只返回两个表中共有的数据。
- Left Join:左连接,返回左表中的所有数据和右表中与左表数据匹配的数据。
- Outer Join:外连接,又分为左外连接、右外连接和全外连接,返回左右表中所有数据和匹配的数据。
接下来,我将用一个二维表来展示这三种 join 的区别。假设有两个表 A 和 B,它们的结构如下:
表 A:
| id | name |
|----|------|
| 1 | Tom |
| 2 | Alex |
| 3 | Jack |
表 B:
| id | age |
|----|-----|
| 1 | 20 |
| 2 | 25 |
| 4 | 30 |
接下来,我们将用这两个表来展示三种 join 的区别。
1. Inner Join
Inner Join 只返回两个表中共有的数据,即只返回 id 为 1 和 2 的数据。
| id | name | age |
|----|------|-----|
| 1 | Tom | 20 |
| 2 | Alex | 25 |
2. Left Join
Left Join 返回左表中的所有数据和右表中与左表数据匹配的数据,即返回 id 为 1、2、3 的数据和 id 为 1、2 的数据的交集。
| id | name | age |
|----|------|-----|
| 1 | Tom | 20 |
| 2 | Alex | 25 |
| 3 | Jack | NULL|
3. Outer Join
Outer Join 又分为左外连接、右外连接和全外连接。
- 左外连接:返回左表中的所有数据和右表中与左表数据匹配的数据,以及右表中没有匹配数据的 NULL 值数据。
| id | name | age |
|----|------|-----|
| 1 | Tom | 20 |
| 2 | Alex | 25 |
| 3 | Jack | NULL|
| 4 | NULL | 30 |
- 右外连接:返回右表中的所有数据和左表中与右表数据匹配的数据,以及左表中没有匹配数据的 NULL 值数据。
| id | name | age |
|----|------|-----|
| 1 | Tom | 20 |
| 2 | Alex | 25 |
| NULL| NULL | 30 |
- 全外连接:返回左右表中所有数据和匹配的数据,以及没有匹配数据的 NULL 值数据。
| id | name | age |
|----|------|-----|
| 1 | Tom | 20 |
| 2 | Alex | 25 |
| 3 | Jack | NULL|
| 4 | NULL | 30 |
阅读全文