MySQL操作(第七章)-高级查询

  SELECT语句执行过程:

    1.通过FROM子句中找到需要查询的表;

    2.通过WHERE子句进行非分组函数筛选判断;

    3.通过GROUP BY子句完成分组操作;

    4.通过HAVING子句完成组函数筛选判断;

    5.通过SELECT子句选择显示的列或表达式及组函数;

    6.通过ORDER BY子句进行排序操作。

 

  分组函数:对表中一组记录进行操作,每组只返回一个结果

    常用的有五个函数:

      MIN()、MAN()、SUM()、AVG()、COUNT()

      分别是:最小值,最大值,求和,求均值,计数

     其中,count的用法如下:

        COUNT([DISTINCT] column)  distinct代表去重

    除了COUNT(*)之外,其他分组函数都会忽略列中的空值,然后在进行计算

  GROUP BY子句创建数据组:

    SELECT column,group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column];

    -GROUP BY语句放在where后order by前

    -GROUP BY所指定的列并不是必须出现在SELECT列表中

    排除组结果

      -不能在WHERE子句中限制组

      -可以通过HAVING子句限制组

     使用HAVING子句限制组

      SELECT deptno,max(sal) FROM emp GROUP BY deptno HAVING max(sal)>2900;

      查询每个部门最高工资大于2900的部门编号,最高工资

  子查询:在SELECT查询中使用select查询,也叫做内部查询,优于主查询执行

    子查询可以嵌于以下SQL子句中:

      WHERE子句

      HAVING子句

      FROM子句

    使用时:

      -子查询用括号括起来

      -将子查询放在比较运算符的右边

      -对于单行子查询要使用单行运算符

      -对于多行子查询要使用多行运算符

    单行子查询:  即只对一条记录进行筛选

      子查询只返回一行一列

      使用单行运算符(=、>、>=、<、<=、<>)

    多行子查询:  对多行记录进行筛选

      多行操作符包括:

        IN

        ANY

        ALL

     IN判断是否与子查询的任意一个返回值相同

     ANY:

        <ANY:小于最大值

        >ANY:大于最小值

        =ANY:相当于IN

     ALL: 

        <ALL:小于最小值

        >ALL:大于最大值

        =ALL:等于所有值,通常无意义

posted @ 2019-07-29 19:04  褚褚丶  阅读(155)  评论(0)    收藏  举报