MySQL中七个查询命令的优先级及特点( 二 )

  • 作用:
  • 对[SELECT生成临时表]中数据进行排序,将排序后的数据行组成一个全新的临时表展示出来;
    =======================================================================
    LIMIT 查询命令
    执行优先级:
    FROM --> WHERE --> GROUP BY --> HAVING --> SELECT --> ORDER BY --> LIMIT
    书写规则 :
    SELECT 字段名,聚合函数
    FROM 表名
    WHERE 对数据进行定位判断条件
    GROUP BY 分组字段1 ,分组字段2….
    HAVING 使用聚合函数统计当前临时表是否可以被删除
    ORDER BY 根据SELECT提供的临时表字段进行排序
    LIMIT 起始数据行位置,截取行数
    作用:
    对临时表数据进行截取 ,将截取到的数据保存到全新的临时表中
    =======================================================================
    多字段分组规则:
    1. 分组字段执行顺序对于最终结果没有任何影响,GROUP BY SEX,HOME与GROUP BY HOME,SEX得到的结果完全一样
    2. GROUP BY一次只能根据一个分组字段进行临时表拆分
    3. 从第二个分组字段开始,每一个分组字段操作的临时表时上一个分组字段生成的临时表
    =======================================================================
    七个查询命令的总结:
    书写格式
    SELECT 字段名,聚合函数
    FROM 表名
    WHERE 对数据进行定位判断条件
    GROUP BY 分组字段1 ,分组字段2….
    HAVING 使用聚合函数统计当前临时表是否可以被删除
    ORDER BY 根据SELECT提供的临时表字段进行排序
    LIMIT 起始数据行位置,截取行数
    执行优先级:
    FROM ---> WHERE ---> GROUP BY ---> HAVING ---> SELECT ---> ORDER BY ---> LIMIT
    1. 查询语句找那个最先执行的永远都是FROM
    2. 七个查询命令中,只有FROM读取硬盘上临时表,剩余的查询命令操作的只能是上一个查询命令生成的临时表.
    3. 七个查询命令中,只有GROUP BY 执行完毕后,有可能生成多个临时表
    4. 七个查询命令中,只有HAVING执行完毕后不会生成新的临时表
    5. 查询命令执行过程中,当前查询命令执行完毕后,MySQL服务器将上一个查询命令生成的临时表进行销毁,所以用户最终看到的临时表只能是最后一个查询命令生成的临时表
    6. SELECT执行行为与操作的临时表的提供方不同




    推荐阅读