• Inside Microsoft SQL Server 2008: T-SQL Querying 读书笔记1


    (5)SELECT   (5-2) DISTINCT    (5-3)TOP(<top_specifications>)   (5-1)<select_list>

    (1)FROM (1-J) <left_table> <join_type> JOIN <right_table> ON <on_predicate>

      | <1-A> <left_table><apply_type> Apply <right_table_exprssion> AS <alias>

      | <1-P> <left_table>PIVOT(<pivot_specification>) AS <alias>

      | <1-U> <left_table>UNPIVOT(<unpivot_specification>) AS <alias>

    (2)WHERE <where_predicate>

    (3)GROUP BY <group_by_specification>

    (4)HAVING <having_predicate>

    (6)ORDER BY <order_by_list>

    1. FROM 表示其后标识的是一个表, 不管该表是单个表名或通过N个表运符得到的一个表

    1.1 JOIN 运算分三步(CROSS | INNER | OUTER)

      1.1.1 执行笛卡尔积

          1.1.2 应用ON

          1.1.3 添加外部行(outer join)

    1.2 APPLY (CROSS | OUTER)

      1.2.1 把右表达式应用于左表达式的行

      1.2.2 添加外部行(OUTER)

    1.3 PIVOT(行转换为列)

           1.3.1 分组(未作为PIVOT输入的所有列)

           1.3.2 扩展 (为PIVOT添加相应的列)

           1.3.3 聚合 (为要生成的列聚合)

    example:

      SELECT *
      FROM (SELECT empid, YEAR(orderdate) AS orderyear, val
          FROM Sales.OrderValues) AS OV
        PIVOT(SUM(val) FOR orderyear IN([2006],[2007],[2008])) AS P;

    1.4 UNPIVOT(列变成行)

      1.4.1 生成副本(用UNPIVOT运算符中IN子句中出现的列名填充内容生成一个新列)

      1.4.2 提取元素(从源列中提取出与当前副本行相对应的值保存到指定的列中)

      1.4.3 删除带有NULL的行 

    example:

      SELECT empid, orderyear, val
      FROM dbo.EmpYearValues
        UNPIVOT(val FOR orderyear IN([2006],[2007],[2008])) AS U;

    生成虚表VT1

    2. WHERE阶段

    在VT1中满足where predicat条件的行生成虚表VT2

    3. GROUP BY

    基于VT2返回分组的VT3

    4. HAVING

    基于VT3满足having predicate 条件生成VT4

    5. SELECT

          5.1 计算表达式

      5.2 应用DISTINCT

      5.3 应用TOP

    6. ORDER BY

     集合运算符(UNION ALL, UNION,  EXCEPT, INTERSECT)

    第二章集合论和谓词逻辑

    子集

    补集

    并集 

    交集

    差集

    第三章关系模型

    关系运算符

    限制,投影, 积, 并,交,减, 联接, 除

  • 相关阅读:
    Element UI 安装报错:this dependency was not found:'element-ui/lib/theme-chalk/index.css'
    Xshell中用./startup.sh启动时候提示权限不够
    /bin/bash^M: 解释器错误: 没有那个文件或目录
    【ES从入门到实战】二十一、全文检索-ElasticSearch-分词-分词&安装ik分词
    ES(Elasticsearch)核心概念
    ES简介
    Linux给用户赋予某个文件夹的操作权限
    Qt QThread 这是我 见过解析最全面的一片文章
    QTcpServer使用多线程处理连接进来的QTcpSocket
    VS2019控制台输出中文乱码问题已解决
  • 原文地址:https://www.cnblogs.com/jjyjjyjjy/p/3053304.html
Copyright © 2020-2023  润新知