zoukankan      html  css  js  c++  java
  • 关联查询之92语法和99语法

    92语法

    -- 查询部门编号为10的员工信息和所在部门的信息
    -- 92 等值连接
    select e.ename,d.dname
    from emp e,dept d
    where e.deptno = d.deptno

    --92非等值连接
    -- 查询员工姓名 薪资 和薪资等级
    select e.ename, e.sal, sg.grade
    from emp e, salgrade sg
    where e.sal between sg.losal and sg.hisal

    --92 外连接
    -- 左外连接 以左边的表为主表 右边为添加的数据 
    -- 左边表中所有的数据都会出现在结果集 右边表对应跟左边有合适的就显示出来,没有合适的就空着
    select e.ename,d.dname
    from emp e,dept d
    where e.deptno(+) = d.deptno

    -- 92 自连接
    -- 本表中的一条数据 使用到了本表中的另外一条数据
    -- 查询出来员工以及他的上司的名字 
    select e.ename || '的上司是:' || mgr.ename
    from emp e, emp mgr
    where e.mgr = mgr.empno


    --- 查询员工姓名 薪资 部门名称 薪资等级
    select
    from emp e,dept d,salgrade sg
    where e.deptno = d.deptno
    and e.sal between sg.losal and sg.hisal

    select * from emp,dept

     

     

    -- 99语法
    -- 99交叉连接 相当于是92语法中的笛卡尔积
    select * from emp e cross join dept d

    -- 自然连接
    -- 系统自动使用两张表中同名的列进行等值连接
    select * from emp e natural join dept d

    --制定某一列左自然连接
    select * from emp e join dept d using (deptno)


    -- 如果两张表没有同名的列 或者做的不是等值连接
    -- join on(万能,除了外连接)
    select *
    from emp e
    join salgrade sg
    on e.sal between sg.losal and sg.hisal
    where e.deptno = 10

    -- 99 左外连接
    select e.ename, d.dname
    from emp e
    left outer join dept d
    on e.deptno = d.deptno

    -- 99 右外连接
    select e.ename, d.dname
    from emp e
    right outer join dept d
    on e.deptno = d.deptno

    99语法练习
    --使用99语法更改相应作业:
    --1.列出所有雇员的姓名及其上级的姓名。
    --92语法
    select e.ename, mgr.ename from emp e, emp mgr where e.mgr = mgr.empno

    --99语法
    select e.ename, mgr.ename from emp e join emp mgr on e.mgr = mgr.empno

    --2.列出入职日期早于其直接上级的所有雇员。
    select e.ename, mgr.ename
    from emp e
    join emp mgr
    on e.mgr = mgr.empno
    and e.hiredate < mgr.hiredate

    --3.列出所有部门名称及雇员


    select e.ename, d.dname from emp e join dept d on e.deptno = d.deptno


    --4.列出所有“CLERK”(办事员)的姓名及其部门名称。
    select e.ename, d.dname
    from emp e
    join dept d
    on e.deptno = d.deptno
    and e.job = 'CLERK'


    --5.列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。
    select e.*
    from emp e
    where e.deptno = (select d.deptno from dept d where d.dname = 'SALES')


    --6.列出在每个部门工作的雇员的数量以及其他信息。
    select *
    from (select e.deptno, count(e.ename) from emp e group by e.deptno) t01 natural
    join dept d


    --7.列出所有雇员的雇员名称、部门名称和薪金。
    select ename, dname, sal from emp e natural join dept d


    --8.求出部门编号为20的雇员名、部门名、薪水等级
    select e.ename, e.ename, sg.grade
    from emp e
    join dept d
    on e.deptno = d.deptno
    join salgrade sg
    on e.sal between sg.losal and sg.hisal

  • 相关阅读:
    C open fopen read fread
    图像混合模式算法
    高级API和低级API
    strcpy_s与strcpy
    IsPowerOfTwo
    透明度算法
    POJ 2240(bellman_ford)
    POJ 1797(dijkstra)
    【转载】POJ 图论题目列表
    POJ 1502(Floyd)
  • 原文地址:https://www.cnblogs.com/su-chu-zhi-151/p/11171508.html
Copyright © 2011-2022 走看看