oracle表关联应用

关联在oracle数据查询是用得最多得东西,灵活的应用可以解决很多实际应用的问题.下面给出一些示例:

  1. 建表 
    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');
  2. 等值关联(全关联)
    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
    返回两个表中所有能匹配的记录,不能匹配的记录不返回。
  3. 左关联
    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  
    返回左边表的左右记录,在右边表中没有对应记录的右表字段显示为空。
  4. 右关联
    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
    返回右边表中所有的记录,在右边表不能匹配的记录行上,左边表对应的字段显示为空。
  5. 完全外关联
    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
    返回两个表所有的结果,如果在关联条件上没有对应的记录,那么将在该列上显示为空。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值