原創|其它|編輯:郝浩|2009-10-16 13:22:36.000|閱讀 590 次
概述:關聯在Oracle數據查詢時會經常用到,靈活的應用關聯可以解決很多實際應用的問題.本文給出一些示例。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
關聯在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
返回兩個表所有的結果,如果在關聯條件上沒有對應的記錄,那么將在該列上顯示為空。
全關聯返回的結果集范圍最小。完全外關聯返回的結果范圍最大,是否左關聯和右關聯并集;全關聯是左關聯和右關聯的交集。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:IT專家網