zoukankan      html  css  js  c++  java
  • oracle学习笔记(十一) 高级查询

    高级查询

    分组查询

    select * from student
    [where ]
    [having ] --二次限定
    [order by] --asc升序 desc降序 默认升序
    

    查看EMPLOYEE表中,员工在同一部门做相同工作且总工资大于5000,平均工资小于1500的薪水情况和人数?

    select  deptno,job,count(*) from employee
    group by  deptno,job
    having avg(sal)<1500 and sum(sal) >5000
    order by deptno;
    

    分组查询注意事项:
    如果在查询结果中的某些字段上没有使用分组函数,那么这些字段就必须出现在group by子句中。这是一个分组查询的强制性规则。

    --查询每个部门的人数以及部门的总工资
    --两个列都是使用了分组函数,所以group by 语句中可以省略不写
    --但deptno没有使用分组函数,所以要group by语句中要出现deptno
    select deptno,count(empno),sum(sal) from employee
    group by deptno
    
    

    非等值连接

    简单地来说,连接条件就是某些值满足在某个范围之内

    --salgrade表中三个属性,losal-hisal是工资范围,grade则是该范围对应的等级
    select ename,salgrade from employee,salgrade
    where sal between losal and hisal;
    

    内连接inner join(等值连接)

    多用于表之间有关联关系,如主外键关系的表

    select * from employee e
    	join department d  --这里相当于inner join,inner可以省略
    		on e.deptno = d.deptno;
    --等值连接
    select * frjom employee e,department d
    where e.deptno = d.deptno;
    

    左外连接left outer join

    多用于表之间有关联关系,如主外键关系的表,不过以左边数据为标准,未匹配的以空行出现
    一般outer可以省略不写

    select * from employee e
    	left join depaterment d on e.deptno = d.deptno;
    

    右外连接

    与左外连接相反,以右边数据为标准,未匹配的以空行出现,好像不常用

    子查询

    单行子查询可以出现在以下位置:

    • select语句
    • from语句
    • join子句中
    • HAVING子句中

    多行子查询:

    1. ANY(值列表): 与子查询结果列表中的任何一个值比较。
    2. ALL(值列表):与子查询结果列表中的所有值比较。
    3. IN(值列表): 等于列表中的任何一个值。
    select * 
    from employee
    where sal<any(select distinct sal from employee where job='SALESMAN')
    
  • 相关阅读:
    SCILAB简介[z]
    UG OPEN API编程基础 2约定及编程初步
    Office 2003与Office 2010不能共存的解决方案
    UG OPEN API 编程基础 3用户界面接口
    NewtonRaphson method
    UG OPEN API编程基础 13MenuScript应用
    UG OPEN API编程基础 14API、UIStyler及MenuScript联合开发
    UG OPEN API编程基础 4部件文件的相关操作
    UG OPEN API编程基础 1概述
    16 UG Open的MFC应用
  • 原文地址:https://www.cnblogs.com/stars-one/p/10889316.html
Copyright © 2011-2022 走看看