zoukankan      html  css  js  c++  java
  • 【SQL Server】系统学习之三:逻辑查询处理阶段-六段式

    一、From阶段

    针对连接说明:

    1、笛卡尔积

    2、on筛选器

    插播:unknown=not unknuwn 缺失的值;

    筛选器(on where having)把unknown当做FALSE处理,排除在筛选结果之外。如果比较两个null,结果是不相等的,false

    check约束中当做true,例如要求某列大于0,当插入null时是成功的,认为null>0是ture。如果比较两个null,结果是相等的,这种比较在unique约束、集合运算(例如union 、except)、排序、分组,都认为是相等的。

    3、添加外部行(外连接)

    二、where

    由于还未分组,不能使用聚合函数;还未select,不能使用select中指定的列别名。

    三、group by

    四、having

    五、select阶段

    1、聚合运算

    2、discount排重

    3、top

    如果未指定order by,则返回的集是不确定的

    当指定了with ties时,会检查最后一行,并返回和最后一行值相同的所有行。

    六、order by

    这一步返回的不再是有效的表,而是游标,这也是为什么改语句不能用在表表达式中的原因。(还记得表表达式吗?视图、内联表值函数、派生表、cte

    例外情况,是和top搭配使用时,作为获取前n条的逻辑有限顺序,此时返回的行,并未排序,不保证顺序,这点需要注意。

    如果不必要,不要轻易指定order by,会执行索引扫描或者执行sort运算符。

    order by认为null是相等的。同时,null比已知值要小,会排在最前面。

    延伸:

    一、表运算符

  • 相关阅读:
    WebService相关
    远程连接db2数据库
    修改VNC分辨率大小
    java面向对象的核心思想
    小故障排查
    使用IntelliJ IDEA开发java web
    WebService概述
    Qt开发之信号槽机制
    用SoapUI 测试Web Service
    剑指offer:滑动窗口的最大值
  • 原文地址:https://www.cnblogs.com/xyang/p/3917553.html
Copyright © 2011-2022 走看看