绪论 1
0.1 理解 SQL Server 1
0.2 SQL Server 的客户/服务器模型 1
0.2.1 客户/服务器数据库系统 2
0.2.2 客户/服务器数据库系统的优点 2
0.2.3 SQL Server 2000客户/服务器系统的优点 3
0.2.4 桌面数据库系统 4
0.3 SQL Server 2000的主要新特性 5
0.3.1 易用性 5
0.3.2 可收缩性和可靠性 7
0.3.3 数据仓库 10
0.3.4 系统集成 12
0.4 本书结构安排 13
0.5 本书所用的约定 13
第一章 安装 SQL Server 2000 15
1.1 安装前的准备 15
1.2 安装要求 15
1.2.1 硬件需求 15
1.2.2 操作系统需求 16
1.2.3 Internet 与网络需求 17
1.3 创建 SQL Server 服务用户账号 17
1.3.1 域用户账号的需求 18
1.3.2 创建安全账号 18
1.4 SQL Server 的文件位置 19
1.5 安装 SQL Server 2000 20
1.6 安装选项和组件选项 26
1.6.1 安装方式 26
1.6.2 远程安装 26
1.6.3 安装类型 27
1.6.4 SQL Server 2000组件 28
1.6.5 认证模式 30
1.6.6 校对设置 31
1.6.7 网络库 33
1.7 验证 SQL Server 2000的安装 35
1.7.1 系统和样本数据库 36
1.7.2 目录和文件位置 36
1.7.3 修改口令和用户账号 38
1.7.4 重命名服务器 39
1.7.5 改变校对设置 40
1.8 安装 English Query 和 Analysis Services 40
1.8.1 安装 English Query 40
1.8.2 安装 Analysis Services 41
1.9 本章小结 42
1.10 思考与练习 42
第二章 SQL Server 2000的主要新增功能 43
2.1 性能的增强 43
2.1.1 联盟的数据库服务器 43
2.1.2 索引视图 43
2.1.7 网络库的功能提高 44
2.1.5 SQL Server 多实例 44
2.1.6 故障切换群集功能的增强 44
2.1.4 全文本搜索性能的提高 44
2.1.3 校对功能的增强 44
2.1.8 Kerberos 和安全代表 45
2.1.9 备份和恢复功能的增强 45
2.1.10 实用工具操作方面的可伸缩性增强 45
2.1.11 日志运送 45
2.2 编程功能的增强 46
2.2.1 支持 XML 46
2.2.2 新的数据类型 47
2.2.3 INSTEAD OF 触发器和 ALTER 触发器 47
2.3.1 执行复制 48
2.3 复制功能的增强 48
2.2.6 分布式查询函数和方法 48
2.2.5 用户定义的函数 48
2.2.4 级联参考完整性约束 48
2.3.2 合并复制 49
2.3.3 事务复制 50
2.3.4 队列更新 50
2.3.5 转换出版的数据 50
2.3.6 复制的可用性 50
2.4 数据转换服务功能的增强 51
2.4.1 支持关键字和约束 51
2.4.2 新的定制任务 51
2.4.3 将 DTS 数据包保存成 Visual Basic 文件 51
2.5 Analysis Services 的功能增强 52
2.5.1 数据开采功能的增强 52
2.5.2 维数的增强 53
2.6 Meta Data Services 的功能增强 54
2.5.3 安全性能的增强 54
2.6.1 Meta Data Browser 功能的增强 55
2.6.2 XML 编码功能的增强 55
2.6.3 仓库引擎编程功能的增强 55
2.6.4 仓库引擎建模功能的增强 56
2.7 English Query 的功能增强 57
2.8 SQL Server 2000移动数据库特性 58
2.9 本章小结 59
2.10 思考与练习 59
3.1 启动、暂停和停止 SQL Server 2000 60
3.1.1 修改默认服务 60
第三章 管理 SQL Server 2000 60
3.1.2 启动 SQL Server 61
3.1.3 设置轮流检测时间间隔 62
3.1.4 登录 SQL Server 63
3.1.5 运行 SQL Server 63
3.1.6 暂停 SQL Server 64
3.1.7 停止 SQL Server 65
3.2 管理服务器 66
3.2.1 注册服务器 66
3.2.2 创建服务器组 68
3.2.3 分配 sa 口令 68
3.2.4 管理 AWE 内存 69
3.3 配置网络连接 70
3.3.1 通过 Proxy Server 连接 SQL Server 70
3.3.2 在 Internet 上连接 SQL Server 71
3.4 SQL Mail 72
3.4.1 SQL Server 邮件服务 72
3.4.2 处理 SQL Server 接收的电子邮件请求 72
3.4.3 SQLAgentMail 72
3.4.4 配置 SQL Mail 73
3.5 管理客户端 73
3.5.1 客户端管理概述 74
3.5.2 客户端管理工具 74
3.5.3 网络库和网络协议 75
3.5.4 网络库的设置和默认值 75
3.6 本章小结 76
3.5.5 配置客户端网络连接 76
3.7 思考与练习 77
第四章 SQL Server 数据库 78
4.1 概述 78
4.2 数据库结构 78
4.2.1 逻辑数据库成分 80
4.2.2 页面和范围 80
4.2.3 物理数据库的文件和文件组 81
4.3 系统数据库 82
4.3.1 master 82
4.3.2 tempdb 82
4.3.3 model 83
4.3.4 msdb 83
4.4.1 利用 SQL Server Enterprise Manager 创建数据库 84
4.4 创建数据库 84
4.4.2 使用 CREATE DATABASE 语句创建数据库 85
4.5 更改数据库 89
4.5.1 使用 ALTER DATABASE 语句 90
4.5.2 缩小数据库和数据文件 92
4.6 本章小结 93
4.7 思考与练习 93
第五章 Transact-SQL 介绍 94
5.1 什么是 Transact-SQL 94
5.1.1 结构化查询语言 94
5.1.2 Transact-SQL 和 ANSI-SQL 95
5.1.3 SQL 和 Transact-SQL 的用途 95
5.1.4 SQL 的语句、批处理和元素 95
5.2 SQL 标识符 96
5.1.5 服务器的处理步骤 96
5.3 Transact-SQL 运算符 97
5.3.1 算术运算符 97
5.3.2 位运算符 98
5.3.3 比较运算符 98
5.3.4 连接运算符 98
5.3.5 运算符的优先级 99
5.4 Transact-SQL 变量 99
5.4.1 局部变量 99
5.4.2 局部变量赋值 100
5.4.3 利用 UPDATE 为局部变量赋值 102
5.4.4 全局变量 103
5.6 思考与练习 107
5.5 本章小结 107
第六章 Transact-SQL 程序设计结构 108
6.1 注释 108
6.2 语句块 BEGIN...END 108
6.3 条件执行语句 IF...ELSE 109
6.4 IF EXISTS 语句 110
6.5 重复执行语句 WHILE 111
6.6 跳转语句:GOTO 112
6.7 事件处理语句 WAITFOR 113
6.8 RETURN 语句 114
6.9 PRINT 语句 115
6.10 进行错误处理 116
6.10.1 关于 SQL Server 错误信息 116
6.10.2 管理 SQL Server 错误信息 117
6.10.3 RAISERROR 命令 118
6.11 设置选项 SET 120
6.12 本章小结 121
6.13 思考与练习 121
第七章 Transact-SQL 的数据类型 122
7.1 SQL Server 支持的数据类型 122
7.2 空值的概念 123
7.3 字符型变量 123
7.3.1 字符型数据列的长度 124
7.3.2 字符型数据的引用格式 125
7.3.3 截断字符串 125
7.4 十六进制型 126
7.5 时间戳型 127
7.6 文本和图像数据类型 128
7.6.1 定义 text 和 image 列 129
7.6.2 使用 WRITETEXT,READTEXT 和 UPDATETEXT 129
7.7 日期时间数据类型 132
7.8 位数据类型 135
7.9 数值数据类型 136
7.9.1 整数类数据类型 136
7.9.2 近似值数据类型 137
7.9.3 精确数值类型 138
7.9.4 money 数据类型 138
7.10 系统表和数据类型 139
7.11 用户定义数据类型 140
7.12 本章小结 142
7.13 思考与练习 143
第八章 函数 144
8.1 系统函数 144
8.2 字符串函数 146
8.2.1 基本字符串操作与分析 147
8.2.2 使用 soundex 函数 148
8.2.3 使用 difference 函数 149
8.2.4 使用 charindex 函数在串内搜索 149
8.2.5 使用 patindex 函数 150
8.2.6 通配符 150
8.2.7 使用 ESCAPE 子句 152
8.3 数学函数 153
8.4 使用 convert 函数 155
8.5 日期函数 156
8.5.1 日期部分 156
8.5.2 日期转换 157
8.6 使用 isnull 160
8.7 nullif 161
8.8 COALESCE 162
8.9 本章小结 162
8.10 思考与练习 163
第九章 表、索引和视图 165
9.1 表 165
9.1.1 创建表 165
9.1.3 列的属性 166
9.1.2 SQL Server 对象的引用方法 166
9.1.4 identity 列的注意事项 168
9.1.5 重命名表 168
9.1.6 向表中添加列 169
9.2 临时表 169
9.3 用 INSERT 添加行 170
9.3.1 插入指定的值 170
9.3.2 用 SELECT 插入多行 171
9.3.3 省略列列表 171
9.3.4 通过存储过程来插入 172
9.4 使用 UPDATE 来修改表行 172
9.5 使用 DELETE 删除行 173
9.7.2 簇索引机制 174
9.7.1 索引类型 174
9.7 使用索引 174
9.6 使用 TRUNCATE TABLE 清除表 174
9.7.3 非簇索引机制 175
9.7.4 簇索引和非簇索引的性能比较 176
9.7.5 设计索引 177
9.7.6 创建索引 177
9.7.7 有关索引的注意事项 178
9.8 视图 178
9.8.1 创建视图 178
9.8.2 将视图用做列安全措施 180
9.8.3 将视图用做安全措施 180
9.8.4 利用视图简化 SQL 181
9.8.5 使用视图更新数据 182
9.8.6 在视图中使用 WITH CHECK OPTION 标志 183
9.8.7 用 WITH ENCRYPTION 创建视图 184
9.8.8 视图信息的获取 185
9.9 本章小结 185
9.10 思考与练习 185
第十章 数据完整性 187
10.1 数据完整性分类 187
10.2 规则 187
10.2.1 创建规则 187
10.2.2 规则的使用方法 188
10.2.3 使用规则的限制条件 189
10.3 默认 189
10.3.1 创建默认 189
10.3.3 声明默认值 190
10.3.2 默认的使用方法 190
10.3.5 使用默认值 191
10.3.4 默认和默认值的使用限制 191
10.3.6 在 UPDATE 中使用默认值 192
10.4 查看规则和默认 192
10.5 约束 193
10.5.1 定义约束 193
10.5.2 UNIQUE 约束 195
10.5.3 CHECK 约束 195
10.5.4 PRIMARY KEY 约束 196
10.5.5 FOREIGN KEY 约束 197
10.5.7 删除约束 199
10.5.8 约束的使用原则 199
10.5.6 DEFAUTL 约束 199
10.6 数据完整性方法的比较 200
10.7 本章小结 201
10.8 思考与练习 201
第十一章 查询 202
11.1 pubs 数据库的内容 202
11.2 从表中选择数据 202
11.2.1 SQL 结果集 203
11.2.2 基于列的表达式 203
11.2.3 对 SELECT 列表中列名的操作 204
11.2.4 使用 DISTINCT 206
11.2.5 SELECT 207
11.2.6 用 WHERE 子句过滤行 208
11.2.8 升序排序和降序排序 213
11.2.7 利用 ORDER BY 对结果集排序 213
11.2.9 通过未出现在 SELECT 列表中的列排序 214
11.3 检索集合数据 215
11.3.1 利用 COUNT(*)来计算行数 216
11.3.2 集合函数和空值 216
11.3.3 利用 GROUP BY 求子集合 217
11.3.4 利用 HAVING 来筛选结果 218
11.3.5 工作表和集合函数 219
11.3.6 WITH CUBE 和 WITH ROLLUP 219
11.3.7 连接 222
11.4 子查询 224
11.4.1 带有 IN 的子查询 225
11.4.2 子查询和 EXISTS 226
11.4.3 NOT EXISTS 和 NOT IN 227
11.4.4 在 WHERE 子句中使用子查询和集合函数 228
11.5 UNION 229
11.6 INTO 230
11.7 COMPUTE 和 COMPUTE BY 231
11.7.1 COMPUTE 231
11.7.2 COMPUTE BY 232
11.8 本章小结 235
11.9 思考与练习 235
第十二章 存储过程 237
12.1 存储过程概述 237
12.3 创建和执行存储过程 238
12.2 存储过程的执行过程 238
12.3.2 执行存储过程 239
12.3.1 临时存储过程 239
12.3.3 远程存储过程 240
12.3.4 维护存储过程 240
12.4 存储过程与参数 241
12.4.1 使用输入参数 241
12.4.2 利用输入参数传递信息 242
12.4.3 输出参数 242
12.4.4 带参数运行 244
12.5 返回存储过程的状态 246
12.5.1 用 RETURN 语句定义返回值 246
12.5.3 SQL Server 状态码 247
12.5.2 捕获返回状态值 247
12.6 管理和优化存储过程 248
12.6.1 存储过程与事务 248
12.6.2 存储过程中的游标 250
12.6.3 利用存储过程结果集来插入数据 251
12.6.4 优化存储过程 251
12.6.5 存储过程调试技巧 252
12.7 存储过程中的对象依赖 252
12.8 本章小结 253
12.9 思考与练习 254
第十三章 触发器 255
13.1 触发器基础 255
13.2.1 触发器的执行 256
13.2 创建触发器 256
13.2.2 删除和修改触发器 257
13.2.3 显示触发器 259
13.2.4 使用触发器的注意事项 260
13.3 特殊的触发器语法 261
13.3.1 inserted 表和 deleted 表 261
13.3.2 inserted 表和 deleted 表的作用范围 262
13.3.3 IF update(column_name)语句 263
13.4 触发器与事务 265
13.5 触发器应用程序 267
13.5.1 级联式 DELETE 触发器 267
13.5.3 少量的 INSERT 触发器 269
13.5.2 嵌套的触发器 269
13.5.4 替换值触发器验证 272
13.5.5 维护派生的数据 274
13.6 本章小结 275
13.7 思考与练习 275
第十四章 事务管理 277
14.1 事务概述 277
14.2 事务编程 278
14.2.1 事务处理与批处理 279
14.2.2 保存点 281
14.2.3 嵌套的事务处理 282
14.3 事务与锁定 284
14.3.1 事务与触发器 284
14.3.2 @@TRANCOUNT 与隐式事务 285
14.3.3 触发器中的 ROLLBACK TRANSACTION 286
14.4 事务与存储过程 287
14.5 长时间运行的事务 291
14.6 本章小结 292
14.7 思考与练习 292
第十五章 游标 293
15.1 执行游标 293
15.1.1 服务器游标和默认结果集 294
15.1.2 服务器游标的优点 295
15.2 请求游标 295
15.3 声明游标 296
15.4 使用游标 298
15.4.1 打开游标 298
15.4.2 读取数据 299
15.4.3 关闭游标 300
15.4.4 删除游标 300
15.5 使用游标的技巧和注意事项 301
15.5.1 用游标修改数据 301
15.5.2 滚动功能 302
15.5.3 不敏感游标 303
15.5.4 避免使用游标 304
15.6 本章小结 304
15.7 思考与练习 305
第十六章 备份和恢复数据库 306
16.1 设计备份和恢复策略 306
16.1.1 分析实用性需求和恢复需求 306
16.1.3 选择恢复模型 307
16.1.2 计划灾难性恢复 307
16.2.1 简单恢复模型 308
16.2 使用恢复模型 308
16.2.2 完全恢复模型 310
16.2.3 批日志记录恢复模型 312
16.2.4 将数据库恢复到以前的状态 314
16.3 备份和恢复操作 315
16.3.1 数据库备份 315
16.3.2 增量数据库备份 317
16.3.3 事务日志备份 319
16.3.4 备份约束 320
16.4 备份和恢复系统数据库 320
16.4.1 备份 master 数据库 320
16.4.3 备份 model、msdb 和 distribution 数据库 321
16.4.2 恢复 master 数据库 321
16.4.4 恢复 model、msdb 和 distribution 数据库 322
16.5 管理备份 323
16.5.1 使用备份介质 323
16.5.2 口令保护 324
16.5.3 备份格式 324
16.5.4 校验备份 325
16.6 将数据库拷贝到其他服务器 325
16.7 本章小结 327
16.8 思考与练习 327
附录 A SQL Server 2000的向导 328
附录 B SQL Server 2000的函数 331