位置: 编程技术 - 正文

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

  • 工业企业取得土地使用权专用发票可以抵扣吗?
  • 增值税核算应设置什么
  • 确认固定资产减值损失
  • 成品油认证后要开票怎么做
  • 季报申报之后还可以改吗?
  • 所得税在什么情况下扣除
  • 工资费用分配表属于什么凭证
  • 短期借款会计科目使用说明
  • 高温费计税吗
  • 逾期认证未抵扣的文件
  • 购入办公楼的入账价值
  • 个人承担的社保算工资吗
  • 销售旧货时的售后是什么
  • 为什么要开增值税
  • 计算房产税时容积率怎么算
  • 企业股权溢价转让会计分录
  • 出口退税的城建税和教育费附加怎么算
  • 建筑工程老项目时间
  • 电费的税费计入什么会计科目
  • 小规模纳税人不开票收入填在哪里
  • 专票有电子发票有抵扣联吗
  • 小型微利企业应纳税所得额300万
  • 发票认证只认证进项吗
  • 个人所得税申请免税条件
  • 不用itunes怎么下载软件
  • 3%减按2%征收增值税政策
  • 购车的进项税怎么算
  • 库存现金银行存款用什么凭证
  • 个体工商户经营范围分类目录
  • 如何向企业支付宝收款
  • 当月制造费用转生产成本
  • 王者荣耀中马可波罗的一技能和大招
  • psoft1.exe - psoft1是什么进程 有什么作用
  • 新成立的公司没有社保如何投标
  • 汇款手续费应由谁承担
  • win10下载的软件打不开
  • 存货质量是什么意思
  • 子公司之间能否相互承包工程
  • vue 的watch
  • 牛顿地名
  • php设计原则
  • 峡谷的人
  • 装修费计入固定资产还是长期待摊
  • 利润表利息费用怎么填
  • 预算会计与财务会计适度分离
  • Php结合wordpress开发,需要学会什么
  • vue process.env.node_env
  • 原生js实现promise
  • linux系统操作教程
  • html用语
  • 税金及附加包括哪些
  • 给股东分配股利
  • cmd 访问mysql
  • 生育津贴如何做帐
  • 在途物资属于会计科目吗
  • 预缴增值税后期如何处理
  • 在建工程领用原材料税费怎么处理
  • 新会计准则印花税需要计提吗
  • 绿化工程苗木成活率交工标准
  • 公司车辆违章
  • 老板在自己的公司做事
  • 新公司利润分配
  • uc聊天大厅
  • Windows Server 2008下Backup功能全通透
  • nano linux
  • 进入pe系统后c盘变成了e盘
  • win8系统怎么取消屏保
  • Metaio in Unity3d 教程---Metaio扫描图片要求(Image Tracking)
  • JavaScript中的变量名不区分大小写
  • jquery easyui 教程
  • linux监控cpu使用率脚本
  • 安卓wifi已连接不可上网设置
  • python3.7 pip
  • python自动化监控
  • kmp算法理解
  • android简单项目及代码
  • 生活垃圾处理合作协议
  • 购买方销售方什么意思
  • 河南新乡地税局罗姓病逝
  • 国税局黑龙江省
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设