SQL Select语句完整的执行顺序_MsSql

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

举例说明: 在学生成绩表中 (暂记为 tb_Grade), 把 "考生姓名"内容不为空的记录按照 "考生姓名" 分组, 并且筛选分组结果, 选出 "总成绩" 大于 600 分的.
标准顺序的 SQL 语句为:
Select 考生姓名, max(总成绩) as max总成绩
from tb_Grade
where 考生姓名 is not null
group by 考生姓名
having max(总成绩) > 600
order by max总成绩
在上面的示例中 SQL 语句的执行顺序如下:
(1). 首先执行 FROM 子句, 从 tb_Grade 表组装数据源的数据
(2). 执行 WHERE 子句, 筛选 tb_Grade 表中所有数据不为 NULL 的数据
(3). 执行 GROUP BY 子句, 把 tb_Grade 表按 "学生姓名" 列进行分组
(4). 计算 max() 聚集函数, 按 "总成绩" 求出总成绩中最大的一些数值
(5). 执行 HAVING 子句, 筛选课程的总成绩大于 600 分的.
(7). 执行 ORDER BY 子句, 把最后的结果按 "Max 成绩" 进行排序.

时间: 2024-09-22 18:11:57

SQL Select语句完整的执行顺序_MsSql的相关文章

SQL Select语句完整的执行顺序

1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函数进行计算: 5.使用having子句筛选分组: 6.计算所有的表达式: 7.使用order by对结果集进行排序. 举例说明: 在学生成绩表中 (暂记为 tb_Grade), 把 "考生姓名"内容不为空的记录按照 "考生姓名" 分组, 并且筛选分组结果, 选出 "总成绩" 大于 600 分

如何用sql=select 语句来调用指定某个区间的文章

问题描述 如何用sql=select 语句来调用指定某个区间的文章 原来的编码是这样的,调用前8条新闻: sql="select top 8 * from Southidc_News where ViewFlag and SortID=2 order by NoticeFlag asc,id desc" 我想调用指定的第2条到第5条(指定区间的文章),该怎么改写啊? 解决方案 说白了,你无非就是需要一个服务器sql分页的代码. 不确定你用的是什么sql ,mysql oracle还是m

利用视图管理器编写高效 SQL SELECT 语句

献给初学者,老鸟别扔砖头 编写 SQL 语句一直都是比较纳闷的事,编写时没有一个良好的检错机制,只能运行时才能发现错误,特别是关联的表一多起来,思绪不免会被搞得晕头转向最后不知迷失在什么地方了.近日偶然发现并不是 M$ 没有提供一个良好的傻瓜化界面给我们这帮懒兄懒弟们使用,而是我们自己视而不见,那就是 SQL Server 中的视图管理器,它不仅可以让我们方便地在多个表中进行查询而不去理会他们之间的关系(当然多个表之间必须存在必要的关系),还可以用它进行别名.排序.条件等的设置,然后自动产生出良

Reverse Snowflake Joins 0.49发布 SQL Select语句解析工具

Reverse Snowflake Joins是一款SQL Select语句解析和图表生成工具.图表可以直接显示部分图表中的基本SQL,如 x=30,GROUP BY (year),SUM(profit),HAVING MIN(age). Reverse Snowflake Joins 0.49该版本修复了cast(x as integer) 产生的一个错误. 软件信息:http://sourceforge.net/projects/revj/ 下载地址:http://sourceforge.n

SQLServer中SELECT语句的执行顺序_MsSql

今天在写一条语句的时候,在查询分析器里边执行 要用10s,换用另外一种写法只用少于1s的时间,同事说是因为Sql句语执行顺序的原因.之前看过一点相 关的书,有一点印象,到网上找了资料,学习下. 逻辑查询处理步骤 复制代码 代码如下: (8)SELECT (9)DISTINCT (11)<TOP_specification> <select_list> (1)FROM <left_table> (3) <join_type> JOIN <right_ta

SQL学习笔记三 select语句的各种形式小结_MsSql

复制代码 代码如下: Select * from T_Employee select FName,FAge from T_Employee select FName from T_Employee where FSalary < 5000 select FName as 姓名,FAge as 年龄,FSalary as 月薪from T_Employee where FSalary < 5000 select FName as 姓名,FAge as 年龄,FSalary as 月薪,getda

转载《mysql 一》:mysql的select查询语句内在逻辑执行顺序

原文:http://www.jellythink.com/archives/924 我的抱怨 我一个搞应用开发的,非要会数据库,这不是专门的数据库开发人员干的事么?话说,小公司也没有数 据库开发人员这么个职位吧.好吧,对数据库最深的印象还停留在大学<数据库原理>这堂课上,什么第一范式,第二范式-,这些理论的东西,多多少少还是记得 点,至于更深层次的,我不会.所以呢,撸起袖子,开始学习吧. 干程序员,最不怕的就是学习,如果你连学习都怕了,那还是早点退出这行吧.你说是吧.而我今天这篇文章,既不总结

oracle sql select语句的使用方法

  select格式: SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,-] FROM <表名1>,<表名2>[,-] [WHERE <筛选择条件表达式>] [GROUP BY <分组表达式> [HAVING<分组条件表达式>]] [ORDER BY <字段>[ASC | DESC]] 语句说明: []方括号为可选项 [GROUP BY <分组表达式> [HAVING&l

sql select语句的多表查询的使用方法

SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL SELECT 语法 SELECT 列名称 FROM 表名称以及: SELECT * FROM 表名称注释:SQL 语句对大小写不敏感.SELECT 等效于 select 实例 CREATE TABLE Manufacturers (    ManfID CHAR(8) NOT NULL PRIMARY KEY,    ManfName VARCHAR(30) NOT NULL ) ENGINE=INNODB