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比已知值要小,会排在最前面。

    延伸:

    一、表运算符

  • 相关阅读:
    数据结构-查找-有序查找
    发现新大陆 --21lic
    专利检索
    IT行业新闻事件
    流量校准仪开发日志-2017-10-24
    电池充电方案总结
    iOS中创建自定义的圆角按钮
    iOS 内存管理实践
    iOS 内存管理策略
    [置顶] 内存管理一点也不神秘————手绘iOS内存管理细节
  • 原文地址:https://www.cnblogs.com/xyang/p/3917553.html
Copyright © 2011-2022 走看看