《Microsoft SQL Server2005技术内幕:T-SQL程序设计》是Inside Microsoft SQL Server 2005系列四本著作中的一本。它详细介绍了T-SQL的内部构造,包含了非常全面的编程参考。它提供了使用Transact-SQL (T-SQL)的专家级指导,T-SQL是用于SQL Server的最常见的也是功能最强大的编程语言。该书由Itzik Ben-Gan权威执笔,重点关注语言特性以及它们如何被SQL Server引擎解释和处理。
通过《Microsoft SQL Server2005技术内幕:T-SQL程序设计》,你将深入了解T-SQL的高级用法,包括触发器、用户自定义函数、异常处理等。该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解复杂的逻辑并掌握T-SQL。
序 I
前言 III
致谢 VII
引言 XI
第1章 数据类型相关的问题,XML和CLR UDT
1.1 DATETIME数据类型
DATETIME的存储格式
时间处理
Datetime相关的查询问题
1.2 与字符相关的问题
模式匹配
区分大小写(Case-Sensitive)的筛选器
1.3 大型对象(Large Object,LOB)
MAX 说明符
BULK行集提供程序
1.4 隐式转换(Implicit Conversion)
标量表达式
筛选表达式
1.5 基于CLR的用户定义类型
UDT理论简介
开发UDT
1.6 XML数据类型
关系数据库中的XML支持
什么时候应该使用XML代替关系表现形式?
数据库中的XML序列化对象
使用开放架构(Open Schema)的XML
作为存储过程参数的XML数据类型
Xquery修改语句
1.7 结论
第2章 临时表和表变量
2.1 临时表
局部临时表
全局临时表
2.2 表变量
限制条件
tempdb
范围和可见性
事务上下文
统计信息
2.3 tempdb相关的注意事项
2.4 表表达式
2.5 比较临时对象
2.6 综合练习——关系分区(Relational Division)
2.7 结论
第3章 游标
3.1 使用游标
3.2 游标开销
3.3 单独处理每一行
3.4 按顺序访问
自定义聚合
连续聚合
最大并发会话
匹配问题
3.5 结论
第4章 动态SQL
4.1 EXEC
一个简单的EXEC示例
EXEC不提供接口
串联变量
EXEC AT
4.2 sp_executesql
sp_executesql接口
语句限制
4.3 环境设置
4.4 使用动态SQL
动态的维护操作
存储计算
动态筛选器
动态PIVOT/UNPIVOT
4.5 SQL注入
SQL注入:在客户端动态构建代码
SQL注入:在服务器端动态构建代码
防止SQL注入
4.6 结论
第5章 视图
5.1 什么是视图?
5.2 视图中的ORDER BY
5.3 刷新视图
5.4 模块化方法
5.5 更新视图
5.6 视图选项
ENCRYPTION
SCHEMABINDING
CHECK OPTION
VIEW_METADATA
5.7 索引视图(Indexed View)
5.8 结论
第6章 用户定义函数
6.1 关于UDF
6.2 标量UDF
T-SQL 标量UDF
性能问题
在约束中使用UDF
CLR 标量 UDF
SQL签名(SQL Signature)
6.3 表值UDF
内联表值UDF
拆分数组(Split Array)
多语句表值UDF
6.4 逐行调用UDF
6.5 结论
第7章 存储过程
7.1 存储过程的种类
用户定义存储过程
特殊存储过程
系统存储过程
其他类型的存储过程
7.2 存储过程接口
输入参数
输出参数
7.3 解析
7.4 编译、重新编译和重用执行计划
重用执行计划
重新编译
参数嗅探问题
7.5 Execute As
7.6 参数化排序
7.7 动态Pivot
7.8 CLR存储过程
7.9 结论
第8章 触发器
8.1 AFTER触发器
inserted 和deleted 表
取得受影响的行数
识别触发器的类型
对特殊语句不引发触发器
嵌套和递归
UPDATE 和 COLUMNS_UPDATED
审核示例
8.2 INSTEAD OF触发器
逐行触发器
应用于视图
自动处理序列
8.3 DDL触发器
数据库级触发器
服务器级触发器
8.4 CLR触发器
8.5 结论
第9章 事务
9.1 什么是事务?
9.2 锁
9.3 隔离级别
未提交读
已提交读
可重复读
可串行读
新的隔离级别
9.4 保存点
9.5 死锁
简单的死锁
因缺少索引导致的死锁
单个表的死锁
9.6 结论
第10章 错误处理
10.1 SQL Server 2005之前版本的错误处理
10.2 SQL Server 2005中的错误处理
TRY/CATCH
事务中的错误
死锁和更新冲突
10.3 结论
第11章 Service Broker
11.1 会话对话
会话
约定(Contract)
DEFAULT
队列(Queue)
服务(Services)
发起和结束对话
会话端点(Conversation Endpoint)
会话组(Conversation Group)
发送和接收
11.3 简单的对话
有害消息(Poison Message)
11.4 对话安全
非对称密钥认证
配置对话安全
11.5 路由和分发
相邻Broker协议(Adjacent Broker Protocol)
路由(Route)
11.6 场景
可靠的SOA
异步处理
11.7 哪里适合使用Service Broker
Service Broker是什么
Service Broker不是什么
Service Broker和MSMQ
Service Broker和BizTalk
Service Broker和Windows Communication Foundation
11.8 结论
附录A CLR程序指南
A.1 创建CLRUtilities数据库: SQL Server
A.2 部署:Visual Studio
A.3 部署和测试:Visual Studio 和 SQL Server
索引
中英文术语对照表
关于作者