下面我将为您详细讲解SQL语句执行顺序。
首先,SQL语句的执行顺序分为以下几个步骤:
- FROM子句中的表被返回,并生成一个虚拟表。这个虚拟表包含了所有从FROM子句中选择的表,并于其他关联表组成的列进行组合(如果有的话)。在这一步中,服务器还会检查该用户是否具有访问表的权限。
- WHERE子句中的所有条件会被检查,只有那些能够得到true或不为false的条件才会被考虑。
- GROUP BY子句操作会按照列的指定进行汇总。此外,还可以在SELECT语句中定义表达式和别名,以便于使用这些定义的别名进行分组操作。
- HAVING子句在GROUP BY子句结果的基础上检查每一行,如果有行不满足条件,就将其排除。
- SELECT语句中的所有表达式(即SELECT后面的所有列)被计算。
- DISTINCT将会检查前面是否有重复行,并删除这些重复行。
- ORDER BY将会遍历执行计划,以此确定结果集应该按照哪个或哪些列进行排序。
- LIMIT将在得到要返回的行之后,选择针对结果集的行数进行限制。
下面,我来给您举两个使用SQL语句的示例:
例1:查询学生成绩表中不及格的学生名单
SELECT name, score
FROM student_scores
WHERE score < 60;
在这个查询中,先从学生成绩表中选出其包含的数据,然后WHERE子句中的条件会被检查,只有分数小于60的被考虑, 在SELECT语句中选择出要展示的列,最后返回符合要求的结果。
例2:以订单号为条件,查询该订单内所有商品的名称及价格,并按照价格降序排列
SELECT item_name, price
FROM orders
JOIN order_items ON orders.order_id = order_items.order_id
JOIN items ON order_items.item_id = items.item_id
WHERE order.order_id = '12345'
ORDER BY price DESC;
在这个查询中,也是先从订单表、订单详情表和商品表中选出其包含的数据,然后使用JOIN将三张表相互关联,在WHERE子句中选出指定订单号的订单,然后在SELECT语句中选择要展示的列,最后按照价格降序排列返回符合要求的结果。
希望这个SQL语句执行顺序的攻略对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL语句执行顺序详解 - Python技术站