今天又有小進(jìn)步,^_^!
?????????來(lái)源:賽迪網(wǎng)????作者:Alizze
關(guān)聯(lián)在Oracle數(shù)據(jù)查詢(xún)時(shí)會(huì)經(jīng)常用到,靈活的應(yīng)用關(guān)聯(lián)可以解決很多實(shí)際應(yīng)用的問(wèn)題.下面給出一些示例:
建表
create table ab ( ab_id number(5), ab_name varchar2(30) );
create table bb ( bb_id number(5), bb_name varchar2(30) );
|
插入數(shù)據(jù)
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');
|
等值關(guān)聯(lián)(全關(guān)聯(lián))
select a.ab_id,a.ab_name,b.bb_name from ab a, bb b where a.ab_id=b.bb_id;
|
返回結(jié)果
AB_ID AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name
|
返回兩個(gè)表中所有能匹配的記錄,不能匹配的記錄不返回。
左關(guān)聯(lián)
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(+);
|
返回結(jié)果
AB_ID AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 3 3ab_name
|
返回左邊表的左右記錄,在右邊表中沒(méi)有對(duì)應(yīng)記錄的右表字段顯示為空。
右關(guān)聯(lián)
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;
|
返回結(jié)果:
AB_ID AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 4bb_name 6bb_name
|
返回右邊表中所有的記錄,在右邊表不能匹配的記錄行上,左邊表對(duì)應(yīng)的字段顯示為空。
完全外關(guān)聯(lián)
select ab_id,ab_name, bb_name from ab a full join bb b on a.ab_id=b.bb_id;
|
返回結(jié)果
AB_ID AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 3 3ab_name 6bb_name 4bb_name
|
返回兩個(gè)表所有的結(jié)果,如果在關(guān)聯(lián)條件上沒(méi)有對(duì)應(yīng)的記錄,那么將在該列上顯示為空。
全關(guān)聯(lián)返回的結(jié)果集范圍最小。完全外關(guān)聯(lián)返回的結(jié)果范圍最大,是否左關(guān)聯(lián)和右關(guān)聯(lián)并集;全關(guān)聯(lián)是左關(guān)聯(lián)和右關(guān)聯(lián)的交集。
posted on 2008-03-18 15:32
Tiger1102 閱讀(318)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
每日進(jìn)階