位置: 编程技术 - 正文

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

  • 汇算清缴研发费用加计扣除优惠明细表
  • 定额税率定义
  • 员工交通费可以税前扣除吗
  • 贴现法付息的有效年利率
  • 个体户一直零申报会不会罚款
  • 向投资者支付股利
  • 工业土地划拨性质有年限吗
  • 公司名下没有车可以开运输发票吗
  • 企业用商业汇票支付购货款
  • 没有订立合同的著作权属于什么人
  • 2018年2月1日以后出口发票如何开具
  • 继承房产出售时交个人所得税税率是多少
  • 房产税怎么计算的
  • 批发行业增值税税负率是多少呢
  • 预缴企业所得税分录
  • 研发支出资本化支出在报表哪里
  • 以前年度企业所得税少计提实际已交
  • 分包抵扣计算
  • 购买的承兑怎么下账
  • 政府性基金收入来源三种
  • win11壁纸设置
  • 脚手架属于什么费用
  • 污水处理费该谁交
  • 天然气 初装费
  • linux 数字加减
  • linux命令行使用鼠标
  • 车辆购置税的计税基础
  • 老板垫付的货款会计分录
  • 总分类账户原材料
  • php反序列化漏洞原理
  • 待摊费用和预付账款的区别是什么
  • 小规模负数发票怎么申报增值税
  • 外出培训餐费要进差旅费吗
  • yolov5训练自己的模型配置到单片机
  • html游戏大全
  • iscsiadm命令详解
  • wordpress怎么用
  • python del语法
  • 以银行存款交纳欠缴税金
  • 什么是资产减值准备计提
  • 滴滴普通发票如何开
  • linux下安装mysql数据库5.6源码安装,修改登录用户密码
  • 开票信息修改
  • 出口关税的计算公式
  • sqlserver数据库版本号怎么查
  • 银行收到电子承兑怎么查
  • 购买员工团体意外险条款
  • 收到退回货物
  • 关于职工薪酬的确认和计量下列说法中不正确的是
  • 收到所得税退税怎么做账务处理
  • 冲销以前年度多提税金
  • 大家怎么看理想这个牌子
  • 固定资产如何抵扣进项税额
  • 增值税减免附加税用计提吗
  • 现金日记账根据记账凭证填写吗
  • 暂估应付账款余额调整
  • 动产什么时候发生效力
  • 什么情况下必须打狂犬疫苗
  • 管理费用中的水电费怎么记账
  • 应付职工薪酬的会计科目
  • python的底层语言
  • 绿色安装包怎么卸载
  • win2003开启远程桌面
  • ubuntu怎么禁用nouveau
  • freebsd使用手册
  • ubuntu切换登录用户
  • OS X 10.10 Yosemite的新特性与iOS联系更紧密
  • shell脚本用法
  • shell脚本ping
  • css div 不换行
  • js的运算符
  • Jqgrid之强大的表格插件应用
  • jquery操作元素内容的方法
  • python过程中遇到的问题
  • unity保存项目
  • js函数详解
  • 购货方已抵扣的发票购货方怎么申请红冲
  • 工会春游费用怎么报销
  • 销售哪些产品需办许可证
  • 厦门税务查询地址不符怎么处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设