内连接、外连接、全连接

本文介绍了数据库查询中的不同连接方式,包括内连接(innerjoin)、外连接(outerjoin)的左连接(leftjoin)和右连接(rightjoin),以及全连接(fulljoin)的概念。内连接返回两个表中匹配的记录,外连接则包含未匹配的记录,用null值填充。MySQL不支持全连接,但可以通过左连接和右连接的union来模拟。
摘要由CSDN通过智能技术生成

1、内连接:inner join
两张表的并集,也就是A表和B表都必须有数据才能查询出来

-- join
 select * from course c join teacher t on c.t_id = t.t_id 

 -- inner join
 select * from course c inner join teacher t on c.t_id = t.t_id 

-- 逗号的连表方式就是内连接
select * from course c ,  teacher t where c.t_id = t.t_id 

  “inner join”两边的表的位置可以互换,结果都一样          
2、外连接:outer join
2.1、左(外)连接:left [outer] join
左连接从左表取出所有记录,与右表匹配。如果没有匹配,以null值代表右边表的列

 -- left join
select * from course c left join teacher t  on  c.t_id = t.t_id                       

 -- left outer join
 select * from course c left outer join teacher t  on c.t_id = t.t_id 

“left join”两边的表的位置不可以互换,交换后结果可能不一样。需要考虑好哪个是主表,哪个是从表。写在前面的是主表
2.2、 右(外)连接:right [outer] join
 右连接从右表取出所有记录,与左表匹配。如果没有匹配,以null值代表左边表的列      

 -- right join
select * from course c right join teacher t on   c.t_id = t.t_id 

-- right outer join
select * from course c right outer join teacher t on   c.t_id = t.t_id 

3、全连接:full [outer] join
两个表的并集,MySQL暂不支持这种语句,不过可以使用union将两个结果集“堆一起”,利用左连接,右连接分两次将数据取出,然后用union将数据合并去重

-- mysql的全连接
-- mysql中没有full join,mysql可以使用union实现全连接;
select * from a left join b on a.id = b.id
union
select * from a right join b on a.id = b.id

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泡椒鱿鱼来一份

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值