MySQL查询语句中七个查询命令特征
一. FROM
-
作用:
- 将硬盘上的表文件加载到内存中,生成一个全新的临时表。
- 定位内存中已经存在的临时表。
-
注意:
- 在一个查询语句中,第一个执行的命令永远是
FROM
。 FROM
定位的是内存中的一个临时表,这个临时表必须手动指定表名。
- 在一个查询语句中,第一个执行的命令永远是
二. WHERE
-
作用:
WHERE
命令操作的是由FROM
命令生成的临时表。WHERE
命令循环遍历当前临时表中的每一行数据,将满足条件的数据行保存到一个全新的临时表。
-
注意:
- 由于
WHERE
命令每次操作只是一行数据,因此在WHERE
使用过程中,无法使用聚合函数作为判断条件。
- 由于
三. GROUP BY
-
作用:
- 首先对临时表中的数据进行一次排序处理。
- 然后将具有相同特征的数据行保存到同一个临时表中。
-
注意:
- 多字段分组中,首先分组字段的执行顺序对于查询结果来说没有任何影响,然后从第二个分组字段开始,操作临时表是上一个分组字段生成的临时表。
- 如果
SELECT
操作的临时表是由GROUP BY
提供,此时SELECT
将遍历GROUP BY
生成的每一个临时表。在操作具体临时表时,SELECT
只会读取指定字段中的第一个数据行内容。
四. HAVING
-
作用:
- 负责将
GROUP BY
生成的临时表中不满足条件的临时表进行删除。
- 负责将
-
注意:
HAVING
命令不能独立出现,只能出现在GROUP BY
命令后面。HAVING
命令每次操作的是一个临时表,因此选择的判断条件应该来自于聚合函数。
五. SELECT
- 作用:
SELECT
操作的临时表由FROM
或者WHERE
命令提供。SELECT
会将指定字段中的所有内容读取出来,并组成一个全新的临时表。SELECT
操作的临时表由GROUP BY
或者HAVING
命令提供。此时,SELECT
会遍历生成的每一个临时表,在操作具体临时表时,SELECT
只会读取指定字段中的第一个数据行