MySQL中7个查询命令的优先级:
FROM --> WHERE --> GROUP BY --> HAVING -->SELECT --> ORDER BY --> LIMIT
=======================================================================
在MySQL中执行查询命令时会自动创建临时表
什么是临时表,及特点:
- 由[查询命令]在内存中生成虚拟表,被称为临时表
- 当前查询命令执行完毕后,MySQL服务器自动的将上一个查询命令生成的临时表自动销毁处理
- 每一个查询命令操作的是上一个查询命令生成的临时表,除了[FROM] 命令 (因为它永远第一个执行)
- 临时报名称就是硬盘上表文件名
- 在一个查询语句结束后,用户看到的临时表只能是查询语句中最后一个查询命令生成的临时表
FROM查询命令:
- FROM命令作用,将硬盘上的表文件加载到内存中生成一个临时表
- MySQL服务器存在7个查询命令,在一个查询语句执行时,永远第一个执行的查询命令是FROM {FROM SELECT }
WHERE命令:
-----循环遍历临时表中每一个数据行,遍历时每次只会取得一个数据行来判断当前数据行是否满足定位条件.在循环遍历结束后,WHERE命令将所有满足条件的数据行读取出来生成一个全新的临时表
-----WHERE命令在FROM命令只会执行,因此操作的是FROM生成的临时表1
循环遍历临时表的所有数据行,每次读取一个数据行判断是否满足定位条件
【MySQL中七个查询命令的优先级及特点】在循环结束后,WHERE命令将所有满足定位条件的数据行读取出来保存到一个全新的临时表
=======================================================================
GROUP BY 查询命令:
- GROUP BY查询命令被称为[分组查询命令]
- 执行优先级:FROM --->WHERE ----> GROUP BY------>SELECT
- 书写格式:
FROM 表名
WHERE 数据行定位条件
GROUP BY 分组字段
作用:
首先根据[分组字段]内容对临时表数据进行分类.
然后将具有相同特征的数据行保存到一个临时表中.
七个查询命令中,只有GROUP BY在执行完毕后才有可能生成多个临时表.
=======================================================================
HAVING 查询命令
- 执行的优先级: FROM --> WHERE --> GROUP BY --> HAVING --> SELECT
- 书写规则:
①只有GROUP BY出现的时候,HAVING 才有机会出现,他不会独立出现在查询语句
②出现的时候,必须出现在GROUP BY 后面
作用:
对GROUP BY生成的临时表进行[统计分析],将不满足条件的临时表从内存中进行销毁 。HAVING任务是销毁掉内存中临时表.
HAVING通常与聚合函数共同使用;
=======================================================================
WHERE 与 HAVING的区别:
WHERE 命令执行完毕后,将满足条件数据行读取出来生成一个全新的临时表
HAVING命令执行时,负责将GROUP BY生成的临时表中不满足条件的临时表进行销毁
-----------------------------------------------------------------------------------------------------------------
WHERE每次操作一个数据行,因此WHERE后边的判断条件不能使用聚合函数
HAVING每次操作的是一个临时表,因此HAVING后面应该使用聚合函数作为判断条件
-----------------------------------------------------------------------------------------------------------------
WHERE命令必须声明在GROUP BY 前方
HAVING命令必须生命在GROUP BY后方
=======================================================================
SELECT行为特征:
- 如果SELECT操作的临时表由(FROM或者WHERE)提供,此时SELECT像切蛋糕一样将制定字段所有的内容读取出来,组成一个全新的临时表
- 如果SELECT操作的临时表由(GROUP BY 或者 HAVING)提供,此时SELECT可能面对多个临时表,SELECT将会一次操作每一个临时表.在操作某一个临时表时,只会读取指定字段的[第一行数据],然后将从多个临时表读取内容组成一个全新的临时表.
=======================================================================
ORDER BY 查询命令
- 执行优先级: FROM --> WHERE --> GROUP BY -->HAVING --> SELECT -->ORDER BY
推荐阅读
- 千万级MySQL数据库建立索引,提高性能的秘诀
- Linux中zip压缩和unzip解压缩命令详解
- 中国迤西回族茶俗
- 中国茶企五种主要营销模式浅探
- 浅谈中国茶叶发展历史
- 优质普洱茶必备的七个指标
- 怎么改变肤色暗黄?
- 中国古代四大僵尸始祖 上古十大僵尸始祖
- 中国茶企转型,便捷 健康 时尚是突困之法
- 中国赴日交流生受邀体验日本茶文化