内容简介
《SQL Server 2012 T-SQL基础教程》全面系统地介绍了SQL Server 2012 T-SQL技术,包括T-SQL查询和编程的背景、单表查询、联接、子查询、表表达式、集合运算符、查询、数据修改、事务和并发处理、可编程对象等内容。
《SQL Server 2012 T-SQL基础教程》提供了一个附录“入门指南”,来帮助你设置环境、下载本书的源代码、安装TSQL2012示例数据库、开始编写SQL Server代码,并了解如何使用SQL Server联机丛书获得帮助。本书还提供了大量的练习,帮助读者实践所学、快速上手。
《SQL Server 2012 T-SQL基础教程》主要针对具有很少或是没有经验的T-SQL学习者,适用于T-SQL开发人员、DBA、BI从业者、报表编写者、分析师以及刚开始使用SQL Server并且需要使用Transact-SQL编写查询、开发代码的用户。
作者简介
Itzik Ben-Gan,Solid Quality Learning的导师和创始人。从1999年开始,他一直是Microsoft SQL Server MVP(最有价值专家),并在全世界已经开展过无数次T-SQL查询、T-SQL优化和编程方面的培训。Itzik是Microsoft SQL Server方面几本著作的作者。他在SQL Server Magazine和MSDN上发表了许多文章和白皮书。Itzik被邀请在许多会议上做报告,包括TechEd、DevWeek、世界各地的各种SQL用户组、PASS、SQL Server Magazine Connections和Solid Quality Learning的会议。 从1992年开始,Itzik就一直致力于涉及各种数据库和计算机系统相关技术的多个课题。除了帮助顾客处理紧迫的要求、修复问题、优化数据库、教学和担任顾问以外,他还帮助开发人员和数据库管理员转变关系/基于集合的理念,改善他们编写代码的性能和可维护性。Itzik擅长T-SQL查询、查询优化、编程和内部原理,此外他还精通其他的数据库领域。1999年,Itzik创立以色列SQLServer和OLAP用户组,一直管理至今。
内页插图
精彩书评
本书全面系统地介绍了SQL Server 2012 T-SQL技术,包括T-SQL查询和编程的背景、单表查询、联接、子查询、表表达式、集合运算符、数据修改、事务和并发处理、可编程对象等内容。
本书提供了一个附录“入门指南”,来帮助你设置环境、下载本书的源代码、安装TSQL2012示例数据库、开始编写SQL Server代码,并了解如何使用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 SQL Server的ABC特色
1.2.2 SQL Server实例
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 TOP和OFFSET-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 练习
2.10.2 练习
2.10.3 练习
2.10.4 练习
2.10.5 练习
2.10.6 练习
2.10.7 练习
2.10.8 练习
2.11 解决方案
2.11.1 解决方案
2.11.2 解决方案
2.11.3 解决方案
2.11.4 解决方案
2.11.5 解决方案
2.11.6 解决方案
2.11.7 解决方案
2.11.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-
3.6.2 练习1-2(可选的高级练习)
3.6.3 练习
3.6.4 练习
3.6.5 练习
3.6.6 练习
3.6.7 练习6(可选的高级练习)
3.6.8 练习7(可选的高级练习)
3.7 解决方案
3.7.1 解决方案1-
3.7.2 解决方案1-
3.7.3 解决方案
3.7.4 解决方案
3.7.5 解决方案
3.7.6 解决方案
3.7.7 解决方案
3.7.8 解决方案
第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 练习
4.5.2 练习2(可选的高级练习)
4.5.3 练习
4.5.4 练习
4.5.5 练习
4.5.6 练习
4.5.7 练习7(可选的高级练习)
4.5.8 练习8(可选的高级练习)
4.6 解决方案
4.6.1 解决方案
4.6.2 解决方案
4.6.3 解决方案
4.6.4 解决方案
4.6.5 解决方案
4.6.6 解决方案
4.6.7 解决方案
4.6.8 解决方案
第5章 表表达式
5.1 派生表
5.1.1 分配列别名
5.1.2 使用参数
5.1.3 嵌套
5.1.4 多个引用
5.2 公用表表达式
5.2.1 在CTE中分配列别名
5.2.2 在CTE中使用参数
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-
5.7.2 练习1-
5.7.3 练习2-
5.7.4 练习2-
5.7.5 练习3(可选的高级练习)
5.7.6 练习4-
5.7.7 练习4-2(可选的高级练习)
5.7.8 练习5-
5.7.9 练习5-
5.8 解决方案
5.8.1 解决方案1-
5.8.2 解决方案1-
5.8.3 解决方案2-
5.8.4 解决方案2-
5.8.5 解决方案
5.8.6 解决方案4-
5.8.7 解决方案4-
5.8.8 解决方案5-
5.8.9 解决方案5-
第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 练习
6.7.2 练习
6.7.3 练习
6.7.4 练习
6.7.5 练习5(可选的高级练习)
6.8 解决方案
6.8.1 解决方案
6.8.2 解决方案
6.8.3 解决方案
6.8.4 解决方案
6.8.5 解决方案
第7章 查询
7.1 开窗函数
7.1.1 排名开窗函数
7.1.2 偏移开窗函数
7.1.3 聚合开窗函数
7.2 透视数据
7.2.1 使用标准SQL透视
7.2.2 使用本地T-SQL PIVOT运算符透视
7.3 逆透视数据
7.3.1 使用标准SQL逆透视
7.3.2 使用本地T-SQL UNPIVOT运算符逆透视
7.4 分组集
7.4.1 GROUPING SETS从属子句
7.4.2 CUBE从属子句
7.4.3 ROLLUP从属子句
7.4.4 GROUPING和GROUPING_ID函数
7.5 小结
7.6 练习
7.6.1 练习
7.6.2 练习
7.6.3 练习
7.6.4 练习
7.6.5 练习
7.7 解决方案
7.7.1 解决方案
7.7.2 解决方案
7.7.3 解决方案
7.7.4 解决方案
7.7.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 使用TOP和OFFSET-FETCH修改
8.7 OUTPUT子句
8.7.1 INSERT与OUTPUT
8.7.2 DELETE与OUTPUT
8.7.3 UPDATE与OUTPUT
8.7.4 MERGE与OUTPUT
8.7.5 可组合的DML
8.8 小结
8.9 练习
8.9.1 练习
8.9.2 练习1-
8.9.3 练习1-
8.9.4 练习1-
8.9.5 练习
8.9.6 练习
8.9.7 练习
8.9.8 练习
8.9.9 练习
8.10 解决方案
8.10.1 解决方案1-
8.10.2 解决方案1-
8.10.3 解决方案1-
8.10.4 解决方案
8.10.5 解决方案
8.10.6 解决方案
8.10.7 解决方案
第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-
9.6.2 练习1-
9.6.3 练习1-
9.6.4 练习1-
9.6.5 练习1-
9.6.6 练习1-
9.6.7 练习2-
9.6.8 练习2-
9.6.9 练习2-
9.6.10 练习2-
9.6.11 练习2-
9.6.12 练习2-
9.6.13 练习3-
9.6.14 练习3-
9.6.15 练习3-
9.6.16 练习3-
9.6.17 练习3-
9.6.18 练习3-
9.6.19 练习3-
第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 使用IF和WHILE的示例
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 使用动态SQL的PIVOT
10.7 例程
10.7.1 用户定义函数
10.7.2 存储过程
10.7.3 触发器
10.8 错误处理
10.9 小结
附录A 入门指南
A.1 SQL Database入门
A.2 安装(企业)内部部署的SQL Server
A.2.1 获取SQL Server
A.2.2 创建一个用户账户
A.2.3 安装的必要条件
A.2.4 安装数据库引擎、文档和工具
A.3 下载源代码和安装示例数据库
A.3.1 在(企业)内部部署的SQL Server实例中创建并填充示例数据库
A.3.2 在SQL Database中创建并填充示例数据库
A.4 使用SQL Server Management Studio
A.5 使用SQL Server联机丛书
精彩书摘
T—SQL查询和编程的背景即将开始一段旅程,去往一个与众不同的领地一一它有着自己的一套规则。如果这本书是你学习nansact—SQL(T-SQL)的第一步,你现在应该就像爱丽丝一样——这之前她刚刚开始了在仙境的冒险之旅。对我来说,我的长途旅行仍未结束,相反,这是一条持续充满了新发现的道路。非常羡慕你现在的状态,但幸运的是,我仍能比你提前得到一些最为激动人心的发现!
我从事与了-SQL相关的工作已经很多年了,包括教学、演讲、写作和咨询。对我来说,T-SQL不仅仅是一种语言一一这更是一种思维方式。我在各地开展了了-SQL培训并撰写了许多相关高级主题的文章,而把编写T-SQL基础知识的图书延迟至今,这不是因为T-SQL基础知识简单或容易,事实上恰恰相反:语言的貌似简单往往会是一种误导,我可以用肤浅的方式在几分钟内解释语言的语法元素并让你编写出查询,但是这种做法从长期来看只能拖你的后腿,让你更难理解语言的本质。
作为你在这个领域的启蒙者,责任重大,在写作基础知识之前,我要确信自己是花了足够的时间和精力去探索、理解语言。T-SQL很深奥,学习基础知识的正确方法不仅是理解语法元素和编写一个返回正确输出的查询,你甚至要忘记你所知道的其他编程语言,并开始思考T-SQL术语。
1.1 理论背景
SQL代表结构化查询语言(Structured Query Language),是一种在关系数据库系统(RelatnaI Database Management Systems,RDBMS)中查询和管理数据的标准语言。RDBMS是基于关系模型(一种表示数据的语义模型)的数据库管理系统,它基于两个数学分支:集合理论和谓词逻辑。许多其他编程语言和各种计算都已演化得非常接近一个直观结果,相比而言,SQL是基于关系模型的,它具有坚实的基础——应用数学,T-SQL于是便坐在了宽广而坚实的“肩膀”之上,它是微软公司提供的基于Microsoft SQL Server数据管理软件(微软的关系数据管理系统)的SQL的方言或扩展。
本节提供了一个有关SQL、集合理论和谓词逻辑、关系模型和数据生命周期的简短理论背景,由于这本书既不是一本数学图书,也不是一本设计或数据建模的图书,此处提供的理论信息比较通俗并且不是很完整,目的是向你提供一个T—SQL背景并传达关键要点,以便在后面能够完整和正确理解T—SQL。语言独立性
关系模型与语言无关。也就是说,可以使用SQL之外的其他语言(例如在类模型中使 用C#)实现关系模型,今天我们经常会看到一些RDBMS支持SQL方言之外的语言,例 如集成在SQI,Server中的CLR。
此外,从一开始你应该知道SQL与关系模型存在几方面的偏差。有人甚至说,应该使 用一种更严格遵循关系模型的新语言取代SQL,但是到目前为止,实际上SQL仍被所有 }领先的RDBMS作为工业语言。 参阅:有关SQL与关系模型偏差的详细信息,以及如何在关系方式中使用SQL,可以参考
《SQL and Relational Theory))(第2版,作者C.J.Date,O’Reilly Media 2011年出版)
的“H0w t0 Write Accurate SOL Code”部分。
……
前言/序言
很高兴Itzik能够有时间和精力宋编写一本有关T—SQL基础知识的图书。多年来,Itzik凭藉他丰富的Microsoft SQL Server教学、辅导和咨询经验,编写了许多高级编程方面的图书,但这些高级主题的图书,既不适合新手和经验不足的用户学习,也不合适许多使用SQt.Server但又不怎么擅长T—SQL编程的专业人士参考。
提到T—SQL,Itzik是世界上最博学的人士之一。事实上,在大多数计划实施的新语言扩展中,我们(SQL Server开发团队成员)都要向Itzik征求专业的意见,他的反馈和指导已经成为我们SQL Server开发过程中一个重要的组成部分。
SQL Server 2012 T-SQL基础教程 [Microsoft SQL Server 2012 T-SQL Fundamentals] 下载 mobi epub pdf txt 电子书 格式
SQL Server 2012 T-SQL基础教程 [Microsoft SQL Server 2012 T-SQL Fundamentals] 下载 mobi pdf epub txt 电子书 格式 2024
SQL Server 2012 T-SQL基础教程 [Microsoft SQL Server 2012 T-SQL Fundamentals] 下载 mobi epub pdf 电子书
SQL Server 2012 T-SQL基础教程 [Microsoft SQL Server 2012 T-SQL Fundamentals] mobi epub pdf txt 电子书 格式下载 2024