SQL中的各種JOIN(inner join,full outer join,left join,right join,cross join )(轉載)

          a. 交叉連接CROSS JOIN
          如果不帶WHERE條件子句,它將會返回被連接的兩個表的笛卡爾積,返回結果的行數等于兩個表行數的乘積;


          舉例,下列A、B、執行結果相同,但是效率不一樣:
          A:SELECT * FROM table1 CROSS JOIN table2
          B:SELECT * FROM table1,table2

          C:select * from table1 a inner join table2 b


          A:select a.*,b.* from table1 a,table2 b where a.id=b.id
          B:select * from table1 a cross join table2 b where a.id=b.id (
          注:cross join后加條件只能用where,不能用on)
          C:select * from table1 a inner join table2 b on a.id=b.id


          一般不建議使用方法A和B,因為如果有WHERE子句的話,往往會先生成兩個表行數乘積的行的數據表然后才根據WHERE條件從中選擇。 
          因此,如果兩個需要求交際的表太大,將會非常非常慢,不建議使用。


          b. 內連接INNER JOIN
          兩邊表同時符合條件的組合

          如果僅僅使用
          SELECT * FROM table1 INNER JOIN table2

          內連接如果沒有指定連接條件的話,和笛卡爾積的交叉連接結果一樣,但是不同于笛卡爾積的地方是,沒有笛卡爾積那么復雜要先生成行數乘積的數據表,內連接的效率要高于笛卡爾積的交叉連接。

          但是通常情況下,使用INNER JOIN需要指定連接條件。

          ***************關于等值連接和自然連接

          等值連接(=號應用于連接條件不會去除重復的列)

          自然連接(會去除重復的列)

          數據庫的連接運算都是自然連接,因為不允許有重復的行(元組)存在。
          例如:


          SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column

          c. 
          外連接OUTER JOIN
          指定條件的內連接,僅僅返回符合連接條件的條目。

          外連接則不同,返回的結果不僅包含符合連接條件的行,而且包括左表(左外連接時), 右表(右連接時)或者兩邊連接(全外連接時)的所有數據行。

          1)左外連接LEFT [OUTER] JOIN 
          顯示符合條件的數據行,同時顯示左邊數據表不符合條件的數據行,右邊沒有對應的條目顯示
          NULL
          例如

          SELECT * FROM table1 AS a LEFT [OUTER] JOIN ON a.column=b.column
          2)
          右外連接RIGHT [OUTER] JOIN
          顯示符合條件的數據行,同時顯示右邊數據表不符合條件的數據行,左邊沒有對應的條目顯示
          NULL
          例如

          SELECT * FROM table1 AS a RIGHT [OUTER] JOIN ON a.column=b.column
          3)
          全外連接full [outer] join
          顯示符合條件的數據行,同時顯示左右不符合條件的數據行,相應的左右兩邊顯示NULL,即顯示左連接、右連接和內連接的并集

          文章來源:

          http://www.aygfsteel.com/algz/articles/228218.html

          posted on 2011-08-03 09:27 七孑 閱讀(209) 評論(0)  編輯  收藏 所屬分類: SQL相關

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 慈利县| 蓬安县| 天全县| 来凤县| 马龙县| 江陵县| 深州市| 孝感市| 新巴尔虎右旗| 芦山县| 海原县| 云南省| 平利县| 云霄县| 青岛市| 丁青县| 桃园市| 高雄市| 镇巴县| 噶尔县| 布尔津县| 开化县| 鸡泽县| 横山县| 会昌县| 祁阳县| 新巴尔虎右旗| 潞西市| 当涂县| 大名县| 乳山市| 迁安市| 武城县| 甘德县| 淮北市| 江山市| 巢湖市| 通许县| 全南县| 广昌县| 来凤县|