zoukankan      html  css  js  c++  java
  • Oracle-05

    数据查询语言---DQL

    1、排序

        asc:升序(默认值)

        desc:降序

        将查询结果进行排序(先有查询的结果再进行排序),排序用order by后面跟上排序呢指定的列,指明排序的规则

    eg:将薪水由低到高进行排序
    select ename,salary from emp_xu order by salary asc;//asca表示升序,也可以不写,默认为升序
    select ename,salary from emp_xu order by salary desc;//降序

        注意:空值在排序的时候被看做最大值

           排序语句的执行在select之后,因此排序可以使用列名、列别名、表达式、函数还可以用数字值(表示按照结果集第几列排序,第一列使用数字1表示))

    2、分组

        1)分组使用group by后面跟上指定的分组字段

    eg:按照职位进行分组,求每个职位的最高,最低薪水和对应的人数总和
    select position,max(salary),min(salary),count(*) from emp_xu group by position;
    select ename,position,max(salary),min(salary),count(*) from emp_xu group by position;//报错,ename不是 GROUP BY 表达式
    select position,max(ename),max(salary),min(salary),count(*) from emp_xu group by position;//将ename使用组函数进行包围

        注意:select之后出现的列,凡是没有被组函数包围的,必须要出现在group by语句中

        2)having:用于对分组之后的数据进行过滤,having是结合group by一起使用

    eg:查询平均薪水大于5000的部门号、平均薪水,没有部门号的不算在内
    select deptno,avg(nvl(salary,0)) from emp_xu where deptno is not null group by deptno having avg(nvl(salary,0))>5000;
    select deptno,avg(salary) from emp_xu where deptno is not null group by deptno having avg(salary)>5000;
    select deptno,avg(salary) avg_salary from emp_xu where deptno is not null group by deptno having avg_salary>5000;//报错,avg_salary无效的标识符,

           注意:where是对表中的数据进行过滤,having是对分组之后的结果进行过滤

               语句有先后的执行顺序,having在select之前执行的(from->where->group by->having->select)

        总结:(表的基础查询)

            a.  写法顺序:

                select->from->where->group by->having->order by

            b.  执行顺序

                from->where->group by->having->select->order by

            c.  关于where和having区别

               * where是行记录的过滤,having是组数据记录的过滤

               * where可以跟任何的列名以及单行函数,不能跟组函数

               * having只能包含group by之后的表达式或组函数

               * where是执行在前的,having执行在后

               * where和having都不能跟列别名(他们都是在select前执行)

  • 相关阅读:
    <!DOCTYPE html>的重要性!
    ibatis 常用标签
    string.match(RegExp) 与 RegExp.exec(string) 深入详解
    JavaScript RegExp.$1
    JavaScript RegExp.exec() 方法
    正则表达式常用符号说明
    正则表达式中/i,/g,/ig,/gi,/m的区别和含义
    JavaScript Math.floor() 方法
    JavaScript RegExp.test() 方法
    js日期格式化 扩展Date()
  • 原文地址:https://www.cnblogs.com/xslzwm/p/9584464.html
Copyright © 2011-2022 走看看