一文教会你写SQL多表查询语句

Mr.zh Lv3
1
最近笔试好多让写sql语句,涉及多表查询。当写的时候突然发现自己曾经学的东西都忘了差不多了,故权当复习加之总结,写下这篇文章,忘诸君能获益一二便发挥了巨大的价值。

1. 前言

在各种问答社区里谈及 SQL 里的各种 JOIN 之间的区别时,最被广为引用的是 CodeProject 上 C.L. Moffatt 的文章 Visual Representation of SQL Joins ,他确实讲得简单明了,使用文氏图来帮助理解,效果明显。本文将沿用他的讲解方式,稍有演绎,可以视为该文较为粗糙的中译版。

2. 常用的 Join

1
2
3
4
总的可以分类三大类。
内连接 inner join (可以简写为join , 如何简写 on 的连接条件就变成了笛卡儿积的结果)
外连接 left join | right join | full join
其他的连接(如交叉连接Cross Join : 得到笛卡儿积的结果)

INNER JOIN

INNER JOIN 一般被译作内连接。内连接查询能将左表(表 A)和右表(表 B)中能关联起来的数据连接后返回。

文氏图:

INNER JOIN

INNER JOIN

LEFT JOIN

LEFT JOIN 一般被译作左连接,也写作 LEFT OUTER JOIN。左连接查询会返回左表(表 A)中所有记录,不管右表(表 B)中有没有关联的数据。在右表中找到的关联数据列也会被一起返回。

文氏图:

LEFT JOIN

RIGHT JOIN

RIGHT JOIN 一般被译作右连接,也写作 RIGHT OUTER JOIN。右连接查询会返回右表(表 B)中所有记录,不管左表(表 A)中有没有关联的数据。在左表中找到的关联数据列也会被一起返回。

文氏图:

RIGHT JOIN

FULL OUTER JOIN

FULL OUTER JOIN 一般被译作外连接、全连接,实际查询语句中可以写作 FULL OUTER JOINFULL JOIN。外连接查询能返回左右表里的所有记录,其中左右表里能关联起来的记录被连接后返回。

文氏图:

FULL OUTER JOIN

3. 不常用的Join

  • Title: 一文教会你写SQL多表查询语句
  • Author: Mr.zh
  • Created at : 2024-06-13 15:48:03
  • Updated at : 2024-06-13 20:47:38
  • Link: https://redefine.ohevan.com/2024/06/13/一文教会你写SQL多表查询语句/
  • License: This work is licensed under CC BY-NC-SA 4.0.