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

版权声明:原创文章,转载请注明原文地址。 https://blog.csdn.net/it_r00t/article/details/83900439

       最近遇到了一个关于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同理。本人数学不太好,大家可以自行翻查资料来证实或推翻我现在的想法。

  

猜你喜欢

转载自blog.csdn.net/it_r00t/article/details/83900439