为了账号安全,请及时绑定邮箱和手机立即绑定

数据库知识点(1)——join查询语句梳理

标签:
MySQL

之前一直对join相关语句的语法和效果模模糊糊的,今天特地整理了一下学习成果,希望对大家有用。O(∩_∩)O~~
join的类型主要有一下五种:
1、内连接(inner)
2、全外连接(outer)
3、左连接(left)
4、右连接(right)
5、交叉连接(cross)
下面开始逐一说明。(附上练习用的两个表:表A,表B)
表A表B
一、内连接
内连接是根据连接条件取两个表的交集。

select a.id aId ,a.name aName,b.id bId,b.name bName from A a inner join B b on a.id = b.id;
select a.id aId ,a.name aName,b.id bId,b.name bName from A a join B b on a.id = b.id;
select a.id aId ,a.name aName,b.id bId,b.name bName from A a ,B b where a.id = b.id;

这三个查询语句查询出结果相同。
inner_1inner_2inner_3

二、全外连接
全外链接是根据连接条件将两个表链接起来,取两个表的并集。

select a.id aId ,a.name aName,b.id bId,b.name bName from A a left join B b on a.id = b.id  union select a.id aId ,a.name aName,b.id bId,b.name bName from A a right join B b on a.id = b.id;

因为目前使用的MySql版本不支持直接使用 full join,所以使用 left join ...union ...right join 的语句代替。效果和 select a.id aId ,a.name aName,b.id bId,b.name bName from A a full join B b on a.id = b.id一样。
把左连接和右连接保留相同的部分,增加上各自不同的部分就是全外连接。
full_1full_2
三、左连接
左连接是以from后的表为基础,展示这个表的全部信息,left join 后的表有符合连接条件的就添加上该表的相应信息,没有则以NULL补缺。

select a.id aId ,a.name aName,b.id bId,b.name bName from B b left join A a on a.id = b.id;
select a.id aId ,a.name aName,b.id bId,b.name bName from B b right join A a on a.id = b.id;

以上查询语句结果相同
left_1left_2
四、右连接
右连接是以from后的表为基础,展示这个表的全部信息,right join 后的表有符合连接条件的就添加上该表的相应信息,没有则以NULL补缺。

select a.id aId ,a.name aName,b.id bId,b.name bName from A a right join B b on a.id = b.id;
 select a.id aId ,a.name aName,b.id bId,b.name bName from B b left join A a on a.id = b.id; 

right_1right_2
五、交叉连接
交叉连接,返回两个表的笛卡尔乘积

select * from A a cross join B b; 
select * from B b cross join A a;

以上语句都返回49条查询结果 。
cross_1

 select * from A a cross join B b where a.id = b.id;

是找出笛卡尔乘积中 a.id 和 b.id 相同的。
cross_2corss_3

点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消