zoukankan      html  css  js  c++  java
  • 多表查询-SQL92

    多表查询是一个比较实际有比较复杂的一种查询。下面希望可以通过实例展示的形式,可以供大家一起学习交流。

    --笛卡尔积式的查询
    select * from emp,dept;
    --笛卡尔积查询的结果会有很多无效的数据,所以要通过关联条件进行筛选
    --所以,出现了一些“关联符号”
    
    --等值连接:提示查询结构中如果有相同的列,要指定表名 标识 是哪个表的字段
    select * from emp,dept where emp.deptno = dept.deptno order by dept.deptno;
    
    --使用多表查询可以给表 指定 别名  表的别名不要加 AS 报错
    --给表取别名之后,原来的表名不能再使用了  (只能使用的是别名)
    select e.empno,e.ename,e.job,e.deptno,d.dname,d.loc
    from emp e,dept d
    where e.deptno = d.deptno
    order by deptno;
    
    --非等值连接
    --查询所有员工的姓名,职位,薪水和薪水等级
    select e.ename,e.job,e.sal,s.grade
    from emp e, salgrade s
    where e.sal >= s.losal and e.sal <=hisal
    --条件也可以使用between...and...
    select e.ename,e.job,e.sal,s.grade
    from emp e,salgrade s
    where e.sal between s.losal and s.hisal;
    
    --自连接
    --查询员工编号,姓名,领导的编号和姓名
    --select * from emp;
    select e1.empno ,e1.ename,e1.mgr,e2.ename
    from emp e1,emp e2 --e1 可以看作是员工表,e2可以看作领导表
    where e1.mgr = e2.empno;--让员工表领导的编号等于领导表的员工编号
    
    select e1.empno ,e1.ename,e2.empno,e2.ename
    from emp e1,emp e2 
    where e1.mgr = e2.empno;
    
    
    --查询所有的员工编号,姓名,有领导的显示领导的编号和姓名,没有领导的只显示员工信息
    --外连接 :显示某张表中没有关联的信息,可以通过 "(+)" 来实现
    select e1.empno ,e1.ename,e1.mgr,e2.ename
    from emp e1,emp e2
    where e1.mgr = e2.empno(+);--左外连接
    
    --查询所有部门的信息以及每个部门的平均工资,包涵没有员工的部门
    select d.*,round(nvl(avg(e.sal),0)) avg_sal
    from emp e,dept d
    where e.deptno(+) = d.deptno
    group by d.deptno,d.dname,d.loc
    order by d.deptno;
    
    --查询20部门的员工编号,姓名,薪水,部门名称,薪水等级
    select e.empno,e.ename,e.sal,d.dname,s.grade
    from emp e,dept d ,salgrade s 
    where e.deptno = d.deptno
    and   e.sal between s.losal and s.hisal
    and   d.deptno=20;
    
    --n张表关联查询,至少需要n-1个条件关联
  • 相关阅读:
    bfs输出路径 && 最短路(迪杰斯特拉)输出路径
    在Ubuntu虚拟机上搭建青岛OJ
    Delphi System.Fillchar 函数
    Delphi 类Class成员介绍 Private、protected、Public、Published
    通过带Flask的REST API在Python中部署PyTorch
    使用ONNX将模型转移至Caffe2和移动端
    AI框架类FAQ
    Paddle Release Note
    如何在框架外部自定义C++ OP
    如何写新的Python OP
  • 原文地址:https://www.cnblogs.com/superdrew/p/8057604.html
Copyright © 2011-2022 走看看