第1章 初学SQL Server 2005的问题 1
1.1 SQL Server 2005概述 1
1.1.1 什么是服务器和客户机 2
1.1.2 SQL是什么 3
1.1.4 SQL Server 2005的版本 4
1.1.3 SQL Server 2005的发展历史 4
1.2 SQL Server 2005平台 5
1.2.6 通知服务(Notification Services) 6
1.2.5 报表服务(Reporting Services) 6
1.2.1 数据库引擎 6
1.2.2 分析服务(Analysis Services) 6
1.2.3 集成服务(Integration Services) 6
1.2.4 复制 6
1.3.1 桌面型数据库与网络数据库 7
1.3 SQL Server 2005做什么 7
1.2.7 服务代理(Service Broker) 7
1.2.8 全文搜索 7
1.3.2 C/S模式与B/S模式 8
1.3.4 数据库与数据仓库 10
1.3.3 OLTP与OLAP 10
1.4.1 必备的数据库基础 11
1.4 学习SQL Server 2005需要什么基础 11
1.3.5 SQL Server 2005做什 11
1.4.2 必备的网络基础 15
1.6 习题 20
1.5 本章小结 20
2.1.1 SQL Server 2005的硬件环境需求 21
2.1 安装前的准备工作 21
第2章 安装SQL Server 2005 21
2.1.2 SQL Server 2005的软件环境需求 22
2.1.5 SQL Server 2005实例 23
2.1.4 SQL Server 2005的其他安装需求 23
2.1.3 SQL Server 2005的网络环境需求 23
2.1.6 本地系统账户与域用户账户 25
2.1.7 Windows身份验证模式与混合模式 29
2.2.1 安装Windows Installer 3.1 30
2.2 安装SQL Server 2005 30
2.2.2 安装MDAC 2.8 SP1 31
2.2.4 安装SQL Server 2005企业版 33
2.2.3 安装.NET Framework 2.0 33
2.2.5 安装SQL Server 2005客户机 40
2.3 服务器上的后台服务 41
2.3.6 SQLBrowser 42
2.3.5 MSDTSServer 42
2.3.1 MSSQLSERVER 42
2.3.2 SQLSERVERAGENT 42
2.3.3 MSSQLServerOLAPService 42
2.3.4 ReportServer 42
2.4.1 Management Studio 43
2.4 客户机上的管理工具 43
2.3.7 MSFTESQL 43
2.4.2 Visual Studio 2005 46
2.4.3 SQL Server配置管理器 47
2.4.4 通知服务命令提示 48
2.4.5 报表服务配置 49
2.4.6 SQL Server错误和使用情况报告 50
2.4.7 SQL Server外围应用配置器 51
2.4.9 数据库引擎优化顾问 52
2.4.8 SQL Server Profiler 52
2.6 习题 53
2.5 本章小结 53
3.1 SQL Server 2005网络的通信 55
第3章 配置SQL Server 2005网络 55
3.1.2 什么是IPC 56
3.1.1 进程和线程的奥秘 56
3.1.5 SQL Server 2005支持的网络协议 57
3.1.4 什么是网络库 57
3.1.3 常见的IPC机制 57
3.3.1 本地网络案例环境 58
3.3 配置本地共享内存协议的SQL Server 2005网络 58
3.2 SQL Server 2005网络中的名称 58
3.2.1 服务器名称 58
3.2.2 SQL Server 2005实例名 58
3.2.3 服务器别名 58
3.3.2 配置共享内存的SQL Server 2005服务器 59
3.3.3 配置共享内存的SQL Server 2005客户机 60
3.4.2 配置TCP/IP的SQL Server 2005服务器 61
3.4.1 TCP/IP网络案例环境 61
3.3.4 测试本地共享内存的SQL Server 2005网络 61
3.4 配置TCP/IP协议的SQL Server 2005网络 61
3.4.3 配置TCP/IP的SQL Server 2005客户机 63
3.5.1 命名管道网络案例环境 66
3.5 配置命名管道协议的SQL Server 2005网络 66
3.4.4 测试TCP/IP的SQL Server 2005网络 66
3.5.3 配置命名管道的SQL Server 2005客户机 67
3.5.2 配置命名管道的SQL Server 2005服务器 67
3.5.4 测试命名管道协议的SQL Server 2005网络 70
3.6.2 不同的网络协议效率有什么差别 71
3.6.1 怎样选择网络协议 71
3.6 配置SQL Server 2005网络常见问题 71
3.6.3 什么是隐藏实例(HideInstance) 72
3.6.4 什么是强制加密(ForceEncryption) 73
3.8 习题 75
3.7 本章小结 75
4.1.1 什么是SQL Server 2005服务器注册 76
4.1 注册SQL Server 2005服务器 76
第4章 管理SQL Server 2005服务器 76
4.1.3 一个注册SQL Server 2005服务器的实例 77
4.1.2 什么情况下需要注册 77
4.1.4 排除常见的注册故障 80
4.2.2 在【控制面板】中暂停服务器 82
4.2.1 什么是SQL Server 2005服务器暂停 82
4.1.5 总结SQL Server 2005服务器注册的方法 82
4.2 暂停SQL Server 2005服务器 82
4.2.3 在【Management Studio】中暂停服务器 83
4.2.4 在【SQL Server配置管理器】中暂停服务器 84
4.3.2 在【控制面板】中关闭服务器 85
4.3.1 暂停与关闭 85
4.3 关闭SQL Server 2005服务器 85
4.3.3 在【Management Studio】中关闭服务器 86
4.3.4 在【SQL Server配置管理器】中关闭服务器 87
4.4.2 在【Management Studio】中启动服务器 88
4.4.1 在【控制面板】中启动服务器 88
4.4 启动SQL Server 2005服务器 88
4.5 配置SQL Server 2005服务器 90
4.4.3 在【SQL Server配置管理器】中启动服务器 90
4.5.1 配置【常规】选项卡 91
4.5.2 配置【内存】选项卡 92
4.5.3 配置【处理器】选项卡 93
4.5.4 配置【安全性】选项卡 94
4.5.5 配置【连接】选项卡 96
4.5.6 配置【数据库设置】选项卡 97
4.5.7 配置【高级】选项卡 100
4.5.8 配置【权限】选项卡 101
4.6.1 在【事件查看器】中查看服务器的奥秘 102
4.6 SQL Server 2005服务器的奥秘 102
4.6.2 在【错误日志】中查看服务器的奥秘 105
4.6.3 在【Management Studio】中查看服务器的奥秘 109
4.8 习题 110
4.7 本章小结 110
5.1 SQL Server 2005服务器的组成 111
第5章 SQL Server 2005体系结构 111
5.2.1 数据库引擎的工作流程 112
5.2 数据库引擎的体系结构 112
5.2.2 数据库引擎的组成部分 114
5.3.2 查询语句是如何被优化的 115
5.3.1 SQL语句是如何执行的 115
5.3 查询处理器的体系结构 115
5.3.3 执行计划 118
5.3.5 并行查询 119
5.3.4 存储过程和触发器的意义 119
5.4.2 内存的结构 120
5.4.1 内存和性能的关系 120
5.4 内存的体系结构 120
5.4.3 进程地址空间 121
5.4.4 动态内存管理 122
5.5 线程(CPU)的体系结构 123
5.4.5 最小内存和最大内存的意义 123
5.5.2 线程池的意义 124
5.5.1 SQL Server 2005的线程和纤程 124
5.6.2 逻辑I/O与物理I/O 125
5.6.1 I/O数据与内存缓存 125
5.5.3 线程的执行优先级 125
5.6 I/O的体系结构 125
5.7 SQL Server 2005数据库的体系结构 126
5.6.4 异步I/O 126
5.6.3 散播-聚集I/O 126
5.7.2 从物理角度看SQL Server 2005数据库 127
5.7.1 从逻辑角度看SQL Server 2005数据库 127
5.8.1 数据文件是如何存储的 128
5.8 SQL Server 2005的数据文件 128
5.8.3 数据页的结构 129
5.8.2 数据页的类型 129
5.8.5 区 130
5.8.4 数据行超出8KB如何处理 130
5.9.1 日志文件的作用 131
5.9 SQL Server 2005的日志文件 131
5.9.4 什么是文件组 132
5.9.3 日志文件的结构 132
5.9.2 日志文件的特点 132
5.10.3 msdb系统数据库 133
5.10.2 model系统数据库 133
5.10 SQL Server 2005系统数据库 133
5.10.1 master系统数据库 133
5.10.5 mssqlsystemresource(资源)系统数据库 134
5.10.4 tempdb系统数据库 134
5.12 习题 135
5.11 本章小结 135
6.1.1 查看数据库的状态 136
6.1 数据库状态 136
第6章 管理SQL Server 2005数据库 136
6.1.2 数据库状态的含义 138
6.2.1 查看数据库文件的状态 139
6.2 数据库文件状态 139
6.2.2 数据库文件状态的含义 140
6.3.1 规划数据库 141
6.3 设计用户数据库 141
6.3.2 OLTP数据库的设计 142
6.3.3 OLAP数据库的设计 143
6.3.5 数据库的完整性设计 144
6.3.4 数据库的规范化设计 144
6.4.2 创建用户数据库 146
6.4.1 用户数据库的命名规则 146
6.4 创建用户数据库 146
6.5.1 查看数据库的基本信息 149
6.5 配置用户数据库 149
6.5.2 更改数据库的所有者 150
6.5.3 调整数据库文件的增长属性 152
6.5.4 限制用户对数据库的访问 153
6.5.6 配置数据库的排序规则 154
6.5.5 配置数据库的故障恢复模型 154
6.5.7 页验证设置 155
6.5.8 设置数据库的统计信息选项 156
6.5.9 给数据库添加文件 157
6.6.1 分离用户数据库 158
6.6 分离和附加用户数据库 158
6.6.2 附加用户数据库 160
6.7.1 脱机用户数据库 162
6.7 脱机和联机用户数据库 162
6.7.2 联机用户数据库 163
6.8.2 设置自动收缩数据库 164
6.8.1 SQL Server 2005如何收缩数据库 164
6.8 收缩用户数据库和文件 164
6.8.3 手动收缩数据库 165
6.8.4 手动收缩数据库文件 166
6.9 删除用户数据库 168
6.11.1 如何降低日志文件的空间 169
6.11 疑难解析 169
6.10 本章小结 169
6.12 习题 171
6.11.3 为什么tempdb数据库不可以恢复 171
6.11.2 数据库文件的命名必须以mdf,ndf和ldf为扩展名吗 171
7.1 SQL Server 2005的数据类型 172
第7章 管理SQL Server 2005表 172
7.1.2 SQL Server 2005基本数据类型 173
7.1.1 SQL Server 2005数据类型的分类 173
7.2 NULL的含义 174
7.3.2 按照表的用途分类 175
7.3.1 按照数据存储的时间分类 175
7.3 SQL Server 2005表的类型 175
7.4 创建表 176
7.5 修改表结构 178
7.6 删除表 179
7.8.1 使用NULL值需要注意什么 180
7.8 疑难解析 180
7.7 本章小结 180
7.8.3 IDENTITY列有什么意义 181
7.8.2 表中的数据显示顺序就是物理存储顺序吗 181
7.9 习题 182
7.8.4 为什么用INSERT语句插入数据无法成功 182
8.1.1 什么是Transact-SQL 183
8.1 Transact-SQL概述 183
第8章 Trarsact-SQL基础 183
8.1.3 Transact-SQL的数据对象命名方法 184
8.1.2 Transact-SQL的语法约定 184
8.1.4 什么是Schema(架构) 185
8.1.5 Transact-SQL的注释 187
8.2.2 位型 188
8.2.1 整数型 188
8.2 Transact-SQL数据类型 188
8.2.8 Unicode字符串型 189
8.2.7 字符串型 189
8.2.3 精确数字型 189
8.2.4 货币型 189
8.2.5 近似数字型 189
8.2.6 日期时间型 189
8.3.2 位运算符 190
8.3.1 算术运算符 190
8.2.9 二进制型 190
8.2.10 其他数据类型 190
8.3 Transact-SQL运算符 190
8.3.5 字符串连接运算符 191
8.3.4 逻辑运算符 191
8.3.3 比较运算符 191
8.4.1 全局变量 192
8.4 Transact-SQL变量 192
8.3.6 赋值运算符 192
8.3.7 运算符的优先级 192
8.4.2 局部变量 193
8.5.1 常见的常量定义格式 195
8.5 Transact-SQL常量 195
8.5.2 常见的常量使用方法 197
8.6.2 日期和时间函数 198
8.6.1 聚合函数 198
8.6 Transact-SQL函数 198
8.6.3 数学函数 199
8.7.1 表达式的组合 200
8.7 Transact-SQL表达式 200
8.6.4 字符串函数 200
8.9 习题 201
8.8 本章小结 201
8.7.2 表达式的结果 201
9.1.1 学生表t_student的设计 203
9.1 设计实例数据库 203
第9章 用Transact-SQL操作数据 203
9.1.2 课程表t_course的设计 204
9.1.4 成绩表t_result的设计 205
9.1.3 教学表t_teaching的设计 205
9.2.1 直接创建实例数据库 206
9.2 操作实例数据库的结构 206
9.2.2 用Create Database创建实例数据库 207
9.2.3 用Alter Database修改实例数据库结构 209
9.2.4 用Drop Database删除实例数据库 212
9.2.5 自动生成数据库操作的Transact-SQL脚本 213
9.3.1 用Create Table语句创建表 218
9.3 操作表结构 218
9.3.2 用Alter Table语句修改表结构 222
9.4.1 INSERT语句的语法 227
9.4 用INSERT语句录入数据 227
9.3.3 用Drop Table语句删除表 227
9.4.2 用INSERT语句录入数据的实例 228
9.5.1 UPDATE语句的语法 229
9.5 用UPDATE语句更新数据 229
9.5.2 用UPDATE语句更新数据的实例 230
9.6.2 用DELETE删除数据的实例 231
9.6.1 DELETE语句的语法 231
9.6 用DELETE语句删除数据 231
9.7 本章小结 232
9.6.3 用Truncate Table删除整表的数据 232
9.8 习题 233
10.1 附加实例数据库 234
第10章 用Transact-SQL查询数据 234
10.2.1 选择当前工作数据库 235
10.2 查询工具的使用 235
10.2.2 更改查询显示结果 236
10.2.3 什么是执行计划 237
10.2.5 在编辑器中设计查询 238
10.2.4 什么是客户端统计信息 238
10.4.1 查询表中所有的记录 240
10.4 常见的查询语句 240
10.3 查询语句的语法结构 240
10.4.2 查询表中所有记录的指定字段 241
10.4.4 不允许查询结果中显示重复记录 242
10.4.3 允许查询结果中显示重复记录 242
10.4.5 指定查询前n行记录 243
10.4.7 带表达式的查询 244
10.4.6 指定查询记录数的百分比 244
10.4.8 更改列名显示的查询 245
10.5.2 WHERE中的关系运算符 246
10.5.1 WHERE条件查询的语法结构 246
10.5 WHERE条件查询 246
10.5.5 常见的WHERE查询实例 247
10.5.4 WHERE中的特殊运算符 247
10.5.3 WHERE中的逻辑运算符 247
10.6.2 ORDER BY子句的结构 252
10.6.1 ORDER BY排序查询的语法结构 252
10.6 ORDER BY排序查询 252
10.7.1 GROUP BY分组查询的语法结构 253
10.7 GROUP BY分组查询 253
10.6.3 ORDER BY排序查询实例 253
10.7.3 GROUP BY分组查询实例 254
10.7.2 GROUP BY子句的结构 254
10.9 INTO查询 255
10.8.2 HAVING筛选查询实例 255
10.8 HAVING筛选查询 255
10.8.1 HAVING筛选查询的语法结构 255
10.10 SELECT联结查询 256
10.10.1 SELECT联结查询的语法结构 256
10.9.1 INTO查询的语法结构 256
10.9.2 INTO查询实例 256
10.10.3 笛卡儿积查询 257
10.10.2 SELECT联结查询的分类 257
10.10.5 自然联结查询 258
10.10.4 等值联结查询 258
10.10.7 内联结查询 259
10.10.6 自身联结查询 259
10.10.8 左外联结查询 260
10.10.10 全外联结查询 261
10.10.9 右外联结查询 261
10.11.2 什么是SELECT嵌套子查询 262
10.11.1 什么是SELECT嵌套查询 262
10.11 SELECT嵌套查询 262
10.11.3 简单嵌套查询 263
10.11.4 in嵌套查询 264
10.11.5 some嵌套查询 265
10.11.6 all嵌套查询 266
10.12 本章小结 268
10.11.7 exists嵌套查询 268
10.13 习题 269
11.1.1 表上必须建立索引吗 270
11.1 索引基础知识 270
第11章 管理SQL Server 2005索引 270
11.1.5 创建的索引一定会被使用吗 271
11.1.4 需要手工维护索引吗 271
11.1.2 什么时候需要在表上建立索引 271
11.1.3 为什么索引可以加快查询速度 271
11.2.1 聚簇索引 272
11.2 SQL Server 2005的索引类型 272
11.1.6 索引对什么样的操作有用 272
11.3.2 堆结构 273
11.3.1 存储索引数据的单位 273
11.2.2 非聚簇索引 273
11.2.3 惟一索引 273
11.3 索引中数据的存储 273
11.3.3 B+树结构 274
11.4.2 怎样知道索引是否被使用 275
11.4.1 为什么要设计索引 275
11.3.4 知道表和索引的存储结构 275
11.4 设计索引 275
11.4.3 设计索引的任务 276
11.4.4 设计索引的基本方法 277
11.4.5 什么情况下创建聚簇索引 278
11.4.6 什么情况下创建非聚簇索引 279
11.5.1 创建索引之前 280
11.5 创建索引 280
11.5.3 创建索引测试实例表 281
11.5.2 什么是联机创建索引 281
11.5.4 创建聚簇索引 282
11.5.5 创建非聚簇索引 287
11.5.6 创建惟一索引 292
11.5.7 用Create Index创建索引 293
11.6.1 在SQL Server Management Studio中修改索引 295
11.6 修改索引 295
11.6.2 用Alter Index修改索引 297
11.6.3 索引碎片检测 298
11.6.4 索引重组 301
11.6.5 索引重建 303
11.7.1 系统视图sys.indexes 305
11.7 查询索引信息 305
11.7.3 系统视图sys.stats 306
11.7.2 系统视图sys.index_columns 306
11.7.5 系统函数sys.dm_db_index_operational_stats 307
11.7.4 系统函数sys.dm_db_index_physical_stats 307
11.7.6 系统函数sys.dm_db_index_usage_stats 308
11.8.1 删除索引之前 309
11.8 删除索引 309
11.8.2 在SQL Server Management Studio中删除索引 310
11.8.3 用Drop Index删除索引 311
11.9 本章小结 312
11.10 习题 313
12.1.1 视图是什么 314
12.1 视图 314
第12章 其他数据对象 314
12.1.4 SQL Server 2005视图的分类 315
12.1.3 视图有没有数据 315
12.1.2 视图有什么作用 315
12.1.6 定义视图的基本原则 316
12.1.5 SQL Server 2005如何执行视图 316
12.1.7 创建标准视图 317
12.1.8 查询标准视图的数据 320
12.1.9 修改视图 321
12.1.10 删除视图 322
12.2.1 统计信息是什么 323
12.2 统计信息 323
12.2.3 谁在维护统计信息 324
12.2.2 哪些数据对象有统计信息 324
12.2.4 读懂统计信息 325
12.2.5 及时更新统计信息的意义 328
12.3.2 创建同义词的权限 329
12.3.1 同义词是什么 329
12.3 同义词 329
12.3.3 创建同义词 330
12.3.4 删除同义词 332
12.5 习题 333
12.4 本章小结 333
13.1 什么是数据完整性 334
第13章 数据完整性 334
13.1.2 域完整性 335
13.1.1 实体完整性 335
13.2.1 什么是规则 336
13.2 在SQL Server 2005中如何实现数据完整性 336
13.1.3 参照完整性 336
13.1.4 用户定义完整性 336
13.2.2 什么是默认值 337
13.3.1 用Create Rule语句创建规则 339
13.3 创建和管理规则 339
13.2.3 什么是约束 339
13.3.2 将规则绑定到列 341
13.3.3 解除列上绑定的规则 343
13.4.1 创建默认值对象 344
13.4 创建和管理默认值对象 344
13.4.2 将默认值对象绑定到列 346
13.4.3 解除列上绑定的默认值对象 347
13.5.1 创建约束的Transact-SQL语句 348
13.5 创建和管理约束 348
13.5.2 创建NOT NULL(非空)约束 350
13.5.4 创建外键约束 351
13.5.3 创建主键约束 351
13.5.5 创建惟一约束 353
13.5.6 创建检查约束 354
13.7 习题 355
13.6 本章小结 355
14.1 SQL Server 2005的安全性机制 356
第14章 管理SQL Server 2005安全 356
14.1.3 SQL Server 2005服务器的安全机制 357
14.1.2 网络传输的安全机制 357
14.1.1 SQL Server 2005客户机的安全机制 357
14.2 管理服务器的安全性 358
14.1.5 数据对象的安全机制 358
14.1.4 数据库的安全机制 358
14.2.1 更改服务器的身份验证机制 359
14.2.2 创建服务器账号(登录名) 360
14.2.4 服务器角色 364
14.2.3 密码复杂性策略 364
14.3.1 管理数据库架构 366
14.3 管理数据库的安全性 366
14.3.2 管理数据库用户 367
14.3.3 管理数据库角色 369
14.3.4 修改数据库用户的默认架构 370
14.4.2 给数据库用户授予对象权限 371
14.4.1 对象权限 371
14.4 管理数据对象的安全性 371
14.6 习题 372
14.5 本章小结 372
15.1.1 无处不在的数据危险 373
15.1 备份与恢复 373
第15章 备份、恢复与维护 373
15.1.2 什么是备份 374
15.2.2 先写日志文件还是先写数据文件 375
15.2.1 日志文件对数据库是必需的吗 375
15.1.3 什么是恢复 375
15.2 日志文件 375
15.3.1 完整恢复模型 376
15.3 SQL Server 2005数据库的3种恢复模型 376
15.3.2 大容量日志记录恢复模型 378
15.3.4 如何选择数据库的恢复模型 379
15.3.3 简单恢复模型 379
15.4.5 如何选择备份和恢复类型 380
15.4.4 文件组备份和恢复 380
15.4 SQL Server 2005的备份和恢复类型 380
15.4.1 完全数据库备份和恢复 380
15.4.2 差异数据库备份和恢复 380
15.4.3 事务日志备份和恢复 380
15.5.1 备份方案实施 383
15.5 案例:完全数据库备份与恢复 383
15.5.2 恢复方案实施 386
15.6.1 备份方案实施 388
15.6 案例:完全+日志数据库备份与恢复 388
15.6.2 恢复方案实施 389
15.7 案例:完全+差异+日志数据库备份与恢复 391
15.7.1 备份方案实施 392
15.7.2 恢复方案实施 393
15.8 案例:从BAK文件恢复数据库 396
15.9 案例:数据库维护 399
15.10 本章小结 404
15.11.4 是否需要备份tempdb系统数据库 405
15.11.3 什么时候需要备份master系统数据库 405
15.11 疑难解析 405
15.11.1 检查点有什么作用 405
15.11.2 为什么无法执行差异备份 405
15.12 习题 406