隨筆 - 0, 文章 - 11, 評論 - 0, 引用 - 0
          數(shù)據(jù)加載中……

          Oracle 聯(lián)合查詢

          聯(lián)合查詢種類:
          1、Cross Join(全連接)
          2、Inner Join(內(nèi)連接)
          3、Left Join(左連接)
          4、Right Join(右連接)
          5、Full Out Join(全外連接)

          準(zhǔn)備演示環(huán)境:

          班級表:CLASS


          5條記錄,5個唯一的班級,其中班級5中沒有學(xué)生。


          學(xué)生表:STUDENT


          6條記錄,其中學(xué)生1與學(xué)生2是同班同學(xué),學(xué)生6沒有對應(yīng)的班級。


          那么Oracle中怎么實(shí)現(xiàn)五類聯(lián)合查詢呢?它們是什么意思呢?

          1、Cross Join(全連接)
          代碼語句:
          1 SELECT * FROM STUDENT STU , CLASS CLS

          執(zhí)行結(jié)果:
          返回 30 條記錄 ,將 學(xué)生表的總條數(shù)(6 ROWS) 乘以 班級表的總條數(shù)(5 ROWS)(笛卡兒集):


          2、Inner Join(內(nèi)連接)
          執(zhí)行代碼:
          1 SELECT * FROM STUDENT STU
          2                     , CLASS CLS
          3             WHERE STU.CLASS_ID = CLS.CLASS_ID

          執(zhí)行結(jié)果:
          返回 5 條記錄 ,學(xué)生表的CLASS_ID匹配班級表的CLASS_ID,符合條件的查詢出結(jié)果:


          3、Left Join(左連接)注意:左連接“(+)”號在 右邊
          執(zhí)行代碼:
          1 SELECT * FROM STUDENT STU  
          2                     , CLASS CLS
          3             WHERE STU.CLASS_ID = CLS.CLASS_ID(+)
          執(zhí)行結(jié)果:
          返回 6 條記錄 ,執(zhí)行可分解為兩步:
          1、先將學(xué)生表的CLASS_ID匹配班級表的CLASS_ID查詢出來(此例為5條記錄)
          2、再將左(Student)表中CLASS_ID 沒有匹配 右(CLASS)表CLASS_ID的記錄查詢出來(此例為1條記錄)
          4、Right Join(右連接)  注意:右連接“(+)”號在 左邊
          執(zhí)行代碼:
          1 SELECT * FROM STUDENT STU  
          2                     , CLASS CLS
          3             WHERE STU.CLASS_ID(+= CLS.CLASS_ID
          執(zhí)行結(jié)果:
          返回 6 條記錄 ,執(zhí)行可分解為兩步:
          1、先將班級表的CLASS_ID匹配學(xué)生表的CLASS_ID查詢出來(此例為5條記錄)
          2、再將左(CLASS)表中CLASS_ID 沒有匹配 右(STUDENT)表CLASS_ID的記錄查詢出來(此例為1條記錄)


          5、Full Out Join(全外連接)
          執(zhí)行代碼:
          1 SELECT * FROM   STUDENT STU 
          2 FULL OUTER JOIN CLASS CLS
          3                    ON STU.CLASS_ID = CLS.CLASS_ID
          執(zhí)行結(jié)果:
          返回 7 條記錄 ,執(zhí)行可分解為三步:
          1、先將班級表的CLASS_ID匹配學(xué)生表的CLASS_ID查詢出來(此例為5條記錄)
          2、再將左(Student)表中CLASS_ID 沒有匹配 右(CLASS)表CLASS_ID的記錄查詢出來(此例為1條記錄)
          3、再將左(CLASS)表中CLASS_ID 沒有匹配 右(STUDENT)表CLASS_ID的記錄查詢出來(此例為1條記錄)

          posted on 2014-05-10 18:37 00001000 閱讀(200) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 汝城县| 辽阳县| 清涧县| 晋城| 瑞昌市| 湟源县| 兴业县| 军事| 宣化县| 阳谷县| 股票| 嘉兴市| 越西县| 都江堰市| 洞头县| 南京市| 衡南县| 辽源市| 富锦市| 望城县| 华蓥市| 锡林浩特市| 仁化县| 恩平市| 砀山县| 当雄县| 会同县| 清徐县| 广东省| 中卫市| 上杭县| 那坡县| 五原县| 定陶县| 崇信县| 白河县| 同德县| 宜兰市| 阿尔山市| 宣城市| 武冈市|