(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)

第二章集合论和谓词逻辑

子集

补集

并集

交集

差集

第三章关系模型

关系运算符

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

Inside Microsoft SQL Server 2008: T-SQL Querying 读书笔记1的更多相关文章

  1. 安装SQL server 2008 R2和QL server 2008,与SQL server 2008升级SQL server 2008 R2

    安装SQL server 2008 R2和由SQL server 2008升级SQL server 2008 R2 前提条件: 由SQL server2008 升级SQL server2008 R2 ...

  2. SQL Server 2008中SQL之WaitFor

    SQL Server 2008中SQL应用系列--目录索引 在SQL Server 2005以上版本中,在一个增强的WaitFor命令,其作用可以和一个job相当.但使用更加简捷. 看MSDN: ht ...

  3. SQL Server 2008 转换为 SQL 2005 数据库 脚本生成

    Tips: 本文讨论如何把数据库从SQL Server 2008版本降低到2005,因为在本地开发是以SQL Server 2008 Express Edition版本进行的,而主机提供商现在提供的M ...

  4. SQL Sever 各版本下载 SQL Server 2012下载SQL Server 2008下载SQL Server 2005

    SQL Server 2012SQL Server 2012 开发版(DVD)(X64,X86)(中文简体)ed2k://|file|cn_sql_server_2012_developer_edit ...

  5. sql点滴38—SQL Server 2008和SQL Server 2008 R2导出数据的选项略有不同

    原文:sql点滴38—SQL Server 2008和SQL Server 2008 R2导出数据的选项略有不同 说明: 以前要将一个表中的数据导出为脚本,只有用存储过程.现在在SQL Server ...

  6. SQLSERVER 免费对比数据库结构和数据的工具支持:SQL Server 2012, SQL Server 2008 and SQL Server 2005

    New xSQL Schema Compare - version 5 Compare the schemas of two SQL Server databases, review differen ...

  7. 详解SQL Server 2008工具SQL Server Profiler

    一.SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 1.图形化监视SQL Server查询: 2.在后台收集查询信息: 3.分析性能: 4.诊 ...

  8. SQL Server 2008、SQL Server 2008R2 自动备份数据库

    让SQL Server 2008自动备份数据库,需要建立一个SQL Server作业,并启动SQL Server代理,使该作业定期运行. 具体来说,可以按以下步骤进行: 一.打开SQL Server ...

  9. 《SQL Server 2012 T-SQL基础》读书笔记 - 10.可编程对象

    Chapter 10 Programmable Objects 声明和赋值一个变量: DECLARE @i AS INT; SET @i = 10; 变量可以让你暂时存一个值进去,然后之后再用,作用域 ...

  10. 《SQL Server 2012 T-SQL基础》读书笔记 - 8.数据修改

    Chapter 8 Data Modification SQL Server 2008开始,支持一个语句中插入多行: INSERT INTO dbo.Orders (orderid, orderdat ...

随机推荐

  1. Debian安装Apache2+MySQL5+PHP5(zz)

    转载:http://hi.baidu.com/lostdays/item/1d5e7e4833b4d20fc116134b 终于在Debian用apt-get安装好LAMP了,之前在CentOS使用编 ...

  2. C# 之 静态字段初始化

          当一个字段声明中含有 static 修饰符时,由该声明引入的字段为静态字段(静态变量).当不存在 static 修饰符时,由该声明引入的字段为实例字段(实例变量).       静态字段不 ...

  3. js判断图片上传时的文件大小,和宽高尺寸

    今天在做图片上传的小功能,使用了一个kissy上传组件.很好奇它是如何在图片上传前,检测到图片的大小和尺寸的?我们来写个小实例实现一下吧 如何读取图片的size 首先,原生input file控件有个 ...

  4. 高效Count

    SQL Server快速查询某张表的当前行数   传统做法可能是select count(1) 但是往往会比较慢.推荐如下做法: SELECT ISNULL(MAX(rowcnt), 0) Curre ...

  5. jboss使用(eap 6.0以后版本)

    以6.3版本为例,下载地址 https://www.jboss.org/products/eap/download/,这个地址现在有问题了,下不了好像要redhat账号还要花钱?不知咋回事 下载完成后 ...

  6. x264命令参数与代码中变量的对应关系

    帧类型选项:  -I/--keyint i_keyint_max 最大IDR帧间距,默认为250  -i/--min-keyint i_keyint_min 最小IDR帧间距,默认为25  --sce ...

  7. 关于Linux系统和Windows系统中文件夹的命名规范

    Windows系统中. 1.在创建文件夹的时候不能以"."开头(但是文件以多个点开头并且还有其他合法字符的话就是合法的) 但是在windows系统中确实见过以一个点".& ...

  8. CygWin模拟Linux环境进行Ant批量打包

    运行环境:Windows7 + Cygwin + ant 第一种:有源码 这种方式比较 简单.利用ant打包.直接shell脚本修改 配置渠道号的文件.我们目前是用的umeng的.在AndroidMa ...

  9. 转:从零开始开发一款Android App (from 简书)

    转: http://www.jianshu.com/p/a58d15ef5c8b

  10. kettle学习-day1-介绍、下载、安装

    QQ群:306059317\ 技术支持:荷露叮咚网络学苑http://www.heludd.com/kettle 下载最新版,获取视频教程 kettle安装: 1).下载需要安装的kettle版本,官 ...