oracle外连接(左外连接,右外连接,全链接)

左外联接:
a=b(+)这个是左连接相当于 a letf join b on
左外联接的时候保证左面的表的数据是完整的然后从右面的表中符合条件的链接到左面的表当中。


右外连接:
a(+)=b这个是右连接相当于 a right join b on
右外连接的话是保证右面的所有数据行连接以后都存在,从左面的表里面把符合条件的行链接到右表的操作。

全连接:
a(+)=b(+)这个是全链接相当于 a join b on

那么全连接就是保证左右表的所有数据行都存在与连接后的表当中的连接。


示例:

1、等连接
    问题:显示员工姓名及其所在部门的名称
    分析:  姓名 - emp  - ename
            部门名称 - dept - dname
            关系 emp(deptno) <-> dept(deptno)
    select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;

2、外连接
    问题:查询所有部门名称和对应的员工姓名,若该部门没有员工,只显示部门名称。
    分析: 部门名称 - dept -dname
             员工姓名 - emp - ename
    select d.dname,e.ename from emp e,dept d where e.deptno(+) = d.deptno;
    注意:Oracle中使用(+)表示外连接,可以理解(+)所在字段的对侧(以=分开左右两部分)为主要显示信息。

3、自连接
    问题:显示员工姓名及其上级员工的姓名
    分析:员工姓名 - emp -ename
    select t1.ename,t2.ename from emp t1,emp t2 where t1.mgr = t2.empno;

4、子查询模式
    问题:查询工资高于公司平均工资的所有员工
    分析:公司的平均工资
            select avg(sal) from emp;
            select * from emp where sal>(select avg(sal) from emp);   // 关联子查询

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值