(left 、right、inner 、outer、cross) join 一次搞懂

(left 、right、inner ) join 一次搞懂

最近刷了一些sql题,发现连接查询用的很多,记录一下。

首先附上一张很清晰的图,通过这张图你就能很形象的理解出各种连接查询的区别。
在这里插入图片描述

接下来我们分别来看看各种查询的特点。

left join

左连接,返回的数据行数与左表数据一致。以左表为主。查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。看图理解。
在这里插入图片描述
举个牛客网上的例子:
题目描述
有一个员工表,employees简况如下:
在这里插入图片描述
有一个部门表,dept_emp简况如下
在这里插入图片描述

问题:

请你查找所有已经分配部门的员工的last_name和first_name以及dept_no,也包括暂时没有分配具体部门的员工,以上例子如下:
在这里插入图片描述

sql语句:

select employees.last_name, employees.first_name, dept_emp.dept_no
from employees
left join dept_emp
on dept_emp.emp_no = employees.emp_no

right join

“右连接”,表1右连接表2,以右表为主,关联查询表1的数据,查出表2所有数据以及表1和表2有交集的数据。跟左连接相反,所以把表的位置改下,就可以改成右连接得到相同的结果
在这里插入图片描述

inner join (join)

join,其实就是“inner join”,为了简写才写成join,两个是表示一个的,内连接,表示以两个表的交集为主,查出来是两个表有交集的部分,其余没有关联就不额外显示出来
在这里插入图片描述
举例:
两张表:
在这里插入图片描述

使用inner join查询:

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name

在这里插入图片描述
结果就是A表和B表的交集。

full outer join

只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.它结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

在这里插入图片描述

SELECT
  * 
FROM 
  TableA 
FULL OUTER JOIN 
  TableB
ON
  TableA.name = TableB.name

结果:在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值