關聯在Oracle數據查詢時會經常用到靈活的應用關聯可以解決很多實際應用的問題下面給出一些示例:
建表
create table ab
(
ab_id number()
ab_name varchar()
);
create table bb
(
bb_id number()
bb_name varchar()
);
插入數據
insert into ab(ab_idab_name) values(ab_name);
insert into ab(ab_idab_name) values(ab_name);
insert into ab(ab_idab_name) values(ab_name);
insert into bb(bb_idbb_name) values(bb_name);
insert into bb(bb_idbb_name) values(bb_name);
insert into bb(bb_idbb_name) values(bb_name);
insert into bb(bb_idbb_name) values(bb_name);
等值關聯(全關聯)
select aab_idaab_namebbb_name from ab a
bb b
where aab_id=bbb_id;
返回結果
AB_ID AB_NAME BB_NAME
ab_name bb_name
ab_name bb_name
返回兩個表中所有能匹配的記錄不能匹配的記錄不返回
左關聯
select ab_idab_name bb_name
from ab a left join bb b
on aab_id=bbb_id;
同
select ab_idab_name bb_name
from ab a bb b
where aab_id=bbb_id(+);
返回結果
AB_ID AB_NAME BB_NAME
ab_name bb_name
ab_name bb_name
ab_name
返回左邊表的左右記錄在右邊表中沒有對應記錄的右表字段顯示為空
右關聯
select ab_idab_name bb_name
from ab a right join bb b
on aab_id=bbb_id;
同
select ab_idab_name bb_name
from ab a bb b
where aab_id(+)=bbb_id;
返回結果:
AB_ID AB_NAME BB_NAME
ab_name bb_name
ab_name bb_name
bb_name
bb_name
返回右邊表中所有的記錄在右邊表不能匹配的記錄行上左邊表對應的字段顯示為空
完全外關聯
select ab_idab_name bb_name
from ab a full join bb b
on aab_id=bbb_id;
返回結果
AB_ID AB_NAME BB_NAME
ab_name bb_name
ab_name bb_name
ab_name
bb_name
bb_name
返回兩個表所有的結果如果在關聯條件上沒有對應的記錄那麼將在該列上顯示為空
全關聯返回的結果集范圍最小完全外關聯返回的結果范圍最大是否左關聯和右關聯並集全關聯是左關聯和右關聯的交集
From:http://tw.wingwit.com/Article/program/Oracle/201311/18919.html