《SQL Server 2005高级程序设计》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美)RobertVieira著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2008
  • ISBN:7115170797
  • 页数:674 页
图书介绍:SQL Server 2005是微软公司的最新版数据库,也是版本更新时间最长的一个产品。本书结构相对松散,重点讲述SQL Server上的应用开发。书中每一章的开头都会简要说明所要阐释的内容。讲述每一个主题时,往往先给出背景知识,接着在适当的时候推出一个示例,示例比较精简,但足以说明所介绍的概念。本书大多数概念与所使用的客户端语言无关,尽管书中的示例更多地使用了C#语言(有些例子以多种语言给出)。

第1章 回顾SQL Server中的对象 1

1.1 本书提供什么 1

1.2 数据库对象概览 1

1.2.1 数据库对象 2

1.2.2 事务日志 4

1.2.3 最基本的数据库对象:表 4

1.2.4 模式 5

1.2.5 文件组 5

1.2.6 关系图 5

1.2.7 视图 7

1.2.8 存储过程 7

1.2.9 用户定义函数 7

1.2.10 用户和角色 8

1.2.11 规则 8

1.2.12 默认值 8

1.2.13 用户定义数据类型 8

1.2.14 全文目录 9

1.3 SQL Server数据类型 9

1.4 SQL Server对象标识符 12

1.4.1 对什么命名 12

1.4.2 命名规则 12

1.5 小结 13

第2章 工具 14

2.1 联机丛书 14

2.2 SQL Server配置管理器 15

2.2.1 服务管理 16

2.2.2 网络配置 16

2.2.3 协议 17

2.2.4 客户端配置 18

2.3 SQL Server Management Studio 20

2.3.1 启动 20

2.3.2 查询窗口 22

2.4 SQL Server Business Intelligence Development Studio 25

2.5 SQL Server Integration Services(SSIS) 26

2.6 Reporting Services 26

2.7 大容量复制程序 26

2.8 SQL Server Profiler 27

2.9 sqlcmd 27

2.10 小结 27

第3章 T-SQL基础 28

3.1 基本的SELECT语句 28

3.1.1 SELECT语句和FROM子句 29

3.1.2 JOIN子句 30

3.1.3 WHERE子句 36

3.1.4 ORDER BY 40

3.1.5 使用GROUP BY子句聚集数据 42

3.1.6 使用HAVING子句在组上放置条件 45

3.1.7 使用FOR XML子句进行XML输出 46

3.1.8 使用OPTION子句指定提示 46

3.1.9 DISTINCT 46

3.2 用INSERT语句添加数据 47

3.3 通过UPDATE语句更改现有的数据 50

3.4 DELETE语句 52

3.5 替代的联结语法 54

3.5.1 替代的INNER JOIN 54

3.5.2 替代的OUTER JOIN 54

3.5.3 替代的CROSS JOIN 55

3.6 UNION 55

3.7 小结 58

第4章 创建和修改表 59

4.1 SQLServer中的对象名 59

4.1.1 模式名(又名:所有权) 59

4.1.2 数据库名 61

4.1.3 按照服务器命名 61

4.2 CREATE语句 62

4.2.1 CREATE DATABASE 62

4.2.2 CREATE TABLE 66

4.3 ALTER语句 72

4.3.1 ALTER DATABASE 72

4.3.2 ALTER TABLE 75

4.4 DROP语句 77

4.5 使用GUI工具 78

4.5.1 创建或编辑数据库 78

4.5.2 创建和编辑表 79

4.6 小结 80

第5章 回顾键和约束 81

5.1 约束的类型 82

5.1.1 域约束 82

5.1.2 实体约束 83

5.1.3 引用完整性约束 83

5.2 约束的命名 83

5.3 键约束 84

5.3.1 主键约束 84

5.3.2 外键约束 87

5.3.3 UNIQUE约束 94

5.4 CHECK约束 95

5.5 DEFAULT约束 96

5.5.1 在CREATE TABLE语句中定义DEFAULT约束 97

5.5.2 在现有的表上添加DEFAULT约束 97

5.6 禁用约束 98

5.6.1 创建约束时忽略不正确的数据 98

5.6.2 临时禁用现有的约束 100

5.7 规则和默认值:约束的同类 102

5.7.1 规则 102

5.7.2 默认值 103

5.7.3 确定哪个表或数据类型上使用了指定的规则或默认值 104

5.8 保证数据完整性的触发器 104

5.9 选择应用使用什么 104

5.10 小结 105

第6章 更深入的问题:高级查询 106

6.1 什么是子查询 107

6.2 构建嵌套的子查询 107

6.2.1 使用单值SELECT语句的嵌套查询 108

6.2.2 使用返回多个值的子查询的嵌套查询 109

6.2.3 ANY、SOME和ALL运算符 110

6.3 相关子查询 111

6.3.1 相关子查询如何工作 111

6.3.2 WHERE子句中的相关子查询 112

6.3.3 SELECT列表中的相关子查询 113

6.4 派生表 115

6.5 EXISTS运算符 117

6.6 混合数据类型:CAST和CONVERT 119

6.7 使用外部调用执行复杂的操作 120

6.8 性能考虑 121

6.9 小结 123

第7章 挑战设计 124

7.1 规范化回顾 124

7.1.1 从何处入手 125

7.1.2 达到第三范式 125

7.1.3 其他规范形式 126

7.2 关系 126

7.3 关系图 127

7.3.1 几种关系类型 128

7.3.2 实体框 128

7.3.3 关系线 129

7.3.4 终结器 129

7.4 逻辑设计和物理设计 131

7.4.1 逻辑模型的用途 131

7.4.2 逻辑模型的组成部分 132

7.5 处理基于文件的信息 133

7.6 子类别 135

7.6.1 子类别的类型 137

7.6.2 明了什么是什么——实现子类别 137

7.6.3 子类别的物理实现 139

7.6.4 通过子类别增加可扩展性 140

7.7 数据库重用 140

7.7.1 可重用数据库的候选 141

7.7.2 如何分解事物 141

7.7.3 可重用性的高昂代价 141

7.8 非规范化 142

7.9 为可伸缩性进行分区 142

7.10 SQL Server关系图工具 143

7.10.1 表 145

7.10.2 处理约束 146

7.11 小结 147

第8章 SQL Server——存储和索引结构 148

8.1 SQL Server存储 148

8.1.1 数据库 148

8.1.2 文件 148

8.1.3 区段 149

8.1.4 页 149

8.1.5 行 151

8.1.6 全文目录 151

8.2 理解索引 152

8.2.1 “B”还是非“B”:B树 153

8.2.2 在SQL Server中如何访问数据 156

8.2.3 索引类型和索引导航 157

8.3 创建、修改和删除索引 163

8.3.1 CREATE INDEX语句 163

8.3.2 创建XML索引 167

8.3.3 随约束隐含创建的索引 168

8.3.4 ALTER INDEX 168

8.3.5 DROP INDEX 170

8.4 明智地选择:决定何时何地使用何种索引 171

8.4.1 选择性 171

8.4.2 注意代价:当少变成多时 171

8.4.3 选择聚集索引 172

8.4.4 列顺序问题 174

8.4.5 删除索引 174

8.4.6 使用数据库引擎优化顾问 174

8.5 维护索引 174

8.5.1 碎片 175

8.5.2 检测碎片 175

8.6 小结 179

第9章 视图 180

9.1 简单视图 180

9.2 更复杂的视图 181

9.3 使用T-SQL编辑视图 185

9.4 删除视图 185

9.5 审查:显示已有的代码 185

9.6 保护代码:加密视图 187

9.7 关于模式绑定 188

9.8 使用VIEW_METADATA让视图看起来像一个表 188

9.9 索引(具体化)视图 188

9.10 分区视图 190

9.11 小结 191

第10章 脚本和批处理 192

10.1 脚本基础 192

10.1.1 USE语句 193

10.1.2 声明变量 193

10.1.3 使用@@IDENTITY 195

10.1.4 使用@@ROWCOUNT 196

10.2 批处理 197

10.2.1 批处理中的错误 198

10.2.2 何时使用批处理 199

10.3 SQLCMD 201

10.4 动态SQL:使用EXE命令生成代码 202

10.5 流控制语句 207

10.5.1 IF...ELSE语句 207

10.5.2 ELSE子句 209

10.5.3 CASE语句 211

10.5.4 使用WHILE语句进行循环 216

10.5.5 WAITFOR语句 217

10.5.6 TRY/CATCH块 217

10.6 小结 219

第11章 存储过程和用户定义函数 221

11.1 创建存储过程:基本语法 221

11.2 用ALTER更改存储过程 222

11.3 删除存储过程 223

11.4 参数 223

11.4.1 声明参数 223

11.4.2 创建输出参数 224

11.5 通过返回值确认成功或失败 226

11.6 错误处理 229

11.6.1 应该采取的方式 229

11.6.2 手工生成错误 234

11.6.3 添加你自己的自定义错误消息 236

11.7 存储过程能提供什么 238

11.7.1 创建可调用的过程 238

11.7.2 因安全而使用存储过程 238

11.7.3 存储过程和性能 239

11.8 扩展存储过程 241

11.9 递归概览 241

11.10 用户定义函数 243

11.10.1 什么是UDF 243

11.10.2 返回标量值的UDF 244

11.11 返回表的UDF 246

11.12 调试 252

11.12.1 为进行调试而设置SQL Server 252

11.12.2 启动调试器 253

11.12.3 调试器的组成 254

11.12.4 调试器启动后使用 256

11.13 小结 259

第12章 事务和锁 260

12.1 事务 260

12.1.1 BEGIN TRAN 261

12.1.2 COMMIT TRAN 261

12.1.3 ROLLBACK TRAN 262

12.1.4 SAVE TRAN 262

12.2 SQL Server日志的工作原理 265

12.2.1 使用CHECKPOINT命令 267

12.2.2 在恢复时使用CHECKPOINT 267

12.2.3 正常的服务器关机 267

12.2.4 数据库选项的更改 268

12.2.5 当Truncate on Checkpoint选项活动时 268

12.2.6 当恢复时间超出Recovery Interval选项的设置时 268

12.2.7 失败和恢复 268

12.2.8 隐式事务 270

12.3 锁和并发 270

12.3.1 通过锁可以防止什么问题 271

12.3.2 可锁的资源 274

12.3.3 锁升级以及锁对性能的影响 274

12.3.4 锁模式 275

12.3.5 锁的兼容性 276

12.3.6 指定特定的锁类型——优化器提示 277

12.4 设置隔离级别 279

12.4.1 READ COMMITTED 280

12.4.2 READ UNCOMMITTED 280

12.4.3 REPEATABLE READ 280

12.4.4 SERIALIZABLE 281

12.5 处理死锁(也称作“A 1205”) 281

12.5.1 SQL Server是如何判断存在死锁的 281

12.5.2 死锁牺牲品是如何选择的 282

12.5.3 避免死锁 282

12.6 小结 284

第13章 触发器 285

13.1 什么是触发器 286

13.1.1 ON 287

13.1.2 WITH ENCRYPTION 287

13.1.3 FOR|AFTER与INSTEAD OF子句 287

13.1.4 WITH APPEND 289

13.1.5 NOT FOR REPLICATION 289

13.1.6 AS 290

13.2 为数据完整性规则使用触发器 290

13.2.1 处理来自其他表的要求 290

13.2.2 使用触发器检查更新的差异 292

13.2.3 为定制错误消息使用触发器 294

13.3 触发器的其他常见用途 294

13.3.1 更新摘要信息 294

13.3.2 向非规范化的表中输入数据以用于报告 294

13.3.3 设置条件标记 295

13.4 其他触发器问题 297

13.4.1 触发器可以是嵌套的 297

13.4.2 触发器可以是递归的 298

13.4.3 调试触发器 298

13.4.4 触发器不妨碍修改架构 298

13.4.5 不必删除触发器就能够禁用它 299

13.4.6 触发器激发顺序 299

13.5 INSTEAD OF触发器 301

13.5.1 INSTEAD OF INSERT触发器 302

13.5.2 INSTEAD OF UPDATE触发器 304

13.5.3 INSTEAD OF DELETE触发器 305

13.6 IF UPDATE()与COLUMNS_UPDATED 306

13.6.1 UPDATE()函数 306

13.6.2 COLUMNS_UPDATED()函数 307

13.7 性能考虑 308

13.7.1 触发器是被动的而非先发制人的 308

13.7.2 触发器与激发它们的进程之间没有并发问题 309

13.7.3 保持短小精悍 309

13.7.4 在选择索引时不要忘记了触发器 309

13.7.5 不要试图在触发器中回滚 309

13.8 删除触发器 309

13.9 调试触发器 310

13.10 小结 311

第14章 使用.NET 312

14.1 程序集入门 312

14.2 编译程序集 313

14.3 将程序集上载到SQL Server中 315

14.4 创建基于程序集的存储过程 316

14.5 从程序集中创建标量用户定义函数 317

14.6 创建表值函数 320

14.7 创建聚集函数 323

14.8 从程序集创建触发器 328

14.9 自定义数据类型 332

14.9.1 从程序集创建自己的数据类型 333

14.9.2 访问复杂数据类型 333

14.9.3 删除数据类型 334

14.10 小结 335

第15章 SQL游标 336

15.1 什么是游标 336

15.2 游标的生命期 337

15.3 游标的类型和扩展的声明语法 341

15.3.1 作用域 341

15.3.2 可滚动性 345

15.3.3 游标类型 347

15.3.4 并发性选项 358

15.3.5 游标类型转换检测:TYPE_WARNING 361

15.3.6 FOR〈SELECT〉 363

15.3.7 FOR UPDATE 363

15.4 在游标中导航:FETCH语句 363

15.5 在游标中修改数据 364

15.6 小结 366

第16章 XML集成 367

16.1 XML数据类型 367

16.1.1 定义一个XML数据类型的列 368

16.1.2 XML模式集合 369

16.1.3 创建、修改和删除XML模式集合 370

16.1.4 XML数据类型方法 372

16.1.5 在模式集合上的强制约束 377

16.2 提取XML格式的关系数据 377

16.2.1 FOR XML子句 377

16.2.2 OPENXML 399

16.3 XML索引的快速提示 403

16.4 HTTP端点 403

16.4.1 安全性 404

16.4.2 HTTP端点方法 404

16.4.3 创建和管理HTTP端点 405

16.4.4 最后的思考 406

16.5 小结 406

第17章 报表服务 407

17.1 报表服务入门 407

17.2 构建简单的报表模型 408

17.2.1 数据源视图 410

17.2.2 创建报表 413

17.3 报表服务器项目 417

17.4 小结 421

第18章 BCP和其他基本的大容量操作 422

18.1 BCP实用工具 422

18.1.1 BCP语法 423

18.1.2 BCP导入 426

18.1.3 BCP导出 429

18.2 格式化文件 430

18.2.1 当列不匹配时 432

18.2.2 使用格式化文件 434

18.2.3 最大化导入的性能 435

18.3 BULK INSERT 435

18.4 OPENROWSET(BULK) 436

18.4.1 ROWS_PER_BATCH 437

18.4.2 SINGLE_BLOB,SINGLE_CLOB,SINGLE_NCLOB 437

18.5 小结 437

第19章 集成服务 438

19.1 理解问题 438

19.2 包的概述 439

19.2.1 任务 440

19.2.2 主窗口 442

19.2.3 解决方案资源管理器 443

19.2.4 属性窗口 443

19.3 创建简单的包 443

19.4 执行包 448

19.4.1 执行包实用工具的使用 448

19.4.2 在Management Studio中执行 450

19.5 小结 451

第20章 复制 452

20.1 复制基础 453

20.1.1 考虑在什么时候做出复制计划 453

20.1.2 复制角色 455

20.1.3 订阅 456

20.1.4 订阅服务器的类型 456

20.1.5 筛选数据 456

20.2 复制模型 457

20.2.1 快照复制 457

20.2.2 合并复制 460

20.2.3 事务复制 462

20.2.4 立即更新订阅服务器 464

20.2.5 混合复制类型 465

20.3 复制的拓扑结构 465

20.3.1 简单模型 466

20.3.2 混合模型 468

20.4 为复制制订计划 470

20.4.1 涉及的数据 470

20.4.2 移动设备 471

20.5 在Management Studio中设置复制 471

20.5.1 为复制配置服务器 471

20.5.2 配置发布 475

20.5.3 设置订阅服务器(通过Management Studio) 480

20.5.4 使用复制数据库 483

20.6 复制管理对象 485

20.7 小结 485

第21章 全文搜索 487

21.1 全文搜索的架构 488

21.2 设置全文索引和目录 489

21.2.1 为数据库激活全文特性 489

21.2.2 创建、修改、删除和操作全文特性 490

21.2.3 创建、更改、删除和操作全文索引 492

21.2.4 使用旧的语法来创建全文目录 496

21.2.5 针对索引的旧语法 497

21.2.6 关于索引填充的更多内容 498

21.3 全文查询语法 500

21.3.1 CONTAINS 500

21.3.2 FREETEXT 501

21.3.3 CONTAINSTABLE 502

21.3.4 FREETEXTTABLE 503

21.3.5 处理短语 503

21.3.6 布尔操作 503

21.3.7 邻近词 504

21.3.8 权重 504

21.3.9 特定性 505

21.4 干扰词 506

21.5 小结 506

第22章 安全性 507

22.1 安全性基础 508

22.1.1 一个人,一个登录名,一个密码 508

22.1.2 密码过期 509

22.1.3 密码长度和组成 510

22.1.4 尝试登录的次数 511

22.1.5 用户和密码信息的存储 511

22.2 安全性选项 512

22.2.1 SQL Server安全性 512

22.2.2 创建和管理登录 513

22.2.3 Windows集成的安全性 518

22.3 用户权限 519

22.3.1 授予访问特定数据库的权限 519

22.3.2 授予数据库中对象的权限 520

22.3.3 用户权限和语句级别的许可 524

22.4 服务器和数据库角色 526

22.4.1 服务器角色 526

22.4.2 数据库角色 527

22.5 应用程序角色 530

22.5.1 创建应用程序角色 531

22.5.2 应用程序角色添加许可权限 531

22.5.3 使用应用程序角色 531

22.5.4 删除应用程序角色 532

22.6 更高级的安全性 532

22.6.1 关于guest账户应该怎么办 532

22.6.2 TCP/IP端口设置 533

22.6.3 别使用sa账户 533

22.6.4 xp_cmdshell保持隐秘 533

22.6.5 不要忘记作为安全手段的视图、存储过程以及UDF 533

22.7 证书和非对称密钥 534

22.7.1 证书 535

22.7.2 非对称密钥 535

22.8 小结 535

第23章 性能优化 536

23.1 什么时候进行优化 537

23.2 索引选择 538

23.3 客户端和服务器端处理 539

23.4 战略上的非规范化 540

23.5 例行维护 540

23.6 组织好存储过程 541

23.6.1 让事务尽量短 541

23.6.2 尽可能使用限制性最少的事务隔离级别 541

23.6.3 必要的话实现多个解决方案 541

23.6.4 尽可能避免使用游标 541

23.7 使用临时表 542

23.8 莫以善小而不为 543

23.9 硬件的考虑 543

23.9.1 独占对服务器的使用 544

23.9.2 I/O密集与CPU密集 544

23.9.3 OLTP和OLAP 548

23.9.4 现场的和非现场的 548

23.9.5 挂起的风险 549

23.9.6 丢失数据 549

23.9.7 性能就是全部吗? 549

23.9.8 驱动器支持 550

23.9.9 理想的系统 550

23.10 排错 550

23.10.1 多种多样的显示计划和STATISTICS 551

23.10.2 数据库一致性检查器(DBCC) 555

23.10.3 查询调控器 556

23.10.4 SQL Server Profiler 556

23.10.5 性能监视器 559

23.11 小结 560

第24章 管理 561

24.1 计划作业 561

24.1.1 创建操作员 562

24.1.2 创建作业和任务 565

24.2 备份和恢复 581

24.2.1 创建备份 581

24.2.2 恢复模式 586

24.2.3 恢复 587

24.3 索引维护 590

24.3.1 ALTER INDEX 591

24.3.2 索引名 591

24.3.3 表名或视图名 591

24.3.4 REBUILD 591

24.3.5 DISABLE 592

24.3.6 REORGANIZE 592

24.4 数据存档 593

24.5 小结 593

第25章 SMO:SQL管理对象 595

25.1 SQL Server SMO的历史 595

25.1.1 SQL分布式管理对象 596

25.1.2 SQL命名空间 596

25.1.3 WMI 596

25.1.4 SMO 597

25.2 SMO对象模型 597

25.3 演练实例 598

25.3.1 开始 599

25.3.2 创建数据库 600

25.3.3 创建表 600

25.4 删除数据库 604

25.5 备份数据库 604

25.6 生成脚本 605

25.7 完整的代码 607

25.8 小结 611

附录A 系统函数 613

附录B 连接性 650

附录C 获得服务 659