|
Oracle数据查询时经常用到的关联 关联在Oracle数据查询时会经常用到,灵活的应用关联可以解决很多实际应用的问题.下面给出一些示例: 建表 create table ab( ab_d number(5), ab_name varchar2(30) ); create table bb ( bb_d number(5), bb_name varchar2(30) ); 插入数据 nsert nto ab(ab_d,ab_name) values(1,'1ab_name'); nsert nto ab(ab_d,ab_name) values(2,'2ab_name'); nsert nto ab(ab_d,ab_name) values(3,'3ab_name'); nsert nto bb(bb_d,bb_name) values(1,'1bb_name'); nsert nto bb(bb_d,bb_name) values(2,'2bb_name'); nsert nto bb(bb_d,bb_name) values(4,'4bb_name'); nsert nto bb(bb_d,bb_name) values(6,'6bb_name'); 等值关联(全关联) select a.ab_d,a.ab_name,b.bb_name from ab a, bb b where a.ab_d=b.bb_d; 返回结果 AB_D AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 返回两个表中所有能匹配的记录,不能匹配的记录不返回。 左关联 select ab_d,ab_name, bb_name from ab a left jon bb b on a.ab_d=b.bb_d; 同 select ab_d,ab_name, bb_name from ab a , bb b where a.ab_d=b.bb_d(+); 返回结果 AB_D AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 3 3ab_name 返回左边表的左右记录,在右边表中没有对应记录的右表字段显示为空。 右关联 select ab_d,ab_name, bb_name from ab a right jon bb b on a.ab_d=b.bb_d; 同 select ab_d,ab_name, bb_name from ab a , bb b where a.ab_d(+)=b.bb_d; 返回结果: AB_D AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 4bb_name 6bb_name 返回右边表中所有的记录,在右边表不能匹配的记录行上,左边表对应的字段显示为空。 完全外关联 select ab_d,ab_name, bb_name from ab a full jon bb b on a.ab_d=b.bb_d; 返回结果 AB_D AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 3 3ab_name 6bb_name 4bb_name 返回两个表所有的结果,如果在关联条件上没有对应的记录,那么将在该列上显示为空。 全关联返回的结果集范围最小。完全外关联返回的结果范围最大,是否左关联和右关联并集;全关联是左关联和右关联的交集。 相关链接:软件测试 |
|
|