Java學(xué)習(xí)

          java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經(jīng)搬家了,新的地址是 http://www.javaly.cn 如果有對(duì)文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會(huì)盡力幫助解決。一起進(jìn)步

           

          sql之left join、right join、inner join的區(qū)別

          內(nèi)連接是保證兩個(gè)表中所有的行都要滿足連接條件,而外連接則不然。在外連接中,某些不滿條件的列也會(huì)顯示出來,也就是說,只限制其中一個(gè)表的行,而不限制另一個(gè)表的行。這種連接形式在許多情況下是非常有用的。外連接只能用于兩個(gè)表中。
          在 Ansi 語法形式中,包含下列三種外連接關(guān)鍵字:

            ◆Left Outer Join 包含了左表中的全部行(表達(dá)式中第一個(gè)表)

            ◆Right Outer Join 包括了右表中的全部行(表達(dá)式中第二個(gè)表)

            ◆Full Outer Join 包括了左表和右表中所有不滿足條件的行

            在 SQL Server 連接語法形式中,包括下列兩種外連接運(yùn)算符:

            ◆* = 包含了左表中的全部行(表達(dá)式中第一個(gè)表)

            ◆= * 包括了右表中的全部行(表達(dá)式中第二個(gè)表)

            左外連接和右連接都可以產(chǎn)生同樣的結(jié)果,關(guān)鍵是看表達(dá)式中出現(xiàn)的前后順序。
          舉例如下:
          --------------------------------------------
          表A記錄如下:
          aID     aNum
          1     a20050111
          2     a20050112
          3     a20050113
          4     a20050114
          5     a20050115

          表B記錄如下:
          bID     bName
          1     2006032401
          2     2006032402
          3     2006032403
          4     2006032404
          8     2006032408

          --------------------------------------------
          1.left join
          sql語句如下:
          select * from A
          left join B
          on A.aID = B.bID

          結(jié)果如下:
          aID     aNum     bID     bName
          1     a20050111    1     2006032401
          2     a20050112    2     2006032402
          3     a20050113    3     2006032403
          4     a20050114    4     2006032404
          5     a20050115    NULL     NULL

          (所影響的行數(shù)為 5 行)
          結(jié)果說明:
          left join是以A表的記錄為基礎(chǔ)的,A可以看成左表,B可以看成右表,left join是以左表為準(zhǔn)的.
          換句話說,左表(A)的記錄將會(huì)全部表示出來,而右表(B)只會(huì)顯示符合搜索條件的記錄(例子中為: A.aID = B.bID).
          B表記錄不足的地方均為NULL.
          --------------------------------------------
          2.right join
          sql語句如下:
          select * from A
          right join B
          on A.aID = B.bID

          結(jié)果如下:
          aID     aNum     bID     bName
          1     a20050111    1     2006032401
          2     a20050112    2     2006032402
          3     a20050113    3     2006032403
          4     a20050114    4     2006032404
          NULL     NULL     8     2006032408

          (所影響的行數(shù)為 5 行)
          結(jié)果說明:
          仔細(xì)觀察一下,就會(huì)發(fā)現(xiàn),和left join的結(jié)果剛好相反,這次是以右表(B)為基礎(chǔ)的,A表不足的地方用NULL填充.
          --------------------------------------------
          3.inner join
          sql語句如下:
          select * from A
          innerjoin B
          on A.aID = B.bID

          結(jié)果如下:
          aID     aNum     bID     bName
          1     a20050111    1     2006032401
          2     a20050112    2     2006032402
          3     a20050113    3     2006032403
          4     a20050114    4     2006032404

          結(jié)果說明:
          很明顯,這里只顯示出了 A.aID = B.bID的記錄.這說明inner join并不以誰為基礎(chǔ),它只顯示符合條件的記錄.
          --------------------------------------------
          注:
          LEFT JOIN操作用于在任何的 FROM 子句中,組合來源表的記錄。使用 LEFT JOIN 運(yùn)算來創(chuàng)建一個(gè)左邊外部聯(lián)接。左邊外部聯(lián)接將包含了從第一個(gè)(左邊)開始的兩個(gè)表中的全部記錄,即使在第二個(gè)(右邊)表中并沒有相符

          posted on 2009-10-21 13:50 找個(gè)美女做老婆 閱讀(1110) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
           http://www.javaly.cn

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 新源县| 长阳| 西宁市| 武陟县| 巴东县| 余庆县| 南雄市| 宜章县| 大连市| 延安市| 舟山市| 宁明县| 黑山县| 唐河县| 扶风县| 磴口县| 平江县| 连平县| 河池市| 河源市| 湖口县| 罗田县| 惠安县| 新干县| 四子王旗| 芦溪县| 柳林县| 遂昌县| 马边| 元阳县| 安阳县| 和硕县| 江津市| 台山市| 石家庄市| 广安市| 瓦房店市| 团风县| 子长县| 邮箱| 栾川县|