Oracle 连接查询 内连接和外连接

1:数据准备

select * from act_dep;
select * from act_user

2:内连接查询


根据指定的条件满足条件的数据出现在结果集
先从第一个表获取到第一条记录,然后检索第二个表满足on后条件的数据记录连成结果集
再从第一个表获取到第二条记录...
直至第一张表中所有记录处理完毕为止。
两个表的记录 无法满足关联条件的时候不出现在结果集

inner join 内连接查询


select * from act_user u inner join act_dep d on u.depid=d.id  


select * from act_dep d inner join act_user u on u.depid=d.id  

--结果同上,内连接表顺序不影响结果集,仅仅列顺序不同

--oracle扩展方式写法
select * from act_user u,act_dep d
where u.depid=d.id                                           

 

 3:外连接查询

    3.1 外连接查询

    3.1.1 左外连接

    A left join B 取 A 全部,B 没有对应的值为 null。
    左外连接:在内连接基础上,左侧表不符合连接条件的记录出现在结果集,右侧表不满足条件的NULL显示

select * from act_user u left join act_dep d
on d.id=u.depid and d.id=1 

select * from act_dep d left join act_user u
on d.id=u.depid and d.id=1

 

3.1.2 右外连接 

A right join B 取 B 全部 A 没有对应的值为 null。

--右外连接:在内连接基础上,右侧表不符合连接条件的记录出现在结果集,左侧不满足条件的NULL显示


select * from act_user u right join act_dep d
on d.id=u.depid and d.id=1

select * from act_dep d right join act_user u
on d.id=u.depid and d.id=1

 

--备注:A left join B 与 B right join A 在条件相同的情况下结果集相同


--oracle扩展写法
左边不带+即左外连接  右边不带+ 即右外连接
不带+号的一侧,所有记录出现在结果集,带+表不满足条件的记录null显示
左外连接
select * from act_user u,act_dep d
where u.depid=d.id(+);


select * from act_dep d,act_user u
where d.id=u.depid(+);

 

右外连接
select * from act_user u,act_dep d
where u.depid(+)=d.id;


select * from act_user u,act_dep d
where d.id(+)=u.depid

 

 4:全外连接

A full outer join B 取并集

FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.

FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

select * from act_user u
full outer join act_dep d
on u.depid=d.id;

 

结果集

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值