oracle(8)

4.3.4 join on 

on 连接,可做等值连接,非等值连接,自连接,可以解决一切连接,关系列必须区分查询所有员工姓名及所在部门的名称。

查询所有员工的姓名,工资以及工资等级。

--查看所有员工的姓名,编号,以及员工所属的部门编号,部门名称

--查询的数据:员工的姓名,编号,以及员工所属的部门编号,部门名称

--数据来源:emp,dept

--连接条件: emp.deptno=dept.deptno

--使用on连接实现

--同名列前是否需要加限定词,如果使用的自然间连接using 连接,

--不能加,如果不是,需要加

select ename,empno,e.deptno,dname

from emp e

join dept d

on e.deptno=d.deptno;

两张表的连接:

--查看每个员工的姓名,工资,所属的部门编号,工资等级

--查询的数据:员工的姓名,工资,所属的部门编号,工资等级

--数据来源:emp  salgrade

--连接条件:sal between losal and hisal (连接条件是最低工资和最高工资得再工资等级里面)

--on 实现

select ename,sal,deptno,grade from emp e join salgrade s on

sal between losal and hisal;

三张表的连接

--查询30部门员工姓名,工资,部门编号,工资等级,部门名称

--查询的数据:员工名称,工资,部门编号,工资等级,部门名称

--数据来源:emp e ,salgrade s ,dept d

--连接条件: sal between losal and hisal   (工资在工资等级最低工资和最高工资之间)

             e.deptno=d.deptno (员工里面的部门编号要和部门表里面的部门编号要相等)

--题意条件: e,depyno=30 || d.deptno=30

select ename,sal,e.deptno ,grade ,dname

from emp e

join dept d

on e.deptno= d.deptno

join salgrade

on e.sal between losal and hisal

where e.deptno =30;

4.3.5 outer join

外连接,有主表和从表一说

left [outer] join on

left [outer] join using

right [outer] join on

right [outer] join using

--查看每一个员工的编号,员工名称,上级编号,上级名称

--(只要你是员工无论你有没有上级你都应该把你自己的信息显示出来,这里涉及到主表问题,员工表即是主表)

--查询数据:员工编号,员工名称,上级编号,上级名称

--数据来源:emp e ,emp m

--连接条件:e.mgr=m.empno

--(连接条件解释:员工表的上级编号要和上级表里面的员工编号一样)

select e.empno 员工编号,

     e.ename 员工名称,

     e.mgr 上级编号,

        m.ename 上级名称,

from emp e

left outer join emp m

      on e.mgr=m.empno;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值