位置: 编程技术 - 正文

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中存储过程的用法)

  • 建筑业一般纳税人可以开3%的发票吗
  • 印花税一般计入管理费用
  • 税率的具体形式
  • 成本票有哪些种类
  • 兼职会计负责的工作内容
  • 收款和出库哪个借方哪个贷方?
  • 一般纳税人劳务费税率是13还是6
  • 信息技术费如何做账
  • 工会经费计税基数包含支付职工的辞退福利
  • 房产企业贷款利率
  • 股权变更前账务怎么处理
  • 在建工程转固定资产凭证附件
  • 留抵税额抵减欠税文件
  • 公司改变工资结构变相降工资怎么办
  • 研发场地租赁计什么科目
  • 抬头是别的公司怎么报销
  • 增值税专用发票几个点
  • 员工因公负伤期间公司怎么开工资
  • 注销怎么做账
  • 社保打的生育保险怎么做账
  • 工会经费申报的依据
  • win11自带的播放器
  • 赠送客户的商品计入什么科目
  • 房地产无证销售法律风险
  • 缴住房公积金会计分录怎么写
  • vue 使用高德地图
  • 股东垫付款怎么处理
  • 前端微信小程序支付功能怎么实现
  • docker部署架构图
  • go语言入门指南
  • 电子税务局已申报的财务报表怎么修改
  • 利润表中本期数
  • 期初未分配利润在哪个表
  • 应收账款能想到什么
  • 电子商业汇票是指
  • 向境外支付赔偿款是否需要税务备案
  • 如何算基数
  • 如何确定固定资产的原始成本
  • 资产负债表第二年怎么填
  • mustn't be allowed
  • 备用金用发票核销去哪核销
  • 汇总记账凭证账务处理
  • 存货跌价准备的特点
  • 库存商品怎么结转收入
  • 房屋租赁合同印花税怎么交,一年一次吗
  • 积分兑换商品怎么查快递
  • 电商行业的采购
  • 出口运保费是什么费用
  • 公司注销固定资产必须清理吗
  • 集团拨款
  • 财务常见问题有哪些
  • 企业所得税国税地税怎么分
  • 计算成本时应该考虑什么
  • 年度投资额看哪个科目
  • 销售做不动 应该做什么
  • 个人所得税个人申报和公司申报区别
  • 为什么要挂靠其他劳务派遣公司?有什么利弊?
  • 待抵扣税额怎么做分录
  • 福利补贴制度
  • 应收账款属于流动负债项目吗
  • 出租人融资租赁的判断标准
  • sql server数据导入导出的特点
  • sql2005和2000区别
  • win8 恢复
  • 隐藏的系统
  • windows8.1右下角水印
  • mac2020怎么换开机背景
  • linux如何操作数据库
  • 安装xps虚拟打印机
  • win10显示win8
  • os x 10.10.5
  • easyui下拉列表
  • unityc#打不开
  • javascript常用语法
  • 使用二氧化碳灭火器时人应该站在什么位置
  • 浅析jQuery Ajax请求参数和返回数据的处理
  • 如何用python编写脚本处理数据
  • Android之fill_parent和wrap_content
  • 陕西税务纳税服务平台
  • 税务核查主要核算内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设