第Ⅰ部分 SQL Server的基本概念第1章 数据库系统和SQL Server 3
1.1 数据库系统概述 5
1.1.1 多种不同的用户界面 6
1.1.2 物理数据独立性 6
1.1.3 逻辑数据独立性 6
1.1.4 查询优化 7
1.1.5 数据完整性 7
1.1.6 并发控制 7
1.1.7 备份与恢复 7
1.1.8 安全性和授权 8
1.2 关系数据库系统 8
1.3 SQL:一种关系数据库语言 11
1.4 数据库设计 12
1.4.1 范式 13
1.4.2 实体-关系(ER)模型 15
1.5 小结 17
1.6 Microsoft SQL Server概述 18
1.7 练习 18
第2章 SQL Server Management Studio 21
2.1 SQL Server程序组和Books Online 22
2.2 SQL Server Management Studio 23
2.2.1 通过SQL Server Database Engine使用Management Studio 26
2.2.2 使用Object Explorer管理数据库 29
2.2.3 使用SQL Server Management Studio创建动作 35
2.3 小结 39
2.4 练习 40
第Ⅱ部分 Transact-SQL语言第3章 SQL组件 43
3.1 SQL的基本对象 44
3.1.1 注释 45
3.1.2 标识符 46
3.1.3 保留字 46
3.2 数据类型 46
3.2.1 数值型 46
3.2.2 串型 47
3.2.3 指定日期和时间 50
3.2.4 派生数据类型 51
3.2.5 混杂型 51
3.3 谓词 52
3.2.6 用户自定义型 52
3.4 聚集函数 53
3.5 标量函数 53
3.5.1 数值函数 54
3.5.2 日期函数 55
3.5.3 串函数 56
3.5.4 文本/图像函数 58
3.5.5 系统函数 58
3.6 标量运算符 60
3.7 空值 62
3.8 小结 63
3.9 练习 63
第4章 数据定义语言 65
4.1.1 创建数据库 66
4.1 创建数据库对象 66
4.1.2 CREATE TABLE:一个基本的格式 69
4.1.3 CREATE TABLE:增强型格式 71
4.1.4 CREATE TABLE和声明性完整性约束 72
4.1.5 参照约束 76
4.1.6 创建其他数据库对象 80
4.1.7 完整性约束和域 81
4.2 修改数据库对象 86
4.2.1 修改数据库 86
4.2.2 修改表:基本格式 87
4.2.3 修改表:增强格式 88
4.3 删除数据库对象 91
4.5 练习 92
4.4 小结 92
第5章 简单查询 95
5.1 SELECT语句:基本格式 96
5.2 WHERE子句 98
5.2.1 布尔运算符 100
5.2.2 IN和BETWEEN运算符 104
5.2.3 涉及NULL值的查询 108
5.2.4 LIKE运算符 109
5.3 简单子查询 113
5.3.1 子查询与比较运算符 113
5.3.2 子查询与IN运算符 115
5.3.3 ANY以及ALL运算符 116
5.3.4 EXISTS函数 118
5.4 GROUP BY子句 119
5.3.5 FROM子句中的查询 119
5.5 聚集函数 121
5.5.1 便利聚集 121
5.5.2 统计聚集 127
5.5.3 超聚集(运算符CUBE和ROLLUP) 128
5.5.4 用户自定义的聚集函数 128
5.6 HAVING子句 128
5.7 ORDER BY子句 129
5.8 SELECT语句和IDENTITY属性 132
5.9 集合运算符 133
5.10 CASE表达式 138
5.11 COMPUTE子句 139
5.12 临时表 142
5.13 计算列 143
5.14 小结 144
5.15 练习 144
第6章 复杂查询 147
6.1 连接运算符 148
6.1.1 两种实现连接的语法格式 148
6.1.2 等值连接 149
6.1.3 笛卡尔积 152
6.1.4 自然连接 154
6.1.5 theta连接 156
6.1.6 多个表的连接 157
6.1.7 把某个表与其自身连接 158
6.1.8 外部连接 160
6.2 相关子查询 163
6.3.1 子查询的优点 168
6.3 连接查询和子查询的优点 168
6.3.2 连接的优点 169
6.4 通用表表达式 169
6.4.1 CTE和非递归查询 170
6.4.2 通用表表达式和递归查询 172
6.5 小结 176
6.6 练习 176
第7章 对表中内容的修改 179
7.1 INSERT语句 180
7.1.1 插入一行 180
7.1.2 插入多行 182
7.2 UPDATE语句 183
7.3 DELETE语句 186
7.4 小结 188
7.5 练习 188
第8章 存储过程与用户自定义函数 189
8.1 SQL扩展 190
8.1.1 语句块 190
8.1.2 IF语句 190
8.1.3 WHILE语句 191
8.1.4 局部变量 192
8.1.5 其他过程语句 193
8.1.6 用TRY和CATCH语句处理事件 194
8.2 存储过程 196
8.2.1 存储过程的创建与执行 197
8.2.3 存储过程和CLR 201
8.2.2 系统存储过程 201
8.3 用户自定义函数 205
8.3.1 用户自定义函数的创建和执行 205
8.3.2 用户自定义函数和CLR 209
8.4 小结 210
8.5 练习 211
第9章 索引和查询优化 213
9.1 索引 214
9.1.1 群集索引和非群集索引 215
9.1.2 索引以及相关Transact-SQL语句 217
9.1.3 编辑索引信息 222
9.1.4 索引和键 223
9.1.5 创建索引的准则 223
9.2.1 连接与相关子查询 225
9.2 提高效率的通用标准 225
9.2.2 不完整语句 226
9.2.3 LIKE运算符 227
9.2.4 用于查询优化的Transact-SQL语句 227
9.3 查询优化器 229
9.3.1 优化器统计信息 230
9.3.2 连接操作的实现 231
9.3.3 优化器提示 232
9.4 DBCC命令和索引 242
9.5 小结 242
9.6 练习 242
第10章 视图 245
10.1 DDL语句和视图 246
10.1.1 创建视图 246
10.1.2 修改和删除视图 250
10.2.1 视图检索 252
10.2 DML语句和视图 252
10.2.2 INSERT语句和视图 253
10.2.3 UPDATE语句和视图 255
10.2.4 DELETE语句和视图 257
10.3 索引视图 257
10.3.1 创建索引视图 258
10.3.2 索引视图的好处 260
10.3.3 索引视图的使用 261
10.4 小结 263
10.5 练习 263
第11章 系统目录 265
11.1.1 Sysobjects 266
11.1 系统表 266
11.1.2 Syscolumns 267
11.1.3 Sysindexes 267
11.1.4 Sysusers 267
11.1.5 Sysdatabases 268
11.1.6 Sysdepends 268
11.1.7 Sysconstraints 268
11.2 目录视图 269
11.2.1 Sys_objects 270
11.2.2 Sys.columns 270
11.2.3 Sys.database_principals 270
11.3 目录视图的查询 271
11.4.1 系统过程 273
11.4 访问系统信息的其他方式 273
11.4.2 系统函数 275
11.4.3 属性函数 276
11.4.4 信息模式 277
11.5 小结 280
11.6 练习 280
第12章 SQL Server安全性 281
12.1 身份验证 282
12.1.1 SQL Server加密策略及机制 283
12.1.2 使用DDL设置SQL Server 284
12.1.3 使用系统过程来设置SQL Server的安全性 286
12.1.4 与登录有关的系统过程 286
12.2 模式 287
12.2.2 与模式有关的DDL语句 288
12.2.1 用户和模式分离 288
12.3 数据库安全 291
12.3.1 使用DDL创建数据库用户账户 291
12.3.2 使用系统过程设置数据库用户账户 292
12.3.3 默认的数据库模式 293
12.4 角色 294
12.4.1 固定服务器 294
12.4.2 固定服务器角色及其权限 295
12.4.3 固定数据库角色 297
12.4.4 固定数据库角色及其权限 298
12.4.5 应用程序角色 300
12.4.6 用户自定义的数据库角色 302
12.5 授权 303
12.5.1 GRANT语句 304
12.5.2 DENY语句 308
12.5.3 REVOKE语句 310
12.6 视图和数据访问 310
12.7 存储过程和数据访问 312
12.8 小结 312
12.9 练习 313
第13章 触发器 315
13.1 引言 316
13.2 触发器的工作原理 316
13.2.1 AFTER触发器的应用领域 318
13.2.2 INSTEAD OF触发器的应用领域 321
13.2.3 第一个和最后一个触发器 322
13.2.4 DDL触发器 323
13.3 触发器和CLR 324
13.4 OUTPUT子句 328
13.5 修改触发器的结构 329
13.6 小结 330
13.7 练习 330
第14章 事务 331
14.1 引言 332
14.2 Transact-SQL语句和事务 333
14.3 锁 336
14.3.1 锁定粒度 337
14.3.2 锁的种类 337
14.3.3 SELECT语句和锁 340
14.4 隔离级别 341
14.5 死锁 344
14.7 练习 345
14.6 小结 345
第15章 SQL Server系统环境 347
15.1 磁盘存储器 348
15.1.1 数据页 349
15.1.2 大对象 351
15.1.3 索引页 351
15.2 系统数据库 351
15.3 实用程序 352
15.3.1 bcp实用程序 352
15.3.2 osql实用程序 354
15.3.3 sqlcmd实用程序 355
15.4 SQL Server的实例 357
15.5 Unicode 358
15.6.1 多处理器硬件体系结构 359
15.6 SQL Server体系结构 359
15.6.2 SQL Server的多线程体系结构 360
15.7 小结 362
15.8 练习 362
第Ⅲ部分 SQL Server:系统管理第16章 系统管理概述 365
16.1 管理工具 366
16.1.1 MS SQL Server 2005程序组 367
16.1.2 SQL Computer Manager 367
16.1.3 动态管理视图 368
16.2 系统管理员 369
16.3 小结 369
第17章 规划安装并安装SQL Server 371
17.1.1 SQL Server的用途 372
17.1 规划安装 372
17.1.2 硬件和软件要求 373
17.1.3 SQL Server的版本 374
17.1.4 安装建议 374
17.2 安装SQL Server 375
17.3 安装后配置SQL Server 381
17.3.1 创建服务器组并注册服务器 381
17.3.2 设置服务器选项 381
17.4 启动和停止SQL Server的实例 382
17.5 小结 383
第18章 管理数据库和数据库文件 385
18.1 管理文件组 386
18.2 管理数据库 387
18.2.1 创建数据库 388
18.2.2 查看和修改数据库选项 389
18.2.3 修改数据库 391
18.3 管理事务日志 393
18.4 小结 394
18.5 练习 394
第19章 管理安全性 395
19.1 引言 396
19.1.1 实现安全模式 396
19.1.2 管理SQL Server登录 397
19.2 数据库安全权限 398
19.3 管理权限 402
19.4 小结 403
19.5 练习 404
第20章 备份和恢复 405
20.1 引言 406
20.1.1 软件和硬件故障 406
20.1.2 事务日志 407
20.2 备份 407
20.2.1 完全数据库备份 407
20.2.2 差异备份 408
20.2.3 事务日志备份 408
20.2.4 数据库文件备份 409
20.3 执行备份 409
20.3.1 使用Management Studio进行备份 410
20.3.2 使用Transact-SQL语句进行备份 413
20.3.3 备份哪些数据库 415
20.3.4 最小化系统停机时间 416
20.3.5 高可用性 419
20.4 恢复 420
20.4.1 自动恢复 420
20.4.2 手工恢复 421
20.4.3 恢复模型 428
20.4.4 恢复到标记处 430
20.5 小结 431
20.6 练习 431
第21章 自动化系统管理任务 433
21.1 引言 434
21.2 SQL Server Agent 435
21.3 创建作业和操作员 435
21.3.2 使用SQL Server Management Studio创建作业 436
21.3.1 作业步骤 436
21.3.3 建立作业时间表 438
21.3.4 创建要通知的操作员 439
21.3.5 查看作业历史日志 440
21.4 警报 441
21.4.1 错误消息 442
21.4.2 SQL Server错误日志 443
21.4.3 事件日志 443
21.4.4 定义警报来处理SQL Server错误 443
21.4.5 定义警报来处理用户定义的错误 446
21.5 小结 448
21.6 练习 448
第22章 性能和调 449
22.1 引言 450
22.2 影响性能的因素 450
22.2.1 数据库应用程序和性能 450
22.2.2 数据库服务器和性能 452
22.2.3 系统资源和性能 453
22.3 监视工具 458
22.3.1 应用程序性能工具 458
22.3.2 SQL Sever特有的监视 462
22.3.3 监视系统资源的工具 464
22.4 使用正确的工具 466
22.4.1 SQL Server Profiler 467
22.4.2 Database Engine Tuning Advisor 467
22.5 小结 472
第23章 数据分区 475
23.1 引言 476
23.2 创建分区表的步骤 477
23.2.1 设置分区目标 477
23.2.2 确定分区键和分区数 478
23.2.3 为每个分区创建文件组 478
23.2.4 创建分区函数和分区模式 479
23.2.5 并置对象 482
23.3 对表和索引进行分区的准则 482
23.4 小结 482
第24章 数据复制 485
24.1 分布式数据 486
24.2 概述SQL Server复制 487
24.2.1 发布者、分发者和订阅者 488
24.2.2 发布和项目 489
24.2.3 复制类型 490
24.2.4 复制模型 492
24.3 管理复制 494
24.3.1 配置分发服务器和发布服务器 494
24.3.2 设置发布 495
24.3.3 设置订阅服务器 496
24.4 小结 498
24.5 练习 498
第Ⅳ部分 Microsoft分析服务第25章 数据仓库入门 501
25.1 联机事务处理与数据仓库化 502
25.1.1 联机事务处理 502
25.1.2 数据仓库系统 503
25.2 数据仓库和数据集市 504
25.3 数据仓库设计 506
25.4 立方和存储模式 508
25.5 聚集 510
25.6 数据访问 512
25.7 小结 512
25.8 练习 512
第26章 Microsoft Analysis Services 515
26.1 BI Development Studio 517
26.2 Analysis Services和立方 521
26.2.1 创建立方 522
26.2.2 设计存储器聚集和处理立方 523
26.2.3 浏览立方 526
26.3 小结 527
第27章 商务智能和SQL 529
27.1 Transact-SQL中的OLAP扩展 530
27.1.1 CUBE运算符 530
27.1.2 ROLLUP运算符 533
27.1.3 排序函数 535
27.1.4 TOP n子句 541
27.1.5 PIVOT和UNPIVOT运算符 543
27.2 小结 544
第28章 Microsoft报表服务 545
28.1 引言 546
28.1.1 Report Manager 546
28.1.2 Report Server 546
28.1.3 Report Server数据库 547
28.2 创建报表 547
28.2.1 Report向导 548
28.2.2 参数化报表 554
28.3 处理和管理报表 555
28.4 访问和交付报表 556
28.4.1 随需应变的报表 557
28.4.2 报表订阅 558
28.5 小结 559
28.6 练习 559
第Ⅴ部分 XML支持 563
第29章 XML概述 563
29.1 World Wide Web 564
29.2 XML和相关的语言 564
29.3 文档类型定义 568
29.4 XML模式 570
29.5 小结 571
第30章 SQL Server 2005和XML 573
30.1 在关系数据库中存储XML 574
30.2 XML数据类型 575
30.2.1 索引XML列 577
30.2.2 类型化和未类型化的XML 578
30.3 用FOR XML子句构建XML文档 580
30.3.1 RAW模式 581
30.3.2 AUTO模式 582
30.3.3 EXPLICIT模式 582
30.3.4 PATH模式 584
30.3.5 用不同的模式指定指令 585
30.4 XML查询语言 586
30.5 小结 587