位置: 编程技术 - 正文

T-SQL 查询语句的执行顺序解析(sql中查询语句)

编辑:rootadmin

(5)SELECT (5-2) DISTINCT(5-3)TOP(<top_specification>)(5-1) <select_list>

(1)FROM (1-J) <left_table> <join_type> JOIN <right_table> on <on_predicate>

(2)WHERE <where_predicate>

(3)GROUP BY <group_by_specification>

(4)HAVING <having_predicate>

(6)ORDER BY <order_by_list>;

  每一步都会生成一个虚拟表,该虚拟表会作为下一步的输入。这些虚拟表对于调用者是不可用的,只有最后一步生成的虚拟表才会返回给调用者。如果在查询中没有指定某一个子句,则会跳过相应的步骤。接下来就简单地描述一下这些不同的逻辑步骤。

(1)FROM FROM阶段标识出查询的来源表,处理表运算符,每个表运算符也会应用一系列子阶段。例如,在联接运算中涉及的阶段是(1-J1)笛卡尔积、(1-J2)ON筛选器和(1-J3)添加外部行。FROM阶段生成虚拟表VT1。

(1-J1)笛卡尔积 这个阶段对表运算符涉及的两个表执行笛卡尔积(交叉联接),生成虚拟表VT1-J1。

(1-J2)ON筛选器 这个阶段对VT1-J1中的行根据ON子句中出现的谓语进行筛选。只有让该谓语取值为TRUE的行,才能插入VT1-J2中。

(1-J3)添加外部行 如果指定了OUTER JOIN(相对于CROSS JOIN 或 INNER JOIN),则将保留表(preserved table)中没有找到匹配的行,作为外部行添加到VT1-J2中,生成VT1-J3。

(2)WHERE 这个阶段根据在WHERE子句中出现的谓语(<where_predicate>)对于VT1中的行进行筛选。只有让谓语计算结果为TRUE的行,才会插入VT2中。

(3)GROUP BY 按照GROUP BY子句中指定的列名列表,将VT2中的行进行分组,生成VT3。

(4)HAVING 根据HAVING子句中出现的谓语(<having_predicate>)对VT3中的分组进行筛选。只有让谓语计算结果为TRUE的组,才会插入到VT4。

(5)SELECT 处理SELECT子句中的元素,生成VT5。

(5-1)计算表达式 计算SELECT列表中的表达式,生成VT5-1。

(5-2)DISTINCT 删除VT5-1中的重复行,生成VT5-2。

(5-3)TOP 根据ORDER BYi子句定义的逻辑排序,从VT5-2中选择前面指定数量或百分比的行,生成表VT5-3。

(6)ORDER BY 根据ORDER BY子句中指定的列名列表,对VT5-3中的行进行排序,生成游标VC6。

标签: sql中查询语句

本文链接地址:https://www.jiuchutong.com/biancheng/348876.html 转载请保留说明!

上一篇:学习SQL语句(强大的group by与select from模式)(sql 语句)

下一篇:sql存储过程获取汉字拼音头字母函数(sql中存储过程的用法)

  • 增值税发票综合服务平台错误代码35
  • 进项税额转出需要结转吗
  • 房地产企业成本包括哪些
  • 季中转一般纳税人申报步骤
  • 所得税季报填错了已经申报了
  • 发票批量作废怎么操作的
  • 家属机票怎么办理
  • 其他综合收益的税后净额怎么计算
  • 持有至到期投资在资产负债表怎么填
  • 不含税价怎么转化为含税价
  • 房地产开发预提费用
  • 公司没有收入没开发票
  • 公户没有进账,可以开发票吗?
  • 预付办公室装修款
  • 在杂志上发表论文
  • 一般纳税人转出进项税额
  • 一般纳税人开劳务费税率是多少2023
  • 可转债税前收益和税后收益
  • 小微企业按季度报送财务报表
  • 赎回公司发行的债券怎么做账?
  • 进项退回怎么做账
  • 技术服务费如何收取
  • windows无法连接到打印机指定的网络名不再可用
  • 压缩文件夹发给别人他能看到我桌面上的文件吗
  • win10 5月更新已知bug
  • PHP:mb_detect_encoding()的用法_mbstring函数
  • nddeagnt.exe - nddeagnt是什么进程 有什么用
  • PHP:ftp_ssl_connect()的用法_FTP函数
  • thinkphp5自定义标签
  • 补缴税款计入什么科目
  • 个体户不建账怎样处罚
  • 无形资产出租怎么开具发票
  • 圣帕特里克的传说
  • php字符串包含某个字符串
  • laravel视频教程
  • 论文可查
  • 多域名指向同一ip有问题吗
  • 销售自己使用过的固定资产
  • js栈堆的区别
  • 织梦系统
  • mac os x10.9.5
  • mysql中事件的作用
  • syslog ng
  • 预付开发票加油后还能开吗?
  • winXP系统安装SQLServer2005开发版具体过程与注意问题
  • 小企业长期债券投资
  • sql server 2008的安全机制
  • 运输途中发生的合理损失
  • 工程建设期间发生的差旅费
  • 销售补偿法
  • 哪些原始凭证要盖章
  • 公司收到财政局奖励怎么记账
  • 存货盘盈的账务处理入什么费用
  • 修理费未收到发票怎么办
  • 新公司初期费用全部入哪里
  • 报销没有消费凭据怎么办
  • 如何提取工会经费的钱
  • Windows Server 2008下共享资源访问走捷径
  • win10系统无法开机怎么修复
  • vim 多窗口启动以及相互切换
  • windows缓存写入失败,数据怎么找回
  • wind10怎么打开摄像头
  • reminder.exe - reminder是什么进程 有什么用
  • 雨林木风软件网
  • winxp不能正常启动
  • win10以太网属性为空白怎么办
  • Cocos2d-JS中JavaScript继承
  • Visual Studio 2013 Tools for Unity安装目录,Visual Studio 2013 Tools.unitypackage
  • javascriptcsdn
  • javascript解析器
  • python写一个备份文件功能
  • 菜单下一章
  • shell脚本函数及传参
  • 怎么实现移动
  • Javascript Global对象
  • unity loom插件
  • python中import导入模块的方法
  • 非税收入发票盖什么章
  • 无偿转让股权要交税吗
  • 税务 稽查局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设