标题：SQLServer2008编程入门经典
图书信息
  作者：韦拉(Robert Vieria) (作者), 杨大川 (合著者), 孙皓 (译者), 马煜 (译者) 
出版社: 清华大学出版社; 第3版 (2010年1月1日) 
外文书名: Beginning Microsoft SQL Server 2008 Programming
平装: 559页 
正文语种: 简体中文 
开本: 16 
ISBN: 9787302214328 
条形码: 9787302214328 
产品尺寸及重量: 26 x 18 x 3.6 cm ; 998 g
内容简介
《SQL Server 2008编程入门经典(第3版)》由浅入深逐步介绍了SQL Server数据库的高级主题，重点讨论了SQL Server 2008的特殊功能以及与其他编程环境的不同之处。作者Robert Vieria是Microsoft SQL，Server方面的权威，他采用通俗易懂的方法揭示了SQL Server-2008核心组件的重要更改。
《SQL Server 2008编程入门经典(第3版)》首先概述了数据库设计的概念，介绍了如何用SQL Setver 2008实现这些基本概念。然后，讲述了RDBMS（关系数据库管理系统）的功能和它在开发系统架构方面的优势。SQL Server 2008的新增内容和更改包括：DATE和TIME数据类型、hierarchyID数据类型、MERGE命令和多行插入，以及递归查询等。《SQL Server 2008编程入门经典(第3版)》旨在帮助您快速地掌握Microsoft SQL Selwer2008的编程技术。 
编辑推荐
《SQL Server 2008编程入门经典(第3版)》主要内容
RDBMS如何存储、管理和检索数据
创建和修改表的方法
数据库范式的多种形式
编写脚本和使用存储过程的技巧
索引的优缺点
锁和死锁对系统性能的各种影响
理解触发器及其使用方式
《SQL Server 2008编程入门经典(第3版)》读者对象
《SQL Server 2008编程入门经典(第3版)》适合于希望全面了解数据库设计概念和学习SQL的开发人员。读者具有数据库方面的基础知识有助于更好地理解《SQL Server 2008编程入门经典(第3版)》的内容。 
作者简介
作者：(美国)韦拉(Rovert Vieria) 译者：孙皓 马煜 合著者：杨大川
韦拉（Robert Vieria），是畅销书作者。他从1 980年开始深入学习计算技术，从构建和修复计算机软件包，到通过Z80、Basic以及6502汇编语言进行编程。1 983年，Robert开始攻读计算机信息系统的学位，随后转而研究“PC故障”并开始使用数据库语言（从dBase到SQL Server）进行编程，于1990年获得商业管理学位。此外，他还获得了CMA、MCSD、MCT以及MCDBA等认证。Robert目前是俄勒冈州波兰特市的Huron Consuiting Group的Stockarnp事务所的DBA团队领导人，偶尔也会在数据库开发、商业智能和其他主题方面发表演讲。
其他责任者简介：
杨大川，毕业于美国纽约州立大学布法罗分校计算机系，曾担任美国硅谷Annuncio Software等公司的首席工程师，归国后，他于2003年创办了北京迈思奇科技有限公司并担任技术总监，为国内外多家大中型企业提供商业智能咨询和项目实施服务，并逐渐从高新技术外包开发走向了自主知识产权产品的研发道路。他曾被誉为微软全球最有价值专家（MVP）；2008年荣获“中关村年度优秀创业留学人员”称号：现担任中国科学院软件学院的兼职教授。 
目录
第1章 RDBMS基础：SQLServer数据库的构成
1.1 数据库对象概述
1.1.1 数据库对象
1.1.2 事务日志
1.1.3 最基本的数据库对象：表
1.1.4 文件组
1.1.5 数据库关系图
1.1.6 视图
1.1.7 存储过程
1.1.8 用户自定义函数
1.1.9 用户和角色
1.1.10 规则
1.1.11 默认值
1.1.12 用户自定义数据类型
1.1.13 全文目录
1.2 SQL Server数据类型
1.3 SQL Server对象标识符
1.3.1 需要命名的对象
1.3.2 命名规则
1.4 本章小结
第2章 SQL Server管理工具
2.1 联机丛书
2.2 SQLServer配置管理器
2.2.1 服务管理
2.2.2 网络配置
2.2.3 协议
2.2.4 客户端
2.3 SQLServer Management Studio
2.3.1 启动Management Studio
2.3.2 “查询”窗口
2.4 SQL Server集成服务(SSIS)
2.5 BulkCopy Program(bcp)
2.6 SQL ServerProfiler
2.7 sqlcmd
2.8 Power Shell
2.9 本章小结
第3章 T-SQL基本语句
3.1 基本SELECT语句
3.1.1 SELECT语句与FROM子句
3.1.2 WHERE子句
3.1.3 ORDERBY子句
3.1.4 使用GROUPBY子句聚合数据
3.1.5 使用HAVING子句给分组设置条件
3.1.6 使用FORXML子句输出XML
3.1.7 通过OPTION子句利用提示
3.1.8 DISTINCT和ALL谓词
3.2 使用INSERT语句添加数据
3.2.1 多行插入
3.2.2 INSERTINTOSELECT语句
3.3 用UPDATE语句更改数据
3.4 DELETE语句
3.5 本章小结
3.6 练习
第4章 连接
4.1 连接
4.2 内部连接
4.3 外部连接
4.3.1 简单的外部连接
4.3.2 处理更复杂的外部连接
4.4 完全连接
4.5 交叉连接
4.6 JOIN语句的早期语法结构
4.6.1 内部连接的早期语法结构
4.6.2 外部连接的早期语法结构
4.6.3 交叉连接的早期语法结构
4.7 联合
4.8 本章小结
4.9 练习
第5章 创建和修改数据表
5.1 SQLserver中的对象名
5.1.1 模式名
5.1.2 数据库名
5.1.3 通过服务器命名
5.1.4 回顾默认值
5.2 CReATE语句
5.2.1 CREATEDATAASE
5.2.2 CREATETABLE
5.3 ALTER语句
5.3.1 AITERDATABASE
5.3.2 ALTERTABLE
5.4 DROP语句
5.5 使用GUI工具
5.5.1 使用ManagementStudio创建数据库
5.5.2 回到代码：使用MariagementStudio创建脚本的基础知识
5.6 本章小结
5.7 练习
第6章 约束
6.1 约束的类型
6.1.1 域约束
6.1.2 实体约束
6.1.3 参照完整性约束
6.2 约束命名
6.3 键约束
6.3.1 主键约束
6.3.2 外键约束
6.3.3 唯一约束
6.4 CHECK约束
6.5 DEFAuLT约束
6.5.1 在cREATETABLE语句中定义DEFAULT约束
6.5.2 在已存在的表中添加DEFAUIT约束
6.6 禁用约束
6.6.1 在创建约束时忽略无效的数据
6.6.2 临时禁用已存在的约束
6.7 规则和默认值
6.7.1 规则
6.7.2 默认值
6.7.3 确定哪个表和数据类型使用给定的规则或默认值
6.8 用于实现数据完整性的触发器
6.9 如何选择
6.1 0本章小结
第7章 更复杂的查询
7.1 子查询的概念
7.2 关联子查询
7.2.1 关联子查询的工作原理
7.2.2 在WHERE子句中的关联子查询
7.2.3 处理NULL数据——ISNULL函数
7.3 派生表
7.4 EXISTS运算符
7.5 混合数据类型：CAST和CONVERT
7.6 MERGE命令
7.6.1 BYl.ARGET和BYSOURCE
7.6.2 OUTPUT子句
7.7 性能方面的考虑
7.8 本章小结
7.9 练习
第8章 规范化和其他基本设计问题
8.1 表
8.2 保持数据“规范
8.2.1 准备工作
8.2.2 第一范式
8.2.3 第二范式
8.2.4 第三范式
8.2.5 其他范式
8.3 关系
8.3.1 一对一关系
8.3.2 一对一或一对多关系
8.3.3 多对多关系
8.4 数据库关系图
8.4.1 表
8.4.2 添加和删除表
8.4.3 关系
8.5 反规范化
8.6 超出规范化的一些规则
8.6.1 保持简单
8.6.2 选择数据类型
8.6.3 尽量进行存储
8.7 创建一个快速示例
8.7.1 创建数据库
8.7.2 添加数据库关系图和初始表
8.7.3 添加关系
8.7.4 添加一些约束
8.8 本章小结
8.9 练习
第9章 SQLServer存储和索引结构
9.1 SQLServer存储机制
9.1.1 数据库
9.1.2 区段
9.1.3 页
9.1.4 行
9.1.5 稀疏列
9.2 理解索引
9.2.1 平衡树(B.树)
9.2.2 SQLServer中访问数据的方式
9.3 创建、修改和删除索引
9.3.1 CREATEINDEX语句
9.3.2 创建XML索引
9.3.3 随约束创建的隐含索引
9.3.4 在稀疏列和地理空间列上创建索引
9.4 明智地选择——在何时何地使用何种索引
9.4.1 选择性
9.4.2 注意成本
9.4.3 选择群集索引
9.4.4 列顺序问题
9.4.5 修改索引
9.4.6 删除索引
9.4.7 从查询计划中获取提示
9.4.8 使用数据库引擎调整向导
9.5 维护索引
9.5.1 碎片
9.5.2 确定碎片和页拆分的可能性
9.6 本章小结
9.7 练习
第10章 视图
10.1 简单的视图
10.2 更加复杂的视图
10.3 使用T-SOL编辑视图
10.4 删除视图
10.5 在MaliagementStudio中创建和编辑视图
10.6 审查：显示现有的代码
10.7 保护代码：加密视图
10.8 关于模式绑定
10.9 使用VIEWMETADATA使视图看起来像表一样
10.10 索引(物化)视图
10.11 本章小结
10.12 练习
第11章 编写脚本和批处理
11.1 脚本的基础知识
11.1.1 USE语句
11.1.2 声明变量
11.1.3 使用@@IDENTITY
11.1.4 使用@@ROWCOUNT
11.2 批处理
11.2.1 批处理中的错误
11.2.2 何时使用批处理
11.3 sqlcmd
11.4 动态SQL：用ExEC命令动态生成代码
11.5 控制流语句
11.5.1 IFELSE语句
11.5.2 CASE语句
11.5.3 用WHILE语句进行循环
11.5.4 WAITOR语句
11.5.5 TRY／CATCH块
11.6 本章小结
11.7 练习
第12章 存储过程
12.1 创建存储过程：基本语法
12.2 使用ALTER修改存储过程
12.3 删除存储过程
12.4 参数化
12.5 通过返回值确认成功或失败
12.6 错误处理
12.6.1 以前的方式
12.6.2 在错误发生前处理错误
12.6.3 手动引发错误
12.6.4 添加自定义的错误消息
12.7 存储过程的优点
12.7.1 创建可调用的进程
12.7.2 为了安伞性使用存储过程
12.7.3 存储过程和性能
12.8 扩展存储过程(XP)
12.9 递归简介
12.10 调试
12.10.1 启动调试器
12.10.2 调试器的组成
12.10.3 使用调试器
12.11 .NET程序集
12.12 本章小结
第13章 用户自定义函数
13.1 UDF的定义
13.2 返回标量值的uDF
13.3 返回表的UDF
13.4 调试用户自定义函数
13.5 数据库中的.NET
13.6 本章小结
13.7 练习
第14章 事务和锁
14.1 事务
14.1.1 BEGINTRAN
14.1.2 COMMITTRAN
14.1.3 ROLLBACKTRAN
14.1.4 SAVETRAN
14.2 SQLServer日志的工作方式
14.2.1 失败和恢复
14.2.2 隐式事务
14.3 锁和并发
14.3.1 通过锁可以防止的问题
14.3.2 可以锁定的资源
14.3.3 锁升级和锁对性能的影响
14.3.4 锁定模式
14.3.5 锁的兼容性
14.3.6 指定一种特有的锁定类型——优化器提示
14.4 设置隔离级别
14.5 处理死锁(1205错误)
……
第15章 触发器
第16章 初识XML
第17章 Reporting Services
第18章 使用Integration Services进行集成
第19章 扮演管理员的角色
附录 
序言
正如我曾说过的，写书的经历奇特而漫长。早在1999年，当我首次编写Professional SQL Server 7.0Programming一书时，无论是书籍还是程序开发环境都与今天的情况截然不同。那时，．NET尚未出现，Visual Studio 98是当时最流行的开发环境，Java开发环境正被广泛使用，而像Delphi这样可供选择的开发工具也比现在更具竞争力。现在正快速进入所谓的．corn时代，数据库管理系统（DBMS，如SQL Server）的使用也在呈指数增长。
然而，却存在一个问题。虽然我们可以找到一些有关SQL Server的书籍，但这些书籍都面向数据库管理员。这些书籍的作者将大量的时间和精力花费在了普通开发人员几乎不关注的内容上。事实上，对于一些无能为力的事情，我们必须放弃。就像迫切需要解决的全球饥饿或核扩散问题，因为我们根本无力解决，但我们完全能够编写一些面向开发人员的有关SQL的新书籍。
当时我写了Professional SQL Servet 7.0 Programming一书，内容可谓包罗万象，从基础内容到高级内容，适合于各类读者。但其造就的结果就是书特别的厚。
第一本书SQL Server2005发行后，我们计划重新编写SQL Server的第二次修订版本，但再次碰到了一个问题：有关高级编程的内容实在是太多了，以至于无法用一本书来涵盖全部内容。SQL Server 2005的新增内容也很多，要全放在一本书中介绍实属不易（几乎走出了一本书的范围），因此我们决定将原来的“高级编程”系列丛书分成“入门经典”和“高级编程”篇。尽管我们花了大量精力去进行拆分，但仍有不少内容重叠。SQL Server2008又增加了一些新功能，不过这样一来，我们可以使得“高级编程”篇面向高级读者，而“入门经典”篇内容也更加丰富。