Oracle数据关联查询

来源:赛迪网作者:Alizze


关联在Oracle数据查询时会经常用到,灵活的应用关联可以解决很多实际应用的问题.下面给出一些示例:

建表

<ccid_nobr></ccid_nobr>
<ccid_code>create table ab<br>(<br>ab_id  number(5),<br>ab_name varchar2(30)<br>);<br><br>create table bb<br>(<br>bb_id  number(5),<br>bb_name varchar2(30)<br>);</ccid_code>

插入数据

<ccid_nobr></ccid_nobr>
<ccid_code>insert into ab(ab_id,ab_name) values(1,'1ab_name');<br>insert into ab(ab_id,ab_name) values(2,'2ab_name');<br>insert into ab(ab_id,ab_name) values(3,'3ab_name');<br><br>insert into bb(bb_id,bb_name) values(1,'1bb_name');<br>insert into bb(bb_id,bb_name) values(2,'2bb_name');<br>insert into bb(bb_id,bb_name) values(4,'4bb_name');<br>insert into bb(bb_id,bb_name) values(6,'6bb_name');</ccid_code>

等值关联(全关联)

<ccid_nobr></ccid_nobr>
<ccid_code>select a.ab_id,a.ab_name,b.bb_name from ab a,<br>              bb b<br>where a.ab_id=b.bb_id;</ccid_code>

返回结果

<ccid_nobr></ccid_nobr>
<ccid_code>AB_ID AB_NAME BB_NAME<br>1 1ab_name 1bb_name<br>2 2ab_name 2bb_name</ccid_code>

返回两个表中所有能匹配的记录,不能匹配的记录不返回。

左关联

<ccid_nobr></ccid_nobr>
<ccid_code>select ab_id,ab_name, bb_name <br>from ab a left join  bb b<br>on a.ab_id=b.bb_id;<br>同<br>select ab_id,ab_name, bb_name <br>from ab a , bb b<br>where a.ab_id=b.bb_id(+);</ccid_code>

返回结果

<ccid_nobr></ccid_nobr>
<ccid_code>AB_ID AB_NAME BB_NAME<br>1 1ab_name 1bb_name<br>2 2ab_name 2bb_name<br>3 3ab_name</ccid_code>

返回左边表的左右记录,在右边表中没有对应记录的右表字段显示为空。

右关联

<ccid_nobr></ccid_nobr>
<ccid_code>select ab_id,ab_name, bb_name <br>from ab a right join  bb b<br>on a.ab_id=b.bb_id;<br>同<br>select ab_id,ab_name, bb_name <br>from ab a , bb b<br>where a.ab_id(+)=b.bb_id;</ccid_code>

返回结果:

<ccid_nobr></ccid_nobr>
<ccid_code>AB_ID AB_NAME BB_NAME<br>1 1ab_name 1bb_name<br>2 2ab_name 2bb_name<br>4bb_name<br>6bb_name</ccid_code>

返回右边表中所有的记录,在右边表不能匹配的记录行上,左边表对应的字段显示为空。

完全外关联

<ccid_nobr></ccid_nobr>
<ccid_code>select ab_id,ab_name, bb_name <br>from ab a full join  bb b<br>on a.ab_id=b.bb_id;</ccid_code>

返回结果

<ccid_nobr></ccid_nobr>
<ccid_code>AB_ID AB_NAME BB_NAME<br>1 1ab_name 1bb_name<br>2 2ab_name 2bb_name<br>3 3ab_name <br>6bb_name<br>4bb_name</ccid_code>

返回两个表所有的结果,如果在关联条件上没有对应的记录,那么将在该列上显示为空。

全关联返回的结果集范围最小。完全外关联返回的结果范围最大,是否左关联和右关联并集;全关联是左关联和右关联的交集。

你可能感兴趣的:(oracle)