SQL聯(lián)合查詢(內(nèi)聯(lián)、左聯(lián)、右聯(lián)、全聯(lián))的語(yǔ)法

          概述:

            聯(lián)合查詢效率較高,舉例子來說明聯(lián)合查詢:內(nèi)聯(lián)inner join 、左聯(lián)left outer join 、右聯(lián)right outer join 、全聯(lián)full outer join 的好處及用法。

            聯(lián)合查詢效率較高,以下例子來說明聯(lián)合查詢(內(nèi)聯(lián)、左聯(lián)、右聯(lián)、全聯(lián))的好處:

          T1表結(jié)構(gòu)
          (用戶名,密碼)

          userid
          (int)

          username
          varchar(20)

          password 
          varchar(20)

           

          1

          jack

          jackpwd

           

          2

          owen

          owenpwd

           

          T2表結(jié)構(gòu)
          (用戶名,密碼)

          userid
          (int)

          jifen
          varchar(20)

          dengji 
          varchar(20)

           

          1

          20

          3

           

          3

          50

          6

            第一:內(nèi)聯(lián)(inner join)。

            如果想把用戶信息、積分、等級(jí)都列出來,那么一般會(huì)這樣寫:select * from T1 ,T3 where T1.userid = T3.userid(其實(shí)這樣的結(jié)果等同于select * from T1 inner join T3 on T1.userid=T3.userid )。

            把兩個(gè)表中都存在userid的行拼成一行(即內(nèi)聯(lián)),但后者的效率會(huì)比前者高很多,建議用后者(內(nèi)聯(lián))的寫法。

            SQL語(yǔ)句:select * from T1 inner join T2 on T1.userid=T2.userid

          運(yùn)行結(jié)果

          T1.userid

          username

          password

          T2.userid

          jifen

          dengji

           

          1

          jack

          jackpwd

          1

          20

          3

            第二:左聯(lián)(left outer join)。

            顯示左表T1中的所有行,并把右表T2中符合條件加到左表T1中;右表T2中不符合條件,就不用加入結(jié)果表中,并且NULL表示。

            SQL語(yǔ)句:select * from T1 left outer join T2 on T1.userid=T2.userid

          運(yùn)行結(jié)果

          T1.userid

          username

          password

          T2.userid

          jifen

          dengji

           

          1

          jack

          jackpwd

          1

          20

          3

           

          2

          owen

          owenpwd

          NULL

          NULL

          NULL

            第三:右聯(lián)(right outer join)。

            顯示右表T2中的所有行,并把左表T1中符合條件加到右表T2中;左表T1中不符合條件,就不用加入結(jié)果表中,并且NULL表示。

            SQL語(yǔ)句:select * from T1 right outer join T2 on T1.userid=T2.userid

          運(yùn)行結(jié)果

          T1.userid

          username

          password

          T2.userid

          jifen

          dengji

           

          1

          jack

          jackpwd

          1

          20

          3

           

          NULL

          NULL

          NULL

          3

          50

          6

            第四:全聯(lián)(full outer join)。

            顯示左表T1、右表T2兩邊中的所有行,即把左聯(lián)結(jié)果表+右聯(lián)結(jié)果表組合在一起,然后過濾掉重復(fù)的。

            SQL語(yǔ)句:select * from T1 full outer join T2 on T1.userid=T2.userid

          運(yùn)行結(jié)果

          T1.userid

          username

          password

          T2.userid

          jifen

          dengji

           

          1

          jack

          jackpwd

          1

          20

          3

           

          2

          owen

          owenpwd

          NULL

          NULL

          NULL

           

          NULL

          NULL

          NULL

          3

          50

          6

            總結(jié),關(guān)于聯(lián)合查詢,效率的確比較高,4種聯(lián)合方式如果可以靈活使用,基本上復(fù)雜的語(yǔ)句結(jié)構(gòu)也會(huì)簡(jiǎn)單起來。這4種方式是:1)Inner join 2)left outer join 3)right outer join 4)full outer join

          posted on 2014-10-12 23:27 阿九 閱讀(106) 評(píng)論(0)  編輯  收藏 所屬分類: sql server


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


          網(wǎng)站導(dǎo)航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 石家庄市| 甘洛县| 拜泉县| 台东县| 永吉县| 耿马| 德庆县| 安国市| 红河县| 扬中市| 甘孜县| 安图县| 桂平市| 城步| 清河县| 桦川县| 静乐县| 齐河县| 嘉鱼县| 南昌市| 平舆县| 周宁县| 塔河县| 霍邱县| 东丽区| 县级市| 枣阳市| 永吉县| 法库县| 澜沧| 改则县| 云梦县| 张家港市| 苏尼特右旗| 文水县| 元阳县| 晋中市| 仙居县| 巴中市| 明星| 武安市|