位置: 编程技术 - 正文

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

  • 企业所得税不得扣除的税金
  • 代收的水资源税收入是否计入企业所得税
  • 企业所得税税负率怎么算出来的
  • 员工外出办事报备制度
  • 网银制单了没有审核有影响吗
  • 香港保险代理人佣金
  • 固定资产在现金流量表中的体现
  • 主营业务成本明细账图
  • 拍卖公司都要交前期费用吗?
  • 转账支票背书转让样本
  • 确认以前年度收入怎么做账
  • 财务报表里现金是什么
  • 学校收到政府拨付的助学金和奖学金需要缴纳税款吗
  • 企业工资薪酬包括哪些内容
  • 个体户进货需要成本票吗
  • 通用机打发票什么样子
  • 非征期不能抄报
  • 增值税2017年起征点
  • 非汉语是什么意思
  • 营改增的重点是什么
  • 会议案例分析题及答案
  • 统借统还定义
  • 授权费计入什么科目
  • 营业外支出汇算清缴调增填哪
  • 公户转私户的钱怎么退回来
  • 公司开业前启动大会
  • win11安装失败0xc1900201
  • 家装行业如何确认收入
  • 怎么用onekey重装系统
  • linux中的文件
  • 房地产企业哪些成本上升了
  • 所有者权益变动表范本
  • win7纯净版系统 9代
  • php实现验证码功能
  • 年终奖一般发什么奖品
  • 交易性金融资产属于流动资产
  • 使用php进行mysql数据库编程的基本步骤
  • es6的module模块
  • 房地产公司活动方案
  • wx-java
  • thinkphp分表查询
  • css选择器详解
  • vs命令参数
  • html写php
  • 融资租赁固定资产不属于筹资活动
  • 如何测试php
  • 取得企业债券利息
  • 招待费住宿费专票
  • 天猫如何不走对公账户
  • 详解九章算法
  • mongodb unwind
  • mongodb的用户名和密码
  • 织梦cms官网
  • python中的参数传递
  • 新会计准则里的机械作业是什么
  • 基本户是活期还是定期
  • 年底计提坏账收回一部分怎么处理
  • 出售金融商品的增值税计税依据
  • 购买办公楼分期合同
  • 购买单位什么意思
  • 机票抵扣怎么填申报表
  • 年底不发工资 员工离职
  • mysql中使用instr进行模糊查询方法介绍
  • 非常详细的魔方公式图解
  • 联想电脑BIOS启动键
  • win8无法运行exe
  • 2008r2多用户远程桌面
  • cgi linux
  • searchnavversion.exe - searchnavversion是什么进程 作用是什么
  • linux012
  • python转换语句
  • Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社
  • flask使用celery
  • nodejs基础知识
  • 魅蓝notezol
  • Ubuntu14.04 Android 源码编译
  • unity she
  • 浏览器工作机制
  • 留抵税额退税政策2022年14号文件
  • 襄阳市疫情防控中心电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设