轉自 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的並集