广告位招租 联系qq:165345322

灵活应用Oracle数据查询时经常用到的关联

时间:2008-03-04 11:33:23   来源:赛迪网  作者:Alizze  点击:次  出处:技术无忧
关键字:数据库 查询 关联

你为建站烦吗?为服务器设置而愁吗?来技术无忧服务器专版一切问题将不在存在。


关联在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
 


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


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

引用:http://www.pc51.net/data/ORACLE/2008-03-04/w10215.html

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

特别推荐
300x250广告位招租