zoukankan      html  css  js  c++  java
  • [置顶] 图书推荐:SQL Server 2012 T-SQL基础 Itzik Ben-Gan

    经过近三个月的不懈努力,终于翻译完毕了。图书虽然是基础知识,但是,即使你已经使用T-SQL几年,很多地方还是能够弥补你的知识空白。大师级的人物写基础知识,或许你想知道这基础中还有哪些深奥,敬请期待吧。

    这次是邮电出版社负责组织翻译的,非常感谢杜洁女士的努力,才使得这样精彩的东西能够与国人有缘。

    前言

    很高兴Itzik能够有时间和精力来编写一本有关T-SQL基础知识的图书。多年来,Itzik一直以他丰富的Microsoft SQL Server教学、辅导和咨询经验在编写高级编程方面的图书,这导致了与新手和缺乏经验的用户以及许多不以T-SQL编程为主要工作事项的专家之间产生了较大的距离。

    提到T-SQLItzik是世界上最具有见解的人之一。事实上,许多我们(SQL Server开发团队成员)计划实施的新语言扩展都要征求Itzik的专业意见,他的反馈和磋商已经成为我们SQL Server开发过程的一个重要组成部分。

    作为一个专业领域的专家,书写一本入门级的图书从来都不是一件容易的任务。不过,Itzik具有多年教授初级和高级编程课程的优势,这些经验让他在从众多高级课程里面筛选基础T-SQL信息时是一笔重要的财富。但在这本书中,Itzik没有简单地回避那些被认为是高级的东西,他不畏惧挑战像集合理论、谓词逻辑和关系模型等这些先前被一直认为是复杂的项目,而是用简洁的术语来介绍它们,并为读者提供了足够的信息来了解他们对于SQL语言的重要性。这样做的效果是,使读者不仅能够了解T-SQL的工作原理,而且知道为什么这样做。

    对于编程手册和图书,没有一种方法比使用一个好的示例来传递要讨论议题的效果更好。这本书包含很多示例,可以从Itzik的网站(http://tsql.solidq.com)下载。T-SQL是一种基于正式SQL语言ISOANSI标准的方言,但它拥有众多的扩展,可以提高T-SQL代码的表现能力和简洁程度。Itzik的许多示例对于一个演练同时展示了T-SQL方言解决方案和等效的ANSI SQL解决方案,这样做的好处是能够让熟悉T-SQL的读者了解ANSI版本的SQL,以及能够让程序员书写可以轻松地部署在多个不同数据库平台上的SQL代码。

    ItzikSQL Server团队深入交流了在第1章(T-SQL查询和编程的背景)中他对SQL Server特色的解释:应用、盒子和云(ApplianceBoxCloudABC),迄今为止,我看到术语ABC只是在MicrosoftSQL Server团队内部使用,但我确信该术语的传播只是时间问题。Itzik在书中开发和测试了针对SQLServer特色BoxCloud的示例,并且附录中列出了从什么地方可以使用到SQL Server的云版本,即Windows Azure SQL Database。因此,你可以将这本书作为自己云体验的起点,Azure网站展示了如何订阅免费的Azure服务,这样你就能够执行书中的示例。

    SQL Server的“盒子”特色,正式的称谓是(企业)内部部署的SQL Server,这是传统的部署方式,通常安装在客户场所内。客户负责所有的事情——硬件、安装软件、处理更新、高可用性和灾难恢复(HADR)、安全,以及其他事项。

    SQL Server的云扩展是极为重要的一点,你不应错过,我认为这是很重要的。我在做什么,不应该在前言中为另一本书做广告(抱歉,Itzik,我不得不这样做!)。在阅读了Nicholas G. Carr的《大转折》(The Big SwitchW.W. Norton and Company2009)后,我在云计算方面的的兴趣和信心暴涨,因此我要分享这一感受。这是一本非常好的图书,它介绍了与早期20世纪电气化相比云计算所带来的进展。通过观看James HamiltonMIX10会议上的演讲,我确信未来的云计算会进一步巩固(录音请访问http://channel9.msdn.com/events/MIX/ MIX10/EX01)。

    Itzik提示要注意与云相关的变更:与SQL Server版本间多年的使用间隙相比,随着云的到来这种模式发生了显著变化,相反的是每年在全球Microsoft Data Centers部署的几个较小的云版本(称之为服务更新),因此,Itzik明智地选择了在他的http://tsql.solidq.com网站论述SQL ServerWindows Azure SQL DatabaseT-SQL差异,而不是在这本书中论述,这样他就能够很方便地保持最新信息。

    希望你喜欢这本书──甚至更多──很高兴它带给你对T-SQL的新见解。

    Lubor Kollar

    SQL Server开发团队

    微软公司

     

    目录

     

     

    1 T-SQL查询和编程的背景

    1.1理论背景

    1.1.1 SQL

    1.1.2 集合理论

    1.1.3 谓词逻辑

    1.1.4 关系模型

    1.1.5 数据生命周期

    1.2 SQL Server体系结构

    1.2.1 SQLServerABC特色

    1.2.2 SQLServer实例

    1.2.3 数据库

    1.2.4 架构和对象

    1.3创建表和定义数据完整性

    1.3.1创建表

    1.3.2定义数据完整性

    1.4小结

    2单表查询

    2.1 SELECT语句的元素

    2.1.1 FROM子句

    2.1.2 WHERE子句

    2.1.3 GROUP BY子句

    2.1.4 HAVING子句

    2.1.5 SELECT子句

    2.1.6 ORDER BY子句

    2.1.7 TOPOFFSET-FETCH筛选

    2.1.8开窗函数速览

    2.2谓词和运算符

    2.3 CASE表达式

    2.4 NULL标记

    2.5同时操作

    2.6使用字符数据

    2.6.1数据类型

    2.6.2排序规则

    2.6.3运算符和函数

    2.7使用日期和时间数据

    2.7.1日期和时间数据类型

    2.7.2日期和时间常量

    2.7.3独立使用日期和时间

    2.7.4筛选日期范围

    2.7.5日期和时间函数

    2.8查询元数据

    2.8.1目录视图

    2.8.2信息架构视图

    2.8.3系统存储过程和函数

    2.9结论

    2.10练习

    2.10.1练习1

    2.10.2练习2

    2.10.3练习3

    2.10.4练习4

    2.10.5练习5

    2.10.6练习6

    2.10.7练习7

    2.10.8练习8

    2.11解决方案

    2.11.1解决方案1

    2.11.2解决方案2

    2.11.3解决方案3

    2.11.4解决方案4

    2.11.5解决方案5

    2.11.6解决方案6

    2.11.7解决方案7

    2.11.8解决方案8

    3联接

    3.1交叉联接

    3.1.1 ANSI SQL-92语法

    3.1.2 ANSI SQL-89语法

    3.1.3自交叉联接

    3.1.4生成数字表

    3.2内部联接

    3.2.1 ANSI SQL-92语法

    3.2.2 ANSI SQL-89语法

    3.2.3内部联接安全性

    3.3更多联接示例

    3.3.1复合联接

    3.3.2不等联接

    3.3.3多联接查询

    3.4外部联接

    3.4.1外部联接的基础知识

    3.4.2超越外部联接基础知识

    3.5结论

    3.6练习

    3.6.1.1练习1-1

    3.6.1.2练习1-2(可选的高级练习)

    3.6.2练习2

    3.6.3练习3

    3.6.4练习4

    3.6.5练习5

    3.6.6练习6(可选的高级练习)

    3.6.7练习7(可选的高级练习)

    3.7解决方案

    3.7.1.1解决方案1-1

    3.7.1.2解决方案1-2

    3.7.2解决方案2

    3.7.3解决方案3

    3.7.4解决方案4

    3.7.5解决方案5

    3.7.6解决方案6

    3.7.7解决方案7

    4子查询

    4.1自包含子查询

    4.1.1自包含标量子查询示例

    4.1.2自包含多值子查询示例

    4.2相关子查询

    4.2.1 EXISTS谓词

    4.3超越子查询基础知识

    4.3.1返回前一个或下一个值

    4.3.2使用运行聚合

    4.3.3不当子查询处理

    4.4结论

    4.5练习

    4.5.1练习1

    4.5.2练习2(可选的高级练习)

    4.5.3练习3

    4.5.4练习4

    4.5.5练习5

    4.5.6练习6

    4.5.7练习7(可选的高级练习)

    4.5.8练习8(可选的高级练习)

    4.6解决方案

    4.6.1解决方案1

    4.6.2解决方案2

    4.6.3解决方案3

    4.6.4解决方案4

    4.6.5解决方案5

    4.6.6解决方案6

    4.6.7解决方案7

    4.6.8解决方案8

    5表表达式

    5.1派生表

    5.1.1分配列别名

    5.1.2使用参数

    5.1.3嵌套

    5.1.4多个引用

    5.2公用表表达式

    5.2.1CTE中分配列别名

    5.2.2CTE中使用参数

    5.2.3定义多个CTE

    5.2.4 CTE中的多个引用

    5.2.5递归CTE

    5.3视图

    5.3.1视图和ORDER BY子句

    5.3.2视图选项

    5.4内嵌表值函数

    5.5 APPLY运算符

    5.6结论

    5.7练习

    5.7.1练习1-1

    5.7.2练习1-2

    5.7.3练习2-1

    5.7.4练习2-2

    5.7.5练习3(可选的高级练习)

    5.7.6练习4-1

    5.7.7练习4-2(可选的高级练习)

    5.7.8练习5-1

    5.7.9练习5-2

    5.8解决方案

    5.8.1解决方案1-1

    5.8.2解决方案1-2

    5.8.3解决方案2 -1

    5.8.4解决方案2-2

    5.8.5解决方案3

    5.8.6解决方案4-1

    5.8.7解决方案4-2

    5.8.8解决方案5-1

    5.8.9解决方案5-2

    6集合运算符

    6.1 UNION运算符

    6.1.1 UNION ALL多元集合运算符

    6.1.2 UNION非重复项集合运算符

    6.2 INTERSECT运算符

    6.2.1 INTERSECT非重复项集合运算符

    6.2.2 INTERSECT ALL多元集合运算符

    6.3 EXCEPT运算符

    6.3.1 EXCEPT非重复项集合运算符

    6.3.2 EXCEPT ALL多元集合运算符

    6.4优先级

    6.5规避不支持的逻辑阶段

    6.6结论

    6.7练习

    6.7.1练习1

    6.7.2练习2

    6.7.3练习3

    6.7.4练习4

    6.7.5练习5(可选的高级练习)

    6.8解决方案

    6.8.1解决方案1

    6.8.2解决方案2

    6.8.3解决方案3

    6.8.4解决方案4

    6.8.5解决方案5

    7超越查询基础知识

    7.1开窗函数

    7.1.2排名开窗函数

    7.1.3偏移开窗函数

    7.1.4聚合开窗函数

    7.2透视数据

    7.2.1使用标准SQL透视

    7.2.2使用本地T-SQLPIVOT运算符透视

    7.3逆透视数据

    7.3.1使用标准SQL逆透视

    7.3.2使用本地T-SQLUNPIVOT运算符逆透视

    7.4分组集

    7.4.1 GROUPING SETS从属子句

    7.4.2 CUBE从属子句

    7.4.3 ROLLUP从属子句

    7.4.4 GROUPINGGROUPING_ID函数

    7.5结论

    7.6练习

    7.6.1练习1

    7.6.2练习2

    7.6.3练习3

    7.6.4练习4

    7.6.5练习5

    7.7解决方案

    7.7.1解决方案1

    7.7.2解决方案2

    7.7.3解决方案3

    7.7.4解决方案4

    7.7.5解决方案5

    8数据修改

    8.1插入数据

    8.1.1 INSERT VALUES语句

    8.1.2 INSERT SELECT语句

    8.1.3 INSERT EXEC语句

    8.1.4 SELECT INTO语句

    8.1.5 BULK INSERT语句

    8.1.6标识列属性和序列对象

    8.2删除数据

    8.2.1 DELETE语句

    8.2.2 TRUNCATE语句

    8.2.3基于联接的DELETE

    8.3更新数据

    8.3.1 UPDATE语句

    8.3.2基于联接的UPDATE

    8.3.3赋值UPDATE

    8.4合并数据

    8.5通过表表达式修改数据

    8.6使用TOPOFFSET-FETCH修改

    8.7 OUTPUT子句

    8.7.1 INSERTOUTPUT

    8.7.2 DELETEOUTPUT

    8.7.3 UPDATEOUTPUT

    8.7.4 MERGEOUTPUT

    8.7.5可组合的DML

    8.8结论

    8.9练习

    8.9.1练习1

    8.9.2练习1-1

    8.9.3练习1-2

    8.9.4练习1-3

    8.9.5练习2

    8.9.6练习3

    8.9.7练习4

    8.9.8练习5

    8.9.9练习6

    8.10解决方案

    8.10.1解决方案1-1

    8.10.2解决方案1-2

    8.10.3解决方案1-3

    8.10.4解决方案2

    8.10.5解决方案3

    8.10.6解决方案4

    8.10.7解决方案5

    9事务和并发处理

    9.1事务

    9.2锁和阻塞

    9.2.1

    9.2.2排除阻塞

    9.3隔离级别

    9.3.1 READ UNCOMMITTED隔离级别

    9.3.2 READ COMMITTED隔离级别

    9.3.3 REPEATABLE READ隔离级别

    9.3.4 SERIALIZABLE隔离级别

    9.3.5基于行版本的隔离级别

    9.3.6隔离级别总结

    9.4死锁

    9.5结论

    9.6练习

    9.6.1练习1-1

    9.6.2练习1-2

    9.6.3练习1-3

    9.6.4练习1-4

    9.6.5练习1-5

    9.6.6. 1-6

    9.6.7练习2-1

    9.6.8练习2-2

    9.6.9练习2-3

    9.6.10练习2-4

    9.6.11练习2-5

    9.6.12练习2-6

    9.6.13练习3-1

    9.6.14练习3-2

    9.6.15练习3-3

    9.6.16练习3-4

    9.6.17练习3-5

    9.6.18练习3-6

    9.6.19练习3-7

    10可编程对象

    10.1变量

    10.2

    10.2.1以批为单元的语法分析

    10.2.2批和变量

    10.2.3不能被组合在同一个批中的语句

    10.2.4以批为单元的解析

    10.2.5 GO n选项

    10.3流元素

    10.3.1 IF . . . ELSE流元素

    10.3.2 WHILE流元素

    10.3.3使用IFWHILE的示例

    10.4游标

    10.5临时表

    10.5.1本地临时表

    10.5.2全局临时表

    10.5.3表变量

    10.5.4表类型

    10.6动态SQL

    10.6.1 EXEC命令

    10.6.2 sp_executesql存储过程

    10.6.3使用动态SQLPIVOT

    10.7例程

    10.7.1用户定义函数

    10.7.2存储过程

    10.7.3触发器

    10.8错误处理

    10.9结论

    附录:入门指南

    附录1 SQL Database入门

    附录2安装(企业)内部部署的SQLServer

    1.获取SQLServer

    2.创建一个用户帐户

    3.安装的必要条件

    4.安装数据库引擎、文档和工具

    附录3下载源代码和安装示例数据库

    附录4使用SQL ServerManagement Studio

    附录5使用SQL Server联机丛书

     

     

  • 相关阅读:
    SpringBoot整合系列-整合H2
    SpringBoot整合系列-整合Swagger2
    BZOJ3626 [LNOI2014]LCA
    BZOJ4475 [Jsoi2015]子集选取
    BZOJ4466 [Jsoi2013]超立方体
    BZOJ3997 [TJOI2015]组合数学
    BZOJ3996 [TJOI2015]线性代数
    BZOJ2227 [Zjoi2011]看电影(movie)
    BZOJ2337 [HNOI2011]XOR和路径
    BZOJ2330 [SCOI2011]糖果
  • 原文地址:https://www.cnblogs.com/pangblog/p/3285510.html
Copyright © 2011-2022 走看看