隨筆 - 44  文章 - 78  trackbacks - 0
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

           Happy 牛 Year
          一、一周至少寫一篇博文;
          二、每天至少學習半個小時。
          三、奔向小牛!

          常用鏈接

          留言簿(6)

          我參與的團隊

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          今天又有小進步,^_^!

          ?????????來源:賽迪網
          ????作者:Alizze


          關聯在Oracle數據查詢時會經常用到,靈活的應用關聯可以解決很多實際應用的問題.下面給出一些示例:

          建表

          														create table ab
          (
          ab_id number(5),
          ab_name varchar2(30)
          );

          create table bb
          (
          bb_id number(5),
          bb_name varchar2(30)
          );

          插入數據

          														insert into ab(ab_id,ab_name) values(1,'1ab_name');
          insert into ab(ab_id,ab_name) values(2,'2ab_name');
          insert into ab(ab_id,ab_name) values(3,'3ab_name');

          insert into bb(bb_id,bb_name) values(1,'1bb_name');
          insert into bb(bb_id,bb_name) values(2,'2bb_name');
          insert into bb(bb_id,bb_name) values(4,'4bb_name');
          insert into bb(bb_id,bb_name) values(6,'6bb_name');

          等值關聯(全關聯)

          														select a.ab_id,a.ab_name,b.bb_name from ab a,
          bb b
          where a.ab_id=b.bb_id;

          返回結果

          														AB_ID AB_NAME BB_NAME
          1 1ab_name 1bb_name
          2 2ab_name 2bb_name

          返回兩個表中所有能匹配的記錄,不能匹配的記錄不返回。

          左關聯

          														select ab_id,ab_name, bb_name 
          from ab a left join bb b
          on a.ab_id=b.bb_id;

          select ab_id,ab_name, bb_name
          from ab a , bb b
          where a.ab_id=b.bb_id(+);

          返回結果

          														AB_ID AB_NAME BB_NAME
          1 1ab_name 1bb_name
          2 2ab_name 2bb_name
          3 3ab_name

          返回左邊表的左右記錄,在右邊表中沒有對應記錄的右表字段顯示為空。

          右關聯

          														select ab_id,ab_name, bb_name 
          from ab a right join bb b
          on a.ab_id=b.bb_id;

          select ab_id,ab_name, bb_name
          from ab a , bb b
          where a.ab_id(+)=b.bb_id;

          返回結果:

          														AB_ID AB_NAME BB_NAME
          1 1ab_name 1bb_name
          2 2ab_name 2bb_name
          4bb_name
          6bb_name

          返回右邊表中所有的記錄,在右邊表不能匹配的記錄行上,左邊表對應的字段顯示為空。

          完全外關聯

          														select ab_id,ab_name, bb_name 
          from ab a full join bb b
          on a.ab_id=b.bb_id;

          返回結果

          														AB_ID AB_NAME BB_NAME
          1 1ab_name 1bb_name
          2 2ab_name 2bb_name
          3 3ab_name
          6bb_name
          4bb_name

          返回兩個表所有的結果,如果在關聯條件上沒有對應的記錄,那么將在該列上顯示為空。

          全關聯返回的結果集范圍最小。完全外關聯返回的結果范圍最大,是否左關聯和右關聯并集;全關聯是左關聯和右關聯的交集。

          posted on 2008-03-18 15:32 Tiger1102 閱讀(320) 評論(0)  編輯  收藏 所屬分類: 每日進階
          主站蜘蛛池模板: 邯郸市| 理塘县| 抚远县| 合山市| 宽城| 志丹县| 镇宁| 宾阳县| 鹤山市| 天长市| 盐池县| 黄冈市| 鸡西市| 称多县| 西平县| 陇西县| 颍上县| 金昌市| 绥芬河市| 陇南市| 金山区| 高州市| 刚察县| 海林市| 凤阳县| 琼海市| 普兰县| 镇江市| 大渡口区| 普兰店市| 临清市| 南川市| 古蔺县| 汉中市| 怀集县| 资溪县| 绥芬河市| 桦南县| 松桃| 望谟县| 东山县|