ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 731|回复: 1

请教SQL语句的顺序规则?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-8-4 14:57 | 显示全部楼层 |阅读模式
SQL语句的读取与执行顺序?另外哪些语句是必须写在FORM,WHERE 之前的,哪些是之后的?

TA的精华主题

TA的得分主题

发表于 2019-8-22 15:06 | 显示全部楼层
查询的逻辑执行顺序

1FROM < left_table>
2ON < join_condition>
3< join_type> JOIN < right_table>
4WHERE < where_condition>
5GROUP BY < group_by_list>
6WITH {cube | rollup}
7HAVING < having_condition>
8SELECT
9DISTINCT
10ORDER BY < order_by_list>
11< top_specification> < select_list>
标准的SQL 的解析顺序为:

.FROM 子句 组装来自不同数据源的数据
.WHERE 子句 基于指定的条件对记录进行筛选
.GROUP BY 子句 将数据划分为多个分组
.使用聚合函数进行计算
.使用HAVING子句筛选分组
.计算所有的表达式
.使用ORDER BY对结果集进行排序
执行顺序

FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt1
ON:对vt1表应用ON筛选器只有满足< join_condition> 为真的行才被插入vt2
OUTER(join):如果指定了 OUTER JOIN保留表(preserved table)中未找到的行将行作为外部行添加到vt2 生成t3如果from包含两个以上表则对上一个联结生成的结果表和下一个表重复执行步骤和步骤直接结束
WHERE:对vt3应用 WHERE 筛选器只有使< where_condition> 为true的行才被插入vt4
GROUP BY:按GROUP BY子句中的列列表对vt4中的行分组生成vt5
CUBE|ROLLUP:把超组(supergroups)插入vt6 生成vt6
HAVING:对vt6应用HAVING筛选器只有使< having_condition> 为true的组才插入vt7
SELECT:处理select列表产生vt8
DISTINCT:将重复的行从vt8中去除产生vt9
ORDER BY:将vt9的行按order by子句中的列列表排序生成一个游标vc10
TOP:从vc10的开始处选择指定数量或比例的行生成vt11 并返回调用者
看到这里,那么用过linqtosql的语法有点相似啊?如果我们我们了解了sqlserver执行顺序,那么我们就接下来进一步养成日常sql好习惯,也就是在实现功能同时有考虑性能的思想,数据库是能进行集合运算的工具,我们应该尽量的利用这个工具,所谓集合运算实际就是批量运算,就是尽量减少在客户端进行大数据量的循环操作,而用SQL语句或者存储过程代替。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 19:07 , Processed in 0.037999 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表