JOIN(联表查询)
联表查询(Join)是一种在数据库中使用多个表进行关联查询的操作。它通过使用 JOIN 关键字将多个表连接在一起,并根据关联条件从这些表中检索数据
INNER JOIN(内连接)
内连接(Inner Join)是一种在联表查询中使用的链接方式,它返回满足关联条件的行
语法
SELECT 列表 FROM 左表 INNER JOIN 右表 ON 关联条件;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l1Ociimq-1689851063423)(./image-20230720102802654.png)]
- 表A:
ID Name --------- 1 John 2 Mary 3 David
- 表B:
ID Age -------- 1 30 2 25 4 40
- 内连接,可以根据ID列将表A和表B进行关联,并返回满足关联条件的行:
SELECT A.ID, A.Name, B.Age FROM A INNER JOIN B ON A.ID = B.ID;
- 结果集:
ID Name Age -------------- 1 John 30 2 Mary 25
LEFT JOIN(左连接)
左连接(Left Join)是一种在联表查询中使用的链接方式,返回左表中的所有行,以及右表中满足关联条件的匹配行
语法
SELECT 列表 FROM 左表 LEFT JOIN 右表 ON 关联条件;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7zbJ5fjC-1689851063424)(./image-20230720102956745.png)]
- 表A:
ID Name --------- 1 John 2 Mary 3 David
- 表B:
ID Age -------- 1 30 2 25 4 40
- 左连接,可以根据ID列将表A和表B进行关联,并返回满足关联条件的行:
SELECT A.ID, A.Name, B.Age FROM A LEFT JOIN B ON A.ID = B.ID;
- 结果集:
ID Name Age -------------- 1 John 30 2 Mary 25 3 David NULL
左连接返回了表A中的所有行,以及与表B中的ID匹配的行。由于表B中没有ID为3的行,所以返回的Age列为NULL
RIGHT JOIN(右连接)
右连接(Right Join)是一种在联表查询中使用的链接方式,它返回右表中的所有行,以及左表中满足关联条件的匹配行
语法
SELECT 列列表 FROM 左表 RIGHT JOIN 右表 ON 关联条件;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ax5cLC4-1689851063424)(./image-20230720102817963.png)]
- 表A:
ID Name --------- 1 John 2 Mary 3 David
- 表B:
ID Age -------- 1 30 2 25 4 40
- 右连接,可以根据ID列将表A和表B进行关联,并返回满足关联条件的行:
SELECT A.ID, A.Name, B.Age FROM A RIGHT JOIN B ON A.ID = B.ID;
- 结果集:
ID Name Age -------------- 1 John 30 2 Mary 25 NULL NULL 40
右连接返回了表B中的所有行,以及与表A中的ID匹配的行。由于表A中没有ID为4的行,所以返回的ID和Name列为NULL
FULL JOIN(全连接)
全连接(Full Join)是一种在联表查询中使用的连接方式,它返回左表和右表中的所有行,并将它们按照关联条件进行匹配
语法
SELECT 列列表 FROM 左表 FULL JOIN 右表 ON 关联条件;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AIDCAe56-1689851063425)(./image-20230720102904341.png)]
- 表A:
ID Name --------- 1 John 2 Mary 3 David
- 表B:
ID Age -------- 1 30 2 25 4 40
- 全连接,可以将表A和表B进行关联,并返回左表和右表中的所有行:
SELECT A.ID, A.Name, B.Age FROM A FULL JOIN B ON A.ID = B.ID;
- 结果集:
ID Name Age -------------- 1 John 30 2 Mary 25 3 David NULL NULL NULL 40
全连接返回了表A和表B中的所有行。由于表A中没有ID为4的行,所以返回的ID、Name和Age列为NULL;同样地,由于表B中没有ID为3的行,所以返回的ID、Name和Age列也为NULL
Cross Join(交叉连接)
交叉连接(Cross Join),也称为笛卡尔积(Cartesian Product),是一种在联表查询中使用的连接方式;返回两个表的所有可能组合,即将左表的每一行与右表的每一行进行组合
语法
SELECT 列列表 FROM 左表 CROSS JOIN 右表;
- 表 A:
| ID | Name | |----|-------| | 1 | John | | 2 | Mary | | 3 | David |
- 表 B:
| ID | Department | |----|------------| | 1 | Sales | | 2 | Marketing |
- 交叉连接表 A 和表 B,我们得到了所有可能的组合
SELECT A.ID, A.Name, B.Department FROM A CROSS JOIN B;
- 结果集:
| ID | Name | Department | |----|-------|------------| | 1 | John | Sales | | 1 | John | Marketing | | 2 | Mary | Sales | | 2 | Mary | Marketing | | 3 | David | Sales | | 3 | David | Marketing |
🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——
点赞
👍收藏
⭐️评论
📝