資料庫中的左串連和右串連的區別,資料庫連接區別

來源:互聯網
上載者:User

資料庫中的左串連和右串連的區別,資料庫連接區別

資料庫中的左串連和右串連的區別


    今天,別人問我一個問題:資料庫中的左串連和右串連有什麼區別?如果有A,B兩張表,A表有3條資料,B表有4條資料,通過左串連和右串連,查詢出的資料條數最少是多少條?最多是多少條?


    我被這個問題問住了,後來我去問了資料庫開發人員,結果結果各種各樣:

    a 最大12  最小0

    b 最大12  最小未知

    c 最大未知 最小為3

    d 最大12   最小為3

    e 不清楚


1、說明

(1)左串連:只要左邊表中有記錄,資料就能檢索出來,而右邊有

     的記錄必要在左邊表中有的記錄才能被檢索出來

(2)右串連:右串連是只要右邊表中有記錄,資料就能檢索出來


2、舉例說明

    左串連:SELECT * FROM t_left_tab a LEFT JOIN t_right_tab b ON a.`id` = b.`id`; 

    查詢結果:



    右串連:SELECT * FROM t_right_tab a LEFT JOIN t_left_tab b ON a.`id` = b.`id`;

       查詢結果:

 


   查詢最大條數:SELECT * FROM t_left_tab a LEFT JOIN t_right_tab b ON 1=1; 

    查詢結果:

     


3、總結

   A 資料庫左串連和右串連的區別:主表不一樣

   B 通過左串連和右串連,最小條數為3(記錄條數較小的記錄數),最大條數為12(3×4) 


資料庫操作中,左串連,右串連是什,舉例說明

假設a表有兩個欄位,Aid、name, b 表也有兩欄位 Bid,nameid
其中 nameid是Aid在b 表中的外鍵。
a表有資料如下:
Aidname
1a
2b
3c
b表有資料如下:
Bidnameid
11
21
31
42
52
用左串連,說白一點就是以左邊那個表為標準,左邊那表(表a)的所有記錄必須得全部出現,例如:
select * from a left join b on a.Aid=b.nameid
結果應應該為:
AidnameBidnameid
1a11
1a21
1a31
2b42
2b52
3cNULLNULL
表a 的 Aid為1的出現了三次,Aid為2的出現了兩次,Aid為3的出現了一次,全部都出現了。但因為在表b中沒有以Aid為3對應的記錄,所以用null來填充。

同樣道理,用右串連,說白一點就是以右邊那個表為標準,
例如:select * from a right join b on a.Aid=b.nameid
結果應該為:
AidnameBidnameid
1a11
1a21
1a31
2b42
2b52
表b的記錄必須全部出現,但沒有出現 a表中Aid為3的記錄,是因為b表中沒有以之對應的記錄,而且此時是以b表為標準的。這樣的比喻不知你看不看得明。
 
對於資料庫的左外串連 右外串連的意思是什

FROM Student LEFT OUTER JOIN SC
ON Student.Sno=SC.Sno;
無論學生的sno是否對應得到sc的sno,都會選出該學生

FROM Student a,
SC b
where a.Sno=b.Sno;
如果某個學生的sno在sc裡沒有,那麼就不會選出該學生
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.