Oracle鏈接查詢

轉(zhuǎn)載:http://blog.chinaunix.net/uid-21187846-id-3288525.html

Oracle 外連接
(1)左外連接 (左邊的表不加限制)(左表為基表)
(2)右外連接(右邊的表不加限制)(右邊表為基表)
(3)全外連接(左右兩表都不加限制)(兩張表均為基表)

外連接(Outer Join)
outer join則會返回每個滿足第一個(頂端)輸入與第二個(底端)輸入的聯(lián)接的行劈猿。它還返回任何在第二個輸入中沒有匹配行的第一個輸入中的行行剂。外連接分為三種: 左外連接,右外連接类咧,全外連接。 對應(yīng)SQL:LEFT/RIGHT/FULL OUTER JOIN滔以。 通常我們省略outer 這個關(guān)鍵字劳曹。 寫成:LEFT/RIGHT/FULL JOIN。

在左外連接和右外連接時都會以一張表為基表欠气,該表的內(nèi)容會全部顯示,然后加上兩張表匹配的內(nèi)容镜撩。 如果基表的數(shù)據(jù)在另一張表沒有記錄预柒。 那么在相關(guān)聯(lián)的結(jié)果集行中列顯示為空值(NULL)。

對于外連接袁梗, 也可以使用“(+) ”來表示宜鸯。 關(guān)于使用(+)的一些注意事項:
1.(+)操作符只能出現(xiàn)在where子句中,并且不能與outer join語法同時使用遮怜。
2. 當使用(+)操作符執(zhí)行外連接時顾翼,如果在where子句中包含有多個條件,則必須在所有條件中都包含(+)操作符
3.(+)操作符只適用于列奈泪,而不能用在表達式上。
4.(+)操作符不能與or和in操作符一起使用灸芳。
5.(+)操作符只能用于實現(xiàn)左外連接和右外連接涝桅,而不能用于實現(xiàn)完全外連接。

在做實驗之前烙样,我們先將dave表和bl里加一些不同的數(shù)據(jù)冯遂。 以方便測試。

SQL> select * from bl;

        ID NAME

---------- ----------

         1 dave

         2 bl

         3 big bird

         4 exc

         9 懷寧
SQL> select * from dave;

        ID NAME

---------- ----------

         8 安慶

         1 dave

         2 bl

         1 bl

         2 dave

         3 dba

         4 sf-express

         5 dmm

2.1 左外連接(Left outer join/ left join)

left join是以左表的記錄為基礎(chǔ)的,示例中Dave可以看成左表,BL可以看成右表,它的結(jié)果集是Dave表中的數(shù)據(jù)谒获,在加上Dave表和BL表匹配的數(shù)據(jù)蛤肌。換句話說,左表(Dave)的記錄將會全部表示出來,而右表(BL)只會顯示符合搜索條件的記錄壁却。BL表記錄不足的地方均為NULL.

示例:

SQL> select * from dave a left join bl b on a.id = b.id;

       ID NAME               ID NAME

--------- ---------- ---------- ----------

        1 bl                  1 dave

        1 dave                1 dave

        2 dave                2 bl

        2 bl                  2 bl

        3 dba                 3 big bird

        4 sf-express          4 exc

        5 dmm                             -- 此處B表為null,因為沒有匹配到

        8 安慶                             -- 此處B表為null裸准,因為沒有匹配到
SQL> select * from dave a left outer join bl b on a.id = b.id;

        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 bl                  1 dave

         1 dave                1 dave

         2 dave                2 bl

         2 bl                  2 bl

         3 dba                 3 big bird

         4 sf-express          4 exc

         5 dmm

         8 安慶

用(+)來實現(xiàn)展东, 這個+號可以這樣來理解: + 表示補充,即哪個表有加號炒俱,這個表就是匹配表盐肃。所以加號寫在右表,左表就是全部顯示权悟,故是左連接砸王。

SQL> Select * from dave a,bl b where a.id=b.id(+);    -- 注意: 用(+) 就要用關(guān)鍵字where

        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 bl                  1 dave

         1 dave                1 dave

         2 dave                2 bl

         2 bl                  2 bl

         3 dba                 3 big bird

         4 sf-express          4 exc

         5 dmm

         8 安慶

2.2 右外連接(right outer join/ right join)

和left join的結(jié)果剛好相反,是以右表(BL)為基礎(chǔ)的, 顯示BL表的所以記錄,在加上Dave和BL 匹配的結(jié)果峦阁。 Dave表不足的地方用NULL填充.

示例:

SQL> select * from dave a right join bl b on a.id = b.id;

        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 dave                1 dave

         2 bl                  2 bl

         1 bl                  1 dave

         2 dave                2 bl

         3 dba                 3 big bird

         4 sf-express          4 exc

                               9 懷寧    --此處左表不足用Null 填充

已選擇7行谦铃。
SQL> select * from dave a right outer join bl b on a.id = b.id;

        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 dave                1 dave

         2 bl                  2 bl

         1 bl                  1 dave

         2 dave                2 bl

         3 dba                 3 big bird

         4 sf-express          4 exc

                               9 懷寧  --此處左表不足用Null 填充

已選擇7行。

用(+)來實現(xiàn)榔昔, 這個+號可以這樣來理解: + 表示補充驹闰,即哪個表有加號,這個表就是匹配表件豌。所以加號寫在左表疮方,右表就是全部顯示,故是右連接茧彤。

SQL> Select * from dave a,bl b where a.id(+)=b.id;

        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 dave                1 dave

         2 bl                  2 bl

         1 bl                  1 dave

         2 dave                2 bl

         3 dba                 3 big bird

         4 sf-express          4 exc

                               9 懷寧

2.3 全外連接(full outer join/ full join)

左表和右表都不做限制骡显,所有的記錄都顯示,兩表不足的地方用null 填充曾掂。 全外連接不支持(+)這種寫法惫谤。

示例:

SQL> select * from dave a full join bl b on a.id = b.id;

        ID NAME               ID NAME

---------- ---------- ---------- ----------

         8 安慶

         1 dave                1 dave

         2 bl                  2 bl

         1 bl                  1 dave

         2 dave                2 bl

         3 dba                 3 big bird

         4 sf-express          4 exc

         5 dmm

                               9 懷寧

已選擇9行。
SQL> select * from dave a full outer join bl b on a.id = b.id;

        ID NAME               ID NAME

---------- ---------- ---------- ----------

         8 安慶

         1 dave                1 dave

         2 bl                  2 bl

         1 bl                  1 dave

         2 dave                2 bl

         3 dba                 3 big bird

         4 sf-express          4 exc

         5 dmm
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末珠洗,一起剝皮案震驚了整個濱河市溜歪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌许蓖,老刑警劉巖蝴猪,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異膊爪,居然都是意外死亡自阱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門米酬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沛豌,“玉大人,你說我怎么就攤上這事赃额〖优桑” “怎么了叫确?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芍锦。 經(jīng)常有香客問我竹勉,道長,這世上最難降的妖魔是什么醉旦? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任饶米,我火速辦了婚禮,結(jié)果婚禮上车胡,老公的妹妹穿的比我還像新娘檬输。我一直安慰自己,他們只是感情好匈棘,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布丧慈。 她就那樣靜靜地躺著,像睡著了一般主卫。 火紅的嫁衣襯著肌膚如雪逃默。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天簇搅,我揣著相機與錄音完域,去河邊找鬼。 笑死瘩将,一個胖子當著我的面吹牛吟税,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姿现,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼肠仪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了备典?” 一聲冷哼從身側(cè)響起异旧,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎提佣,沒想到半個月后吮蛹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡拌屏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年潮针,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片槐壳。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喜每,靈堂內(nèi)的尸體忽然破棺而出务唐,到底是詐尸還是另有隱情雳攘,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布枫笛,位于F島的核電站吨灭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏刑巧。R本人自食惡果不足惜喧兄,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啊楚。 院中可真熱鬧吠冤,春花似錦、人聲如沸恭理。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颜价。三九已至涯保,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間周伦,已是汗流浹背夕春。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留专挪,地道東北人及志。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像狈蚤,于是被迫代替她去往敵國和親困肩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容