美文网首页
17/12/5多表连接

17/12/5多表连接

作者: 金春国_Roy | 来源:发表于2017-12-13 09:04 被阅读0次

    17/12/5多表连接

    join on 语句
    select * from emp
    join dept on emp.deptno = dept.deptno
    

    1.on将连接条件和其他检索条件分割开,其它检索条件写在WHERE字句。
    2.提高代码的可读性。

    外连接

    -右外连接:以右边的表为主,右表内容全部保留。

    select emp.ename, dept.deptno
    from emp right join dept on emp.deptno = dept.deptno
    

    -左外连接同理。

    -全外连接(full join): 左右两个表都为主,两表内容全部显示出来。

    自身连接

    列:查询所有员工的上级。

    select worker.ename|'的上级是'| manager.ename
    from emp worker
    join emp manager on woker.mgr = manager.empno
    

    扩展:多表连接可以在2个表或者多个表之间进行。

    练习:
    1.使用ON子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点。

    SELECT EMP.ENAME, DEPT.DNAME, DEPT.LOC, SALGRADE.GRADE
    FROM EMP
    join DEPT on EMP.DEPTNO = DEPT.DEPTNO
    join SALGRADE on EMP.sal BETWEEN losal AND hisal
    WHERE DEPT.LOC in ('CHICAGO')
    

    2.使用左连接,查询每个员工的姓名,经理姓名,没有经理的KING也要显示出来。

    select woker.ename, manager.ename  
    from emp woker
    left join emp manager on woker.mgr = manager.empno
    

    3.使用右连接,查询每个员工的姓名,经理姓名,没有经理的KING也要显示出来。
         同理(略)
    4.显示员工SMITH的姓名,部门名称,直接上级名称。

    SELECT WOKER.ename, DEPT.DNAME, manager.ename
    FROM emp woker
    join dept ON woker.deptno = dept.deptno 
    join emp manager ON woker.mgr = manager.empno
    WHERE woker.ename in ('SMITH')
    

    5.显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4.

    SELECT EMP.ENAME, DEPT.DNAME, EMP.SAL, SALGRADE.GRADE
    FROM EMP 
    join SALGRADE ON EMP.SAL BETWEEN LOSAL and HISAL
    join DEPT ON DEPT.deptno = EMP.deptno
    WHERE SALGRADE.GRADE > 4
    

    6.显示员工KING和FORD管理的员工姓名及其经理姓名。

    SELECT emp.ENAME, MANAGER.ENAME, woker.ename
    FROM EMP
    LEFT JOIN EMP manager ON MANAGER.empno = EMP.mgr
    LEFT JOIN EMP woker ON woker.mgr = EMP.empno 
    WHERE EMP.ENAME in ('KING', 'FORD')
    

    7.显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加工作时间比经理早。

    select woker.ename, woker.hiredate, manager.ename, manager.hiredate
    from emp woker 
    join emp manager on woker.mgr = manager.empno
    where woker.hiredate < manager.hiredate
    
    

    相关文章

      网友评论

          本文标题:17/12/5多表连接

          本文链接:https://www.haomeiwen.com/subject/fzzoixtx.html