inner join 与 left/right join的区别浅谈

       最近遇到了一个关于join查询与left/right join查询区别的问题,在之前并没有去真正去思考过这两者的区别,在看到这个问题的时候我的第一反应是觉得join与left/right join的区别应该就是基本表的区别,不知道是在哪里看到过相应的文章还是怎么样,并且强烈的认为这肯定就是标准答案,被朋友去建议自己尝试一下去证明一下这个猜想。

    猜想开始:

    一:建立班级和学生表并写入假数据,

                                                        班级表:

                                                 

                                                         学生表:

                                                     

 

    二:测试查找育英班的学生

          (1) inner join: select class.cid,class.infos,student.sid,student.sname from class join student on class.cid=student.cid and class.cid=1;

                      

          

    (2) left join: select class.cid,class.infos,student.sid,student.sname from class left  join student on class.cid=student.cid and class.cid=1;

                     

   (3)   right join: select class.cid,class.infos,student.sid,student.sname from class right join student on class.cid=student.cid and class.cid=1;                       

                    

看到结果之后我在考虑刚刚所提到的基本表的事情,我现在认为有基本表这一层概念在里面,但是最根本的问题不是基本表的事情,而是依靠强大的数学背景下的集合的问题。把班级和学生看成集合A和B,inner join是取出两个集合中间共同相等的部分,left join是以左边集合为基本集合全部取出,取出右面中与左边集合的交集部分,right join同理。本人数学不太好,大家可以自行翻查资料来证实或推翻我现在的想法。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值