1. 程式人生 > >inner join 與 left/right join的區別淺談

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同理。本人數學不太好,大家可以自行翻查資料來證實或推翻我現在的想法。