• SQL语句的执行顺序


    SQL语言是一门非常简单的语言,编写SQL只要理解其执行逻辑就能写出正确的SQL语句!

    SQL语句和其他的编程语言最明显的区别是处理代码的执行顺序,大多数的编程语言,代码是按照编码顺序被处理,但是SQL语句的执行顺序是不同的。

    例子:

    1SELECT[DISTINCT]
    2FROM
    3WHERE
    4GROUP BY
    5HAVING
    6UNION
    7ORDER BY

    上面的例子没有把所有的SQL语法结构都列出来,但是足够说明SQl的语法顺序和执行顺序完全不一样,上述语句的执行顺序为:

    1FROM
    2WHERE
    3GROUP BY
    4HAVING
    5SELECT
    6DISTINCT
    7UNION
    8ORDER BY

    SQL语句的执行顺序值得注意的地方:

    1.from是SQL语句执行的第一步,数据库执行SQL语句的第一步是将数据从硬盘加载到数据缓冲区,便于对这些数据进行操作。

    2.select是在大部分语句执行后才执行的,严格说是在from和group by之后执行,这也是在where中不能使用在select中设定别名的字段作为判断条件的原因。

    1 SELECT A.x + A.y AS z
    2 FROM A
    3 WHERE z = 10 -- z 在此处不可用,因为SELECT是最后执行的语句! 

    如果想使用别名Z,有两个选择。要么重新写一遍Z代表的表达式:

    1 SELECT A.x + A.y AS z
    2 FROM A
    3 WHERE (A.x + A.y) = 10

    或者求助衍生表,通用数据表达式或者视图,避免别名重用。

    3.无论在语法上还是执行顺序上,union总是排在order by之前。很多人认为每个 UNION 段都能使用 ORDER BY 排序,但是根据 SQL 语言标准和各个数据库 SQL 的执行差异来看,这并不是真的。尽管某些数据库允许 SQL 语句对子查询(subqueries)或者派生表(derived tables)进行排序,但是这并不说明这个排序在 UNION 操作过后仍保持排序后的顺序。

    注意:并非所有的数据库对 SQL 语句使用相同的解析方式。如 MySQL、PostgreSQL和 SQLite 中就不会按照上面第二点中所说的方式执行。

    用一段话总结一下:

    SQL Select语句完整的执行顺序:
    1、from子句组装来自不同数据源的数据;
    2、where子句基于指定的条件对记录行进行筛选;
    3、group by子句将数据划分为多个分组;
    4、使用聚集函数进行计算;
    5、使用having子句筛选分组;
    6、计算所有的表达式;
    7、使用order by对结果集进行排序。
    8、select 集合输出。

  • 相关阅读:
    设计模式>经典设计模式一览 小强斋
    java基础>Java Collections Framework 小强斋
    如何查看python中包的版本
    gcc安装包下载地址
    Linux下boost库的编译及安装
    centos中如何自动获取IP、获取网关
    src/delly.h:8:10: fatal error: boost/graph/adjacency_list.hpp: No such file or directory
    linux系统中如何查看本机IP
    分布式事务解决方案
    Java常用的并发类总结列表
  • 原文地址:https://www.cnblogs.com/spring-hailong/p/6182227.html
Copyright © 2020-2023  润新知