sql各種連接:笛卡爾積,inner join,left join,right join,full join等的測試與區別

轉自 https://blog.csdn.net/u014682191/article/details/53009871

首先原數據庫的數據有:

TEST_A表:和TEST_B表:

 

一、笛卡爾積:

(1)不帶條件的笛卡爾積:

 

select * from TEST_A a,TEST_B b;

(2)帶where條件id相等的笛卡爾積:

 

select * from TEST_A a,TEST_B b where a.ID = b.ID;

 

二、inner join:

 

select * from TEST_A a inner join TEST_B b on a.ID = b.ID; 

 

三、left join:

 

select * from TEST_A a left join TEST_B b on a.ID = b.ID; 

 

 

四、right join:

 

select * from TEST_A a right join TEST_B b on a.ID = b.ID; 

 

 

五、full join:

 

select * from TEST_A a full join TEST_B b on a.ID = b.ID;

 

總結:

            兩表直接笛卡爾積的結果數量是兩表的數據量相乘

            帶where條件id相等的笛卡爾積和inner join結果相同,但是inner join效率快一點

            left join:TEST_A表的ID爲空時拼接TEST_B表的內容爲空,right join則相反

            full join:等於left join和right join的並集

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章