zoukankan      html  css  js  c++  java
  • SQL 查询总是先执行SELECT语句吗?你们都错了!

    SELECT语句中子句的顺序。SELECT语句中使用时必须遵循的次序。

    经过一段时间的学习,我们知道了SELECT语句超简版的语法如下:

    SELECT 字段名 FROM 表名
    

    后来,我们又陆续学习了WHERE/GROUP BY/HAVING/ORDER BY等子句……

    因此,我们今天就来说下SELECT语句较为完整的语法结构(如下)与它的执行顺序是怎么样的?

    SELECT [DISTINCT] [TOP] 字段名 
    FROM 表名
    [WHERE] 行级过滤
    [GROUP BY] 分组
    [HAVING] 组级过滤
    [ORDER BY] 排序
    

    文字版较完整的SELECT语句执行顺序如下:

    1)SQL首先执行的是FROM子句,根据FROM子句中指定的一个或多个表创建表。

    2)如果存在WHERE子句,则对步骤1获得的表进行条件过滤,删除不符合条件的行记录。

    3)如果存在GROUP BY子句,则对步骤2生成的表按指定字段进行分组,生成一份新的数据表。

    4)如果存在HAVING子句,则对步骤3的表按指定条件进行过滤,删除不满足过滤条件的记录。

    5)执行SELECT子句,删除不包含在SELECT子句所指定的字段。如果SELECT子句中包含关键字DISTINCT,则执行去重运算。

    6)如果有ORDER BY子句,则按指定的排序规则对结果表进行排序操作。

    7)如果有TOP谓词,则再进行TOP运算。


    表格版较完整的SELECT语句执行顺序如下:

    顺序

    子句

    说明

    是否必须使用

    1

    FROM

    从中检索数据的表

    仅在从表中选择数据时使用

    2

    WHERE

    行级过滤

    3

    GROUP BY

    分组说明

    仅在按组计算聚集时使用

    4

    HAVING

    组级过滤

    5

    SELECT

    要返回的列或表达式

    6

    DISTINCT

    返回唯一不同的值

    7

    ORDER BY

    输出排序顺序

    8

    TOP

    规定要返回的记录的数目

    总结:SQL的执行顺序,既不是语句的先后顺序,也不是由内到外的顺序;比如,最先出现的SELECT 子句并非首先执行的,它的执行顺序处在HAVING之后和ORDER BY之前。DISTINCT的位置处在TOP之前,但TOP的运算顺序又在DISTINCT之后。

    点击关注“SQL数据库运维”,后台回复关键字:进群,带你进入高手如云的技术交流群。

      

      

  • 相关阅读:
    在ASP.NET MVC2的Html.BeginForm中定义Form的id和name
    MVC中使用Ajax提交数据 Jquery Ajax方法传值到action
    用XML编写EXCEL文件,XML的写法注意事项,可以C#+xslt导出Excel
    DataGrid中删除分页最后一条记录时PageIndex错误的解决方法
    el 表达式函数对数组的处理
    solr 3.5 配置及应用(三)
    centos 6.2 syslogng的配置
    CentOS 6.2 安装tripwire2.4.2.2配置
    日志服务器的配置
    solr 3.5 配置及应用(一)
  • 原文地址:https://www.cnblogs.com/since-1995/p/15109990.html
Copyright © 2011-2022 走看看