一、编写顺序
在 SQL 中,编写查询语句的顺序通常如下:
- SELECT:选择需要查询的列。
- FROM:指定需要查询的表格。
- WHERE:根据特定的条件筛选出数据行。
- GROUP BY:按照指定的列对结果集进行分组。
- HAVING:对分组结果进行筛选。
- ORDER BY:指定查询结果的排序方式。
- LIMIT:限制查询结果的大小。
示例:
SELECT name, age FROM user_table WHERE age >= 18 AND age <= 30 GROUP BY gender HAVING count(*) > 10 ORDER BY age DESC LIMIT 10;
该查询语句从 user_table 表中选择名字和年龄字段,其中年龄在 18至 30 岁之间,然后按照性别进行分组,只返回内记录数大于 10的分组信息,最后将结果按照年龄倒序排序,并只返回前 10 条记录。
二、执行顺序
常用的 DQL 命令包括 SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 等。这些语句的执行顺序如下:
- FROM:指定表名或多个表之间的连接方式,生成虚拟表。
- WHERE:根据条件过滤出满足条件的数据行,生成结果集。
- GROUP BY:按照指定的列对结果集进行分组,生成分组集合。
- HAVING:对分组结果进行筛选,过滤出满足条件的分组集合。
- SELECT:选择需要查询的列,对结果进行投影操作。
- DISTINCT:对查询结果去重。
- ORDER BY:按照指定的列对查询结果进行排序。
- LIMIT:限制查询结果的大小。
各个 DQL 命令的执行顺序不一定完全按照上述顺序执行,有些命令可以交换位置,但执行结果不变。例如,在 GROUP BY 命令之后执行 SELECT 命令,也可以写在 SELECT 命令之前。