SQL Server 中SQL语句执行顺序
SQL Server 中SQL语句执行顺序
我们需要对SQL语句的执行顺序了若指掌,才能更好的理解SQL。
SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。
在大数编程语言中,代码按编码顺序被处理。
但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。
每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入(需要理解这一概念)。
这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。
只是最后一步生成的表才会返回给调用者。
如果没有在查询中指定某一子句,将跳过相应的步骤。
下面是SQL Server 中SQL语句执行顺序的简单描述。
(8)SELECT (9)DISTINCT (11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2)ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list> (6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
① 确定表名——from
我们要对某张表进行筛选,首先要确定目标表存在。
如果表都不存在,就更别谈什么取数据了,所以,最先执行的语句为“ from 表名 ”
② 多表连接的条件——on
当我们需要对多张表进行连接时,需要使用 on 进行多个字段的连接。
先进行 on 的过滤,而后才进行 join ,这样就避免了两个大表产生全部数据的笛卡尔积的庞大数据。
③ 多表连接的方式——join
当我们需要对多张表进行连接时,需要指定连接的表名,以及表连接的方式。
如果没有多表连接,则没有②③两步。
④ 筛选条件——where
如果有多表连接,则可以对多张表的不同列进行筛选。
所以 where 语句的执行顺序肯定在多表连接之后。
⑤ 分组——group by
肯定要先筛选出我们需要的值,然后再对其进行分组。
如果想要对分组后的聚合内容进行筛选,就需要使用 having 语句。
⑥ 显示汇总行——with
with语句,可以在结果集内返回每一个可能的组和子组组合的 group by 汇总行。
一般不会使用,可以在确实需要使用的时候再去了解。
⑦ 聚合后筛选——having
对 ⑤ 中 group by 聚合后的内容进行筛选,顺序肯定在 group by 之后。
注意where和having的区别:
- where是对原始数据进行筛选;
- having是对聚合后的数据进行筛选;
- where语句执行在having语句之前。
⑧ 选择——select
前面⑦步都完成之后,我们得到了一个虚拟表(不可见)。
然后我们使用select语句进行列选择(说白了,我们必须先得到一个表,select…from之间的语句,只对表中的行或列进行一些选择罢了)。
所以,select语句“ 几乎总是最后被处理 ”。
⑨ 去重——distinct
和select一样,我们需要先得到一个虚拟表,才能对其进行去重操作。
⑩ 排序——order by
对所有前面处理完的数据进行排序。
⑪ 选择前n行——top n
对排序之后的数据,选择前n行进行显示。
参考:sql server 中sql语句执行顺序
SQL Server 中SQL语句执行顺序相关推荐
- 整理:sql server 中sql语句执行顺序
原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...
- SQL Server中使用自定义指定顺序排序
SQL Server中使用自定义指定顺序排序 原文:SQL Server中使用自定义指定顺序排序 比如需要对SQL表中的字段NAME进行如下的排序: 张三(Z) 李四(L) 王五(W) 赵六(Z) 如 ...
- SQL Server中T-SQL语句查询使用的函数
SQL Server中T-SQL语句查询使用的函数 一,字符串函数 字符串函数用于对字符串数据进行处理,并返回一个字符串或数字. 函数名 描述 举例 CHARINDEX 用来寻找一个指定的字符串在另一 ...
- SQL Server中SQL Union vs Union All
This article explains to the SQL Union and vs Union All operators in SQL Server. We will also explor ...
- sql ddl中key_SQL DDL:SQL Server中SQL DDL命令入门
sql ddl中key This article explains SQL DDL commands in Microsoft SQL Server using a few simple exampl ...
- hmi中的宏指令是c语言,HMI中的宏指令编程中的语句执行顺序是?
HMI中的宏指令编程中的语句执行顺序是? 以威纶通里的例子为例: 4. if结构语句 macro_command main() int k[10], j for j = 0 to 10 k[j] = ...
- SQL server 中SQL语句实战操作
学习网址链接: https://www.w3school.com.cn/sql/sql_top.asp 学习案例链接: https://wenku.baidu.com/view/720053b459f ...
- 关于sql和MySQL的语句执行顺序
sql和mysql执行顺序,发现内部机制是一样的.最大区别是在别名的引用上. 一.sql执行顺序 (1)from (3) join (2) on (4) where (5)group by( ...
- 关于sql和MySQL的语句执行顺序(必看)
今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及My ...
最新文章
- iOS15.4 来袭:新增“男妈妈”表情及口罩面容解锁、AirTags 反跟踪等新功能
- 深入理解分布式技术 - 负载均衡策略
- eclipse编译hadoop插件
- android应用开发(21)---Activity介绍
- POJ 3280 Cheapest Palindrome(DP)
- 强悍的命令行 —— 磁盘空间的查看与磁盘空间的释放
- hihocoder 1513 小Hi的烦恼——bitset
- SAP 独立系统的传输请求
- 螺旋桨RNA结构预测竞赛第10名方案
- 电影下载、播放、制作、转换、各类问题全攻略
- 论文略读 | Pointing the Unknown Words
- VTT到底需要多少个电容
- 查询数据库中所有表的记录数
- 30 岁转行做程序员是什么样的体验
- C++课程基础语法小结
- pod spec的创建及其使用
- c语言实现两分钟倒计时
- 85人教版高中英语第一册第十五课 NAPOLEON'S THREE QUESTIONS
- 服务器硬盘恢复出厂设置,教大家Macbook如何恢复出厂设置的方法
- oracle12c bin目录在哪里,OBIEE12c rpd文件更新及rpd所在目录介绍