出版时间:2008-4 出版社:人民邮电 作者:Robert Vieira 页数:674 译者:董明
Tag标签:无
内容概要
本书是SQL Server应用开发的经典著作。主要讨论了SQL Server数据库对象、T-SQL基础、键和约束、高级查询、存储和索引、事务和锁、触发器、安全性等内容。书中在讲述每个主题时,都会先给出背景知识,然后讲述自身经验,并在适当时候推出示例,进一步予以说明。 本书主要面向中高级数据库开发人员。
作者简介
Robert Vieira SQL Server领域的世界权威。他曾经任全球领先的IT管理分析解决方案供应商NetTQ公司的软件架构师,负责产品的架构设计和对其他程序员进行培训和指导。从2006年开始,他成为一名独立咨询师。Vieira在数据库架构和管理上有很深造诣,并乐于向技术社区分享自己的经验和知识,因而享誉世界。他撰写了多部数据库开发方面的畅销书,本书是他的代表作。
书籍目录
第1章 回顾SQL Server中的对象1.1 本书提供什么1.2 数据库对象概览1.2.1 数据库对象1.2.2 事务日志1.2.3 最基本的数据库对象:表1.2.4 模式1.2.5 文件组1.2.6 关系图1.2.7 视图1.2.8 存储过程1.2.9 用户定义函数1.2.10 用户和角色1.2.11 规则1.2.12 默认值1.2.13 用户定义数据类型1.2.14 全文目录1.3 SQL Server数据类型1.4 SQL Server对象标识符1.4.1 对什么命名1.4.2 命名规则1.5 小结第2章 工具2.1 联机丛书2.2 SQL Server配置管理器2.2.1 服务管理2.2.2 网络配置2.2.3 协议2.2.4 客户端配置2.3 SQL Server Management Studio2.3.1 启动2.3.2 查询窗口2.4 SQL Server Business Intelligence Development Studio2.5 SQL Server Integration Services(SSIS)2.6 Reporting Services2.7 大容量复制程序2.8 SQL Server Profiler2.9 sqlcmd2.10 小结第3章 T-SQL基础3.1 基本的SELECT语句3.1.1 SELECT语句和FROM子句3.1.2 JOIN子句3.1.3 WHERE子句3.1.4 ORDER BY3.1.5 使用GROUP BY子句聚集数据3.1.6 使用HAVING子句在组上放置条件3.1.7 使用FOR XML子句进行XML输出3.1.8 使用OPTION子句指定提示3.1.9 DISTINCT3.2 用INSERT语句添加数据3.3 通过UPDATE语句更改现有的数据3.4 DELETE语句3.5 替代的联结语法3.5.1 替代的INNER JOIN3.5.2 替代的OUTER JOIN3.5.3 替代的CROSS JOIN3.6 UNION3.7 小结第4章 创建和修改表4.1 SQL Server中的对象名4.1.1 模式名(又名:所有权)4.1.2 数据库名4.1.3 按照服务器命名4.2 CREATE语句4.2.1 CREATE DATABASE4.2.2 CREATE TABLE4.3 ALTER语句4.3.1 ALTER DATABASE4.3.2 ALTER TABLE4.4 DROP语句4.5 使用GUI工具4.5.1 创建或编辑数据库4.5.2 创建和编辑表4.6 小结第5章 回顾键和约束5.1 约束的类型5.1.1 域约束5.1.2 实体约束5.1.3 引用完整性约束5.2 约束的命名5.3 键约束5.3.1 主键约束5.3.2 外键约束5.3.3 UNIQUE约束5.4 CHECK约束5.5 DEFAULT约束5.5.1 在CREATE TABLE语句中定义DEFAULT约束5.5.2 在现有的表上添加DEFAULT约束5.6 禁用约束5.6.1 创建约束时忽略不正确的数据5.6.2 临时禁用现有的约束5.7 规则和默认值:约束的同类5.7.1 规则5.7.2 默认值5.7.3 确定哪个表或数据类型上使用了指定的规则或默认值5.8 保证数据完整性的触发器5.9 选择应用使用什么5.10 小结第6章 更深入的问题:高级查询6.1 什么是子查询6.2 构建嵌套的子查询6.2.1 使用单值SELECT语句的嵌套查询6.2.2 使用返回多个值的子查询的嵌套查询6.2.3 ANY、SOME和ALL运算符6.3 相关子查询6.3.1 相关子查询如何工作6.3.2 WHERE子句中的相关子查询6.3.3 SELECT列表中的相关子查询6.4 派生表6.5 EXISTS运算符6.6 混合数据类型:CAST和CONVERT6.7 使用外部调用执行复杂的操作6.8 性能考虑6.9 小结第7章 挑战设计7.1 规范化回顾7.1.1 从何处入手7.1.2 达到第三范式7.1.3 其他规范形式7.2 关系7.3 关系图7.3.1 几种关系类型7.3.2 实体框7.3.3 关系线7.3.4 终结器7.4 逻辑设计和物理设计7.4.1 逻辑模型的用途7.4.2 逻辑模型的组成部分7.5 处理基于文件的信息7.6 子类别7.6.1 子类别的类型7.6.2 明了什么是什么——实现子类别7.6.3 子类别的物理实现7.6.4 通过子类别增加可扩展性7.7 数据库重用7.7.1 可重用数据库的候选7.7.2 如何分解事物7.7.3 可重用性的高昂代价7.8 非规范化7.9 为可伸缩性进行分区7.10 SQL Server关系图工具7.10.1 表7.10.2 处理约束7.11 小结第8章 SQL Server——存储和索引结构8.1 SQL Server存储8.1.1 数据库8.1.2 文件8.1.3 区段8.1.4 页8.1.5 行8.1.6 全文目录8.2 理解索引8.2.1 “B”还是非“B”:B树8.2.2 在SQL Server中如何访问数据8.2.3 索引类型和索引导航8.3 创建、修改和删除索引8.3.1 CREATE INDEX语句8.3.2 创建XML索引8.3.3 随约束隐含创建的索引8.3.4 ALTER INDEX8.3.5 DROP INDEX8.4 明智地选择:决定何时何地使用何种索引8.4.1 选择性8.4.2 注意代价:当少变成多时8.4.3 选择聚集索引8.4.4 列顺序问题8.4.5 删除索引8.4.6 使用数据库引擎优化顾问8.5 维护索引8.5.1 碎片8.5.2 检测碎片8.6 小结第9章 视图9.1 简单视图9.2 更复杂的视图9.3 使用T-SQL编辑视图9.4 删除视图9.5 审查:显示已有的代码9.6 保护代码:加密视图9.7 关于模式绑定9.8 使用VIEW_METADATA让视图看起来像一个表9.9 索引(具体化)视图9.10 分区视图9.11 小结第10章 脚本和批处理10.1 脚本基础10.1.1 USE语句10.1.2 声明变量10.1.3 使用@@ IDENTITY10.1.4 使用@@ ROWCOUNT10.2 批处理10.2.1 批处理中的错误10.2.2 何时使用批处理10.3 SQLCMD10.4 动态SQL:使用EXE命令生成代码10.5 流控制语句10.5.1 IF...ELSE语句10.5.2 ELSE子句10.5.3 CASE语句10.5.4 使用WHILE语句进行循环10.5.5 WAITFOR语句10.5.6 TRY/CATCH块10.6 小结第11章 存储过程和用户定义函数11.1 创建存储过程:基本语法11.2 用ALTER更改存储过程11.3 删除存储过程11.4 参数11.4.1 声明参数11.4.2 创建输出参数11.5 通过返回值确认成功或失败11.6 错误处理11.6.1 应该采取的方式11.6.2 手工生成错误11.6.3 添加你自己的自定义错误消息11.7 存储过程能提供什么11.7.1 创建可调用的过程11.7.2 因安全而使用存储过程11.7.3 存储过程和性能11.8 扩展存储过程11.9 递归概览11.10 用户定义函数11.10.1 什么是UDF11.10.2 返回标量值的UDF11.11 返回表的UDF11.12 调试11.12.1 为进行调试而设置SQL Server11.12.2 启动调试器11.12.3 调试器的组成11.12.4 调试器启动后使用11.13 小结第12章 事务和锁12.1 事务12.1.1 BEGIN TRAN12.1.2 COMMIT TRAN12.1.3 ROLLBACK TRAN12.1.4 SAVE TRAN12.2 SQL Server日志的工作原理12.2.1 使用CHECKPOINT命令12.2.2 在恢复时使用CHECKPOINT12.2.3 正常的服务器关机12.2.4 数据库选项的更改12.2.5 当Truncate on Checkpoint选项活动时12.2.6 当恢复时间超出Recovery Interval选项的设置时12.2.7 失败和恢复12.2.8 隐式事务12.3 锁和并发12.3.1 通过锁可以防止什么问题12.3.2 可锁的资源12.3.3 锁升级以及锁对性能的影响12.3.4 锁模式12.3.5 锁的兼容性12.3.6 指定特定的锁类型——优化器提示12.4 设置隔离级别12.4.1 READ COMMITTED12.4.2 READ UNCOMMITTED12.4.3 REPEATABLE READ12.4.4 SERIALIZABLE12.5 处理死锁(也称作“A 1205”)12.5.1 SQL Server是如何判断存在死锁的12.5.2 死锁牺牲品是如何选择的12.5.3 避免死锁12.6 小结第13章 触发器13.1 什么是触发器13.1.1 ON13.1.2 WITH ENCRYPTION13.1.3 FOR|AFTER与INSTEAD OF子句13.1.4 WITH APPEND13.1.5 NOT FOR REPLICATION13.1.6 AS13.2 为数据完整性规则使用触发器13.2.1 处理来自其他表的要求13.2.2 使用触发器检查更新的差异13.2.3 为定制错误消息使用触发器13.3 触发器的其他常见用途13.3.1 更新摘要信息13.3.2 向非规范化的表中输入数据以用于报告13.3.3 设置条件标记13.4 其他触发器问题13.4.1 触发器可以是嵌套的13.4.2 触发器可以是递归的13.4.3 调试触发器13.4.4 触发器不妨碍修改架构13.4.5 不必删除触发器就能够禁用它13.4.6 触发器激发顺序13.5 INSTEAD OF触发器13.5.1 INSTEAD OF INSERT触发器13.5.2 INSTEAD OF UPDATE触发器13.5.3 INSTEAD OF DELETE触发器13.6 IF UPDATE()与COLUMNS_UPDATED13.6.1 UPDATE()函数13.6.2 COLUMNS_UPDATED()函数13.7 性能考虑13.7.1 触发器是被动的而非先发制人的13.7.2 触发器与激发它们的进程之间没有并发问题13.7.3 保持短小精悍13.7.4 在选择索引时不要忘记了触发器13.7.5 不要试图在触发器中回滚13.8 删除触发器13.9 调试触发器13.10 小结第14章 使用.NET14.1 程序集入门14.2 编译程序集14.3 将程序集上载到SQL Server中14.4 创建基于程序集的存储过程14.5 从程序集中创建标量用户定义函数14.6 创建表值函数14.7 创建聚集函数14.8 从程序集创建触发器14.9 自定义数据类型14.9.1 从程序集创建自己的数据类型14.9.2 访问复杂数据类型14.9.3 删除数据类型14.10 小结第15章 SQL游标15.1 什么是游标15.2 游标的生命期15.3 游标的类型和扩展的声明语法15.3.1 作用域15.3.2 可滚动性15.3.3 游标类型15.3.4 并发性选项15.3.5 游标类型转换检测:TYPE_WARNING15.3.6 FOR < SELECT >15.3.7 FOR UPDATE15.4 在游标中导航:FETCH语句15.5 在游标中修改数据15.6 小结第16章 XML集成16.1 XML数据类型16.1.1 定义一个XML数据类型的列16.1.2 XML模式集合16.1.3 创建、修改和删除XML模式集合16.1.4 XML数据类型方法16.1.5 在模式集合上的强制约束16.2 提取XML格式的关系数据16.2.1 FOR XML子句16.2.2 OPENXML16.3 XML索引的快速提示16.4 HTTP端点16.4.1 安全性16.4.2 HTTP端点方法16.4.3 创建和管理HTTP端点16.4.4 最后的思考16.5 小结第17章 报表服务17.1 报表服务入门17.2 构建简单的报表模型17.2.1 数据源视图17.2.2 创建报表17.3 报表服务器项目17.4 小结第18章 BCP和其他基本的大容量操作18.1 BCP实用工具18.1.1 BCP语法18.1.2 BCP导入18.1.3 BCP导出18.2 格式化文件18.2.1 当列不匹配时18.2.2 使用格式化文件18.2.3 最大化导入的性能18.3 BULK INSERT18.4 OPENROWSET(BULK)18.4.1 ROWS_PER_BATCH18.4.2 SINGLE_BLOB,SINGLE_CLOB,SINGLE_NCLOB18.5 小结第19章 集成服务19.1 理解问题19.2 包的概述19.2.1 任务19.2.2 主窗口19.2.3 解决方案资源管理器19.2.4 属性窗口19.3 创建简单的包19.4 执行包19.4.1 执行包实用工具的使用19.4.2 在Management Studio中执行19.5 小结第20章 复制20.1 复制基础20.1.1 考虑在什么时候做出复制计划20.1.2 复制角色20.1.3 订阅20.1.4 订阅服务器的类型20.1.5 筛选数据20.2 复制模型20.2.1 快照复制20.2.2 合并复制20.2.3 事务复制20.2.4 立即更新订阅服务器20.2.5 混合复制类型20.3 复制的拓扑结构20.3.1 简单模型20.3.2 混合模型20.4 为复制制订计划20.4.1 涉及的数据20.4.2 移动设备20.5 在Management Studio中设置复制20.5.1 为复制配置服务器20.5.2 配置发布20.5.3 设置订阅服务器(通过Management Studio)20.5.4 使用复制数据库20.6 复制管理对象20.7 小结第21章 全文搜索21.1 全文搜索的架构21.2 设置全文索引和目录21.2.1 为数据库激活全文特性21.2.2 创建、修改、删除和操作全文特性21.2.3 创建、更改、删除和操作全文索引21.2.4 使用旧的语法来创建全文目录21.2.5 针对索引的旧语法21.2.6 关于索引填充的更多内容21.3 全文查询语法21.3.1 CONTAINS21.3.2 FREETEXT21.3.3 CONTAINSTABLE21.3.4 FREETEXTTABLE21.3.5 处理短语21.3.6 布尔操作21.3.7 邻近词21.3.8 权重21.3.9 特定性21.4 干扰词21.5 小结第22章 安全性22.1 安全性基础22.1.1 一个人,一个登录名,一个密码22.1.2 密码过期22.1.3 密码长度和组成22.1.4 尝试登录的次数22.1.5 用户和密码信息的存储22.2 安全性选项22.2.1 SQL Server安全性22.2.2 创建和管理登录22.2.3 Windows集成的安全性22.3 用户权限22.3.1 授予访问特定数据库的权限22.3.2 授予数据库中对象的权限22.3.3 用户权限和语句级别的许可22.4 服务器和数据库角色22.4.1 服务器角色22.4.2 数据库角色22.5 应用程序角色22.5.1 创建应用程序角色22.5.2 向应用程序角色添加许可权限22.5.3 使用应用程序角色22.5.4 删除应用程序角色22.6 更高级的安全性22.6.1 关于guest账户应该怎么办22.6.2 TCP/IP端口设置22.6.3 别使用sa账户22.6.4 让xp_cmdshell保持隐秘22.6.5 不要忘记作为安全手段的视图、存储过程以及UDF22.7 证书和非对称密钥22.7.1 证书22.7.2 非对称密钥22.8 小结第23章 性能优化23.1 什么时候进行优化23.2 索引选择23.3 客户端和服务器端处理23.4 战略上的非规范化23.5 例行维护23.6 组织好存储过程23.6.1 让事务尽量短23.6.2 尽可能使用限制性最少的事务隔离级别23.6.3 必要的话实现多个解决方案23.6.4 尽可能避免使用游标23.7 使用临时表23.8 莫以善小而不为23.9 硬件的考虑23.9.1 独占对服务器的使用23.9.2 I/O密集与CPU密集23.9.3 OLTP和OLAP23.9.4 现场的和非现场的23.9.5 挂起的风险23.9.6 丢失数据23.9.7 性能就是全部吗?23.9.8 驱动器支持23.9.9 理想的系统23.10 排错23.10.1 多种多样的显示计划和STATISTICS23.10.2 数据库一致性检查器(DBCC)23.10.3 查询调控器23.10.4 SQL Server Profiler23.10.5 性能监视器23.11 小结第24章 管理24.1 计划作业24.1.1 创建操作员24.1.2 创建作业和任务24.2 备份和恢复24.2.1 创建备份24.2.2 恢复模式24.2.3 恢复24.3 索引维护24.3.1 ALTER INDEX24.3.2 索引名24.3.3 表名或视图名24.3.4 REBUILD24.3.5 DISABLE24.3.6 REORGANIZE24.4 数据存档24.5 小结第25章 SMO:SQL管理对象25.1 SQL Server SMO的历史25.1.1 SQL分布式管理对象25.1.2 SQL命名空间25.1.3 WMI25.1.4 SMO25.2 SMO对象模型25.3 演练实例25.3.1 开始25.3.2 创建数据库25.3.3 创建表25.4 删除数据库25.5 备份数据库25.6 生成脚本25.7 完整的代码25.8 小结附录A 系统函数附录B 连接性附录C 获得服务
编辑推荐
《SQL Server 2005高级程序设计》主要面向中高级数据库开发人员。SQLServer2005是微软数据库技术的一个里程碑,新增或重写的功能在数量和重要性上都令人惊叹。但是,功能的强大和丰富也向程序员提出了挑战。只有正确地选择,并善加运用,才能发挥数据库的真正潜力。 《SQL Server 2005高级程序设计》恰恰满足了这一需要。作为SQLServer领域最具影响力的经典著作之一,《SQL Server 2005高级程序设计》各版本累计销量已经超过了10万册。在Amazon共有150多位读者给予4星半评价。它从众多同类图书中脱颖而出的秘诀。就在于作者不是一般性地讲述各个知识点,而是处处从自身的经验和实战需要出发,对各种功能的正确运用做出切中要害的评述和深入的探讨,使读者能够轻松获得本来需要多年摸索才能掌握的深度知识。书中对一些SQLServer特性的批评,显示了作者非同一般的功力。
图书封面
图书标签Tags
无
评论、评分、阅读与下载