老是忘记执行顺序,记录一下:
1. SQL语句的书写顺序
书写顺序通常是我们编写SQL查询时的顺序,主要包括以下关键字:
- SELECT:选择要查询的字段。
- FROM:指定数据来源表。
- JOIN(可选):对表进行连接。
- WHERE(可选):设定行过滤条件。
- GROUP BY(可选):设定分组依据。
- HAVING(可选):对分组后的数据进一步过滤。
- ORDER BY(可选):设定排序。
- LIMIT(可选):限制返回的记录数。
书写顺序示例:
SELECT district, SUM(population)
FROM PopTbl WHERE population > 1000
GROUP BY district
HAVING SUM(population) > 5000
ORDER BY district LIMIT 10;
2. SQL语句的执行顺序
SQL的执行顺序,通常遵循以下逻辑步骤:
- FROM:确定查询数据的来源表。
- JOIN:如果有多表连接,则执行连接操作。
- WHERE:对记录进行行级过滤。
- GROUP BY:根据指定的列进行分组。
- HAVING:对分组后的数据进行过滤。
- SELECT:选择需要输出的字段和聚合结果。
- ORDER BY:对结果进行排序。
- LIMIT:限制返回的记录数量。
执行顺序比书写顺序更重要,因为它决定了SQL查询的逻辑流程。
示例说明执行顺序
以下示例演示了SQL查询的执行过程:
SELECT district, SUM(population) AS total_population
FROM PopTbl
WHERE population > 1000
GROUP BY district
HAVING total_population > 5000
ORDER BY total_population DESC LIMIT 10;
执行过程逐步解释:
-
FROM:从
PopTbl
表中获取所有记录。 -
WHERE:应用
population > 1000
的过滤条件,筛选出人口大于1000的记录。 -
GROUP BY:根据
district
列将筛选后的记录进行分组。 -
HAVING:对分组结果应用
total_population > 5000
的条件,过滤掉不符合条件的分组。 -
SELECT:选择
district
和SUM(population)
结果(并将其命名为total_population
)。 -
ORDER BY:按照
total_population
降序排序。 - LIMIT:限制返回的结果数为10条。
这样,MySQL会按照执行顺序进行逐步处理,最终返回满足条件的、按总人口降序排列的前10个地区和对应人口总数。