关联在Oracle数据查询时会经常用到灵活的应用关联可以解决很多实际应用的问题下面给出一些示例:
建表
create table ab(ab_id number()ab_name varchar());create table bb(bb_id number()bb_name varchar());
插入数据
insert into ab(ab_idab_name) values(ab_name);insert into ab(ab_idab_name) values(ab_name);insert into ab(ab_idab_name) values(ab_name);insert into bb(bb_idbb_name) values(bb_name);insert into bb(bb_idbb_name) values(bb_name);insert into bb(bb_idbb_name) values(bb_name);insert into bb(bb_idbb_name) values(bb_name);
等值关联(全关联)
select aab_idaab_namebbb_name from ab a bb bwhere aab_id=bbb_id;
返回结果
AB_ID AB_NAME BB_NAME ab_name bb_name ab_name bb_name
返回两个表中所有能匹配的记录不能匹配的记录不返回
左关联
select ab_idab_name bb_name from ab a left join bb bon aab_id=bbb_id;同select ab_idab_name bb_name from ab a bb bwhere aab_id=bbb_id(+);
返回结果
AB_ID AB_NAME BB_NAME ab_name bb_name ab_name bb_name ab_name
返回左边表的左右记录在右边表中没有对应记录的右表字段显示为空
右关联
select ab_idab_name bb_name from ab a right join bb bon aab_id=bbb_id;同select ab_idab_name bb_name from ab a bb bwhere aab_id(+)=bbb_id;
返回结果:
AB_ID AB_NAME BB_NAME ab_name bb_name ab_name bb_namebb_namebb_name
返回右边表中所有的记录在右边表不能匹配的记录行上左边表对应的字段显示为空
完全外关联
select ab_idab_name bb_name from ab a full join bb bon aab_id=bbb_id;
返回结果
AB_ID AB_NAME BB_NAME ab_name bb_name ab_name bb_name ab_name bb_namebb_name
返回两个表所有的结果如果在关联条件上没有对应的记录那么将在该列上显示为空
全关联返回的结果集范围最小完全外关联返回的结果范围最大是否左关联和右关联并集全关联是左关联和右关联的交集