第一部分 SQL Server数据库基础 3
第1章 初识SQL Server 2008 3
1.1 SQL Server 2008的环境要求 3
1.1.1 本书所用的SQL Server 2008是什么版本 3
1.1.2 此版本对硬件环境的要求 3
1.1.3 此版本对软件环境的要求 4
1.2 SQL Server 2008在Windows 7操作系统上的安装过程 4
1.3 SQL Server 2008在Windows XP操作系统上的安装过程 15
1.4 SQL Server 2008 Management Studio的启动 17
1.5 “性能计数器注册表配置单元一致性”出错及其纠正 18
1.5.1 “性能计数器注册表配置单元一致性”出错的发生 18
1.5.2 “性能计数器注册表配置单元一致性”出错的原因 18
1.5.3 “性能计数器注册表配置单元一致性”出错的纠正 19
第2章 数据库的基础知识 20
2.1 数据库概述 20
2.1.1 数据、信息与数据处理 20
2.1.2 数据库、数据库系统与数据库管理系统 21
2.1.3 数据库技术的发展历程 22
2.1.4 数据库系统的体系结构 27
2.1.5 数据模型 28
2.2 概念模型(E-R模型) 31
2.2.1 概念模型的特点和基础知识 31
2.2.2 两个实体型之间的三种联系 32
2.2.3 概念模型的E-R图表示 33
2.3 关系数据库的基本概念 33
2.3.1 关系数据库概述 33
2.3.2 关系的完整性 37
2.4 关系模式的规范化 39
2.4.1 从一张学生成绩统计报表谈起 39
2.4.2 第一范式(1NF) 40
2.4.3 函数依赖 41
2.4.4 候选键的形式化定义与简单求解 42
2.4.5 候选键的一般求解理论和算法 43
2.4.6 第二范式(2NF) 45
2.4.7 第三范式(3NF) 46
2.4.8 在1NF基础上定义的BCNF范式 47
2.4.9 关系模式的形式化定义与关系规范化的基本原则 48
2.5 数据库的设计 49
2.5.1 需求分析 50
2.5.2 概念结构设计 53
2.5.3 逻辑结构设计 54
2.5.4 物理结构设计 56
2.5.5 数据库的实施 56
2.5.6 数据库的运行与维护 58
2.6 关系代数简介 58
2.6.1 两个关系的并运算 58
2.6.2 两个关系的差运算 59
2.6.3 两个关系的交运算 60
2.6.4 两个关系的乘运算 61
2.6.5 关系的投影 61
2.6.6 关系的选择 62
2.6.7 两个关系的条件连接 62
2.6.8 两个关系的等值连接和自然连接 62
2.6.9 两个关系的外连接 63
2.6.10 两个关系的除运算 63
第3章 创建和管理SQL Server数据库 68
3.1 SQL Server 2008数据库的基础知识 68
3.1.1 数据库中的常用对象 68
3.1.2 文件和文件组 69
3.1.3 系统数据库 71
3.2 数据库的创建 72
3.2.1 用SQL Server控制管理器创建数据库 72
3.2.2 用CREATE DATABASE命令创建数据库 73
3.2.3 CREATE DATABASE命令规范化的语法格式及程序示例 74
3.3 数据库的修改 77
3.3.1 用ALTER DATABASE命令修改数据库 77
3.3.2 用SQL Server控制管理器修改数据库 77
3.3.3 ALTER DATABASE命令规范化的语法格式及程序示例 78
3.4 数据库的查看和删除 81
3.4.1 查看数据库属性 81
3.4.2 删除数据库 85
第4章 创建和管理SQL Server数据表 86
4.1 表的概念 86
4.1.1 表的基础知识 86
4.1.2 表的种类 86
4.1.3 空值是什么 87
4.2 数据表的创建 87
4.2.1 用SQL Server控制管理器创建数据表 87
4.2.2 用CREATE TABLE命令创建数据表 93
4.2.3 CREATE TABLE命令规范化的语法格式 97
4.3 数据表的修改 99
4.3.1 用SQL Server控制管理器修改表结构 99
4.3.2 用ALTER TABLE命令修改表结构 102
4.3.3 针对列或约束的ALTER TABLE命令规范化的语法格式 105
4.4 数据表的查看与删除 107
4.4.1 查看表属性 107
4.4.2 删除数据表 108
4.5 添加和修改表的数据 110
4.5.1 数据的人工插入、修改与删除 110
4.5.2 查看表中的数据 111
4.5.3 用INSERT语句插入数据 112
4.5.4 用UPDATE语句更新数据 113
4.5.5 用DELETE语句删除数据 114
第5章 简明的数据查询 116
5.1 SELECT语句的语法格式 116
5.2 SELECT子句与条件查询 118
5.2.1 确定查询 121
5.2.2 模糊查询 123
5.2.3 范围查询 125
5.3 嵌套查询 126
5.3.1 带IN的嵌套查询 127
5.3.2 带比较运算符的嵌套查询 130
5.3.3 带ANY或ALL的嵌套查询 131
5.3.4 带EXISTS的嵌套查询 133
5.4 集合查询 138
5.4.1 并操作 138
5.4.2 交操作 139
5.4.3 差操作 140
5.5 连接查询 140
5.5.1 交叉连接查询 141
5.5.2 内连接查询 142
5.5.3 外连接查询 144
5.6 排序查询和TOP查询 146
5.6.1 排序查询 146
5.6.2 返回部分结果集的TOP查询 147
5.7 聚合函数与统计查询 150
5.7.1 常用的聚合函数 150
5.7.2 统计查询 150
5.8 分组查询与公用表表达式查询 152
5.8.1 分组查询 152
5.8.2 声明公用表表达式的查询 154
5.9 SELECT查询语句规范化的语法格式 156
5.9.1 SELECT查询语句的T-SQL语法格式 156
5.9.2 WITH子句 157
5.9.3 SELECT子句 165
5.9.4 INTO子句 166
5.9.5 FROM子句 167
5.9.6 WHERE子句 175
5.9.7 GROUP BY子句 175
5.9.8 HAVING短语 180
5.9.9 UNION运算 180
5.9.10 EXCEPT和INTERSECT运算 181
5.9.11 ORDER BY子句 182
5.9.12 COMPUTE子句 183
5.9.13 FOR子句 184
5.9.14 OPTION子句 187
第6章 视图 188
6.1 视图的基础知识 188
6.1.1 视图的概念 188
6.1.2 视图的作用 189
6.2 视图的创建 189
6.2.1 用SQL Server控制管理器创建视图 189
6.2.2 用CREATE VIEW命令创建视图 192
6.3 视图的管理 197
6.3.1 视图的修改 197
6.3.2 视图的删除 198
6.4 视图的应用 198
6.4.1 通过视图查询数据 198
6.4.2 通过视图更新数据 199
第7章 数据库的完整性管理 201
7.1 数据完整性综述 201
7.1.1 实体完整性 201
7.1.2 引用完整性 201
7.1.3 域完整性 201
7.1.4 用户定义完整性 201
7.2 约束 202
7.2.1 主键约束PREMARY KEY 202
7.2.2 外键约束FOREIGN KEY 203
7.2.3 唯一约束UNIQUE 203
7.2.4 检查约束CHECK 204
7.2.5 非空约束NOT NULL与默认值约束DEFAULT 205
7.3 规则 206
7.3.1 概述 206
7.3.2 规则的管理 206
7.3.3 功能相似结构不同的RULE与CHECK 208
第8章 数据库的备份与还原、数据的导出与导入 210
8.1 数据库的备份 210
8.1.1 数据库的备份类型 210
8.1.2 用SQL Server控制管理器实现数据库的备份 211
8.1.3 数据库备份设备的创建、查看与删除 215
8.1.4 用T-SQL语句实现数据库的备份 217
8.2 数据库的还原 219
8.2.1 数据库还原(恢复)方式的设定 219
8.2.2 用SQL Server控制管理器还原数据库 220
8.2.3 使用T-SQL语句进行数据库备份的还原 223
8.3 数据库的分离和附加 225
8.3.1 用SQL Server控制管理器分离数据库 225
8.3.2 用SQL Server控制管理器附加数据库 226
8.3.3 用T-SQL分离和附加数据库 228
8.4 数据的导出与导入 229
8.4.1 将数据库的数据导出到Excel电子表格 229
8.4.2 把Excel电子表格的数据导入到数据库 234
第二部分 SQL Server数据库进阶 243
第9章 T-SQL编程 243
9.1 变量、运算符和表达式 243
9.1.1 局部变量 243
9.1.2 全局变量 244
9.1.3 运算符和表达式 245
9.2 数据类型 247
9.2.1 整型类型 248
9.2.2 浮点类型 248
9.2.3 字符类型 249
9.2.4 日期时间类型 250
9.2.5 货币类型 251
9.3 BEGIN…END语句 252
9.4 IF…ELSE…语句 253
9.4.1 单分支IF语句 253
9.4.2 二分支IF…ELSE…语句 254
9.4.3 多分支IF…ELSE…语句 255
9.5 WHILE语句 256
9.5.1 最简单的WHILE语句 256
9.5.2 永真循环WHILE语句 259
9.5.3 同时输出多个结果的WHILE循环语句 260
9.6 CASE…END表达式语句 261
9.6.1 简单的CASE…END表达式语句 262
9.6.2 搜索式CASE…END表达式语句 262
9.6.3 CASE…END表达式语句在数据查询中的应用 263
9.7 WAITFOR语句 265
9.8 用户自定义函数 266
9.8.1 用户自定义函数的创建 266
9.8.2 用户自定义函数的查看 273
9.8.3 用户自定义函数的修改 276
9.8.4 用户自定义函数的删除 277
9.9 用户自定义过程 277
9.9.1 用户自定义过程的创建 277
9.9.2 用户自定义过程在数据修改中的应用 282
9.9.3 用户自定义过程的查看 284
9.9.4 用户自定义过程的修改 285
9.9.5 用户自定义过程的删除 287
9.10 常用标准函数 287
9.10.1 聚合函数 288
9.10.2 数学函数 289
9.10.3 日期时间函数 290
9.10.4 字符串函数 291
9.10.5 数据类型转换函数 293
9.10.6 格式判断函数 295
9.10.7 指定值替换空值函数 295
第10章 用T-SQL创建、管理数据表及其约束条件 296
10.1 用T-SQL创建数据表的综合应用 296
10.2 用T-SQL增加和删除数据表的约束 300
10.2.1 为表增加新的约束 300
10.2.2 约束的删除 301
10.3 用INSERT语句成批插入数据 302
10.4 用SELECT语句从源数据表创建新数据表 303
第11章 嵌套查询综述与表值函数应用 305
11.1 SELECT语句的执行过程 305
11.2 WHERE子句中的子查询 307
11.2.1 独立嵌套查询 307
11.2.2 相关嵌套查询 311
11.3 HAVING短语内的子查询 315
11.4 FROM子句中的子查询 316
11.5 FROM子句中表值函数的应用 317
11.6 各种嵌套子查询与表值函数的综合应用 318
第12章 索引 321
12.1 索引是什么 321
12.1.1 从《新华字典》说起 321
12.1.2 索引的基础知识 321
12.2 索引的分类 322
12.2.1 聚集索引 322
12.2.2 非聚集索引 322
12.2.3 唯一索引 322
12.2.4 索引和约束的关系 322
12.3 索引的创建 323
12.3.1 用SQL Server控制管理器创建索引 323
12.3.2 用T-SQL创建索引 328
12.4 索引的管理 335
12.4.1 索引信息的查看 335
12.4.2 索引的修改 337
12.4.3 索引的重命名 340
12.4.4 索引的删除 341
第13章 存储过程 342
13.1 存储过程概述 342
13.1.1 存储过程的分类 342
13.1.2 存储过程的优点 343
13.2 存储过程的创建 343
13.2.1 用SQL Server控制管理器创建存储过程 343
13.2.2 用T-SQL创建存储过程 345
第14章 游标 348
14.1 游标概述 348
14.1.1 游标及其特点 348
14.1.2 游标的分类 348
14.2 游标的声明和使用 348
14.2.1 声明游标 348
14.2.2 使用游标的步骤 350
14.3 游标变量与游标的综合应用 353
第15章 触发器 356
15.1 触发器概述 356
15.1.1 触发器的概念 356
15.1.2 触发器的作用 356
15.1.3 触发器的分类 357
15.1.4 INSERTED表和DELETED表 357
15.2 DML触发器 358
15.2.1 用SQL Server控制管理器创建DML触发器 358
15.2.2 用T-SQL创建DML触发器 359
15.2.3 用T-SQL创建IF UPDATE功能的DML触发器 366
15.2.4 使用嵌套的DML触发器 367
15.2.5 DML触发器与约束的关系 367
15.3 DDL触发器 368
15.3.1 用T-SQL创建DDL触发器的语法格式 368
15.3.2 用T-SQL创建DDL触发器的实例 369
15.4 触发器的查看、修改与重命名 371
15.4.1 触发器的查看 371
15.4.2 触发器的修改 374
15.4.3 触发器的重命名 374
15.5 触发器的禁用、启用和删除 374
15.5.1 用SQL Server控制管理器的操作方法 374
15.5.2 用ALTER TABLE语句来禁用或启用DML触发器 376
15.5.3 用T-SQL禁用或启用DDL触发器 377
15.5.4 触发器的删除 378
第16章 SQL Server安全管理 379
16.1 SQL Server的安全管理机制 379
16.2 数据库引擎的断开与连接 380
16.2.1 数据库引擎的断开 380
16.2.2 数据库引擎的连接 380
16.2.3 SQL Server身份验证的两种模式 382
16.2.4 SQL Server身份验证模式的设置 382
16.3 登录帐户管理 383
16.3.1 用SQL Server控制管理器管理登录帐户 383
16.3.2 用T-SQL管理登录帐号 387
16.3.3 用系统存储过程管理登录帐号 389
16.4 数据库用户管理 389
16.4.1 用SQL Server控制管理器管理数据库用户 390
16.4.2 用T-SQL管理数据库用户 393
16.5 角色管理 395
16.5.1 角色是什么 395
16.5.2 服务器角色 395
16.5.3 数据库角色 397
16.6 权限管理 402
16.6.1 权限管理概述 403
16.6.2 授予权限操作 407
16.6.3 不同权限用户SQL Server身份验证登录、对象权限的分析和验证 419
16.6.4 用户sa的SQL Server身份验证与Windows身份验证登录的异同 420
16.6.5 对数据库有所有权的一般用户与sa系统用户登录的重要不同之处 421
16.6.6 隐式授权的撤销 425
16.6.7 显式授权的撤销 427
16.6.8 GRANT数据库和数据库主体权限 428
16.6.9 GRANT服务器和服务器主体权限 430
附录 xk示例库数据清单和表结构 433
参考文献 435