美文网首页
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多表连接

    17/12/5多表连接 join on 语句 1.on将连接条件和其他检索条件分割开,其它检索条件写在WHERE字...

  • Oracle数据库学习二

    5.多表查询 多表查询 目的:从多张表获取数据 前提:进行连接的多张表中有共同的列 等连接 通过两个表具有相同意义...

  • SQL语句常用命令整理---多表查询

    多表查詢之关连查询 多表数据连接查询,简称连接查询。本篇我们来一同学习多表连接查询的相关用法,主要內容有: 内连接...

  • MySQL 基础 6 多表查询

    1.1 多表查询的概述 1.1.1 多表查询的分类 1.1.1.1连接查询 交叉连接:cross join交叉连接...

  • 多表连接查询

    多表连接查询 -- 1. 预备工作 -- 2. 多表连接的类型 -- 笛卡尔乘积 -- 内连接 (取交集) -- ...

  • Fourth Day

    /-----------------------------------多表连接查询---------------...

  • 2018-08-30

    今天学习了Oracle的多表连接,组函数,分组查询,子查询,常用函数。 多表连接有三种类型:内连接,外连接,自连接...

  • 多表连接

    多表查询不允许有相同的列 也就是不写* 多对一 可以都是用自动映射 一对多 id都要手写 多对多

  • 多表连接

    一、什么是连接 连接是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表之间获得数据。 语法:SEL...

  • Oracle学习day-28:多表查询

    一、多表连接查询 1.多表连接语法 主要解决目标数据分布在不同的表中(如果目标数据不再一张表,可以通过多表连接查询...

网友评论

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

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