Join有关的几种连接查询

时间:2024-03-16 15:34:39
JOIN 连接查询是SQL基础中串表查询最重要的组成部分之一,也是SQL初学者入门的一个转折点。内容很基础,但很重要!
我们常用如下几种链接方式:
1.INNER JOIN (内连接)
取的是两表之间的交集,如果把两个表的集合看成是两个圆,结果集如下图所示:
Join有关的几种连接查询
举例说明一下:
存在如下两张表
Join有关的几种连接查询Join有关的几种连接查询
Join有关的几种连接查询
最终结果集取的是两张表共有的id的。
2.LEFT JOIN (左连接)
以左边的表为主,结果集取的是左表的全部以及右表中能在左表中关联到的部分,结果集如下:

Join有关的几种连接查询
举例说明一下:
Join有关的几种连接查询
结果集以左表为主,左表的全部内容都可以被列出,而右边只有能和左表关联上的部分才能被列出,关联不上的以null来代替
3.RIGHT JOIN (右连接)
如left join 相反,如下图:
Join有关的几种连接查询
举例说明一下:
Join有关的几种连接查询
左表关联不上的部分标记为null,和left join 相反
4.FULL JOIN (全连接)
结果集是左右表的全部内容,如下图:
Join有关的几种连接查询
举例说明一下:
Join有关的几种连接查询
左右表的全部内容都被展示出来
5.CROSS JOIN (交叉连接,很少用)
前四种链接方式都需要 接 ON 进行bool值的判断,最后一种连接方式不需要进行bool值的判断,结果集行数就是关联的两张表的行数的乘积。
举例说明一下:
Join有关的几种连接查询
结果集一共是9行,交叉连接不需要卡关联条件,直接“胡乱链接”,左表的每一行和右表的每一行做关联,不过我们可以自己加个where 条件:
Join有关的几种连接查询
这个结果集不就和inner join 的结果集一模一样的了嘛!
而且这两者的内部算法以及开销都是一模一样的:
Join有关的几种连接查询