第1章 数据库系统概述 1
1.1 数据和数据管理 1
1.2 数据管理技术的发展 2
1.2.1 人工管理阶段(20世纪50年代) 2
1.2.2 文件系统阶段(20世纪60年代) 2
1.2.3 数据库系统阶段(20世纪60年代后期) 3
1.3 数据库系统 5
1.4 数据库管理系统 7
1.4.1 DBMS的主要功能 7
1.4.2 DBMS的组成 7
1.4.3 常用的DBMS 9
练习题1 9
第2章 数据模型 10
2.1 什么是数据模型 10
2.1.1 三个世界及其关系 10
2.1.2 两类模型 11
2.2 概念模型 13
2.2.1 实体间的联系方式 13
2.2.2 实体-联系表示法 14
2.2.3 设计E-R图的基本步骤 16
2.3 DBMS支持的数据模型 17
2.3.1 数据模型的组成要素 17
2.3.2 3种基本的数据模型 17
2.4 数据库系统的体系结构 23
2.4.1 数据库系统模式的概念 23
2.4.2 数据库系统的三级组织结构 23
2.4.3 3个模式之间的两层映像 24
2.4.4 数据库系统的结构 26
练习题2 28
第3章 关系数据库 29
3.1 关系和关系数据库 29
3.1.1 关系的概念 29
3.1.2 关系数据库的概念 30
3.1.3 关系操作语言 30
3.2 关系代数 31
3.2.1 传统的集合运算 31
3.2.2 专门的关系运算 32
3.3 关系演算 37
3.3.1 元组关系演算 37
3.3.2 域关系演算 39
3.4 SQL简介 40
3.4.1 SQL概述 40
3.4.2 SQL语言的分类 41
3.4.3 SQL支持的标准和发展历史 41
练习题3 41
第4章 关系数据库规范化理论 43
4.1 为什么要对关系模式进行规范化 43
4.1.1 问题的提出 43
4.1.2 问题的解决 44
4.1.3 关系模式规范化概述 45
4.2 函数依赖 45
4.2.1 函数依赖的定义 45
4.2.2 函数依赖与属性关系 46
4.2.3 函数依赖的分类 46
4.2.4 Armstrong公理 47
4.2.5 闭包及其计算 48
4.2.6 函数依赖集的等价和覆盖 49
4.2.7 最小函数依赖集 50
4.2.8 确定候选码 51
4.3 关系模式的规范化 52
4.3.1 关系与范式 52
4.3.2 常用的几种范式 52
4.3.3 关系模式的规范化过程 56
4.4 关系模式分解的理论 57
4.4.1 模式分解的定义 57
4.4.2 无损分解的定义和性质 58
4.4.3 无损分解的检验算法 58
4.4.4 函数依赖保持性 60
4.4.5 模式分解算法 60
4.5 关系数据库规范化应用实例 62
练习题4 67
第5章 数据库设计 69
5.1 数据库设计概述 69
5.2 需求分析 70
5.2.1 需求分析的步骤 70
5.2.2 需求分析的方法 71
5.3 概念结构设计 74
5.3.1 概念结构设计的方法和步骤 74
5.3.2 局部E-R模型设计 76
5.3.3 总体E-R模型设计 77
5.4 逻辑结构设计 79
5.4.1 E-R模型向关系模型的转换 80
5.4.2 优化模型 81
5.4.3 设计适合DBMS的关系模式 82
5.5 物理结构设计 82
5.6 数据库的实施和维护 82
练习题5 83
第6章 SQL Server系统概述 85
6.1 SQL Server 2012系统简介 85
6.1.1 SQL Server的发展历史 85
6.1.2 SQL Server 2012的各种版本 86
6.1.3 SQL Server 2012的组成结构和主要管理工具 87
6.2 SQL Server的安装 89
6.3 SQL Server 2012的工具和实用程序 97
6.3.1 SQL Server管理控制器 97
6.3.2 SQL Server配置管理器 100
6.4 SQL Server的体系结构 100
6.4.1 SQL Server的客户机/服务器体系结构 101
6.4.2 SQL Server的总体架构 101
6.4.3 一个基本的SELECT查询的执行流程 102
练习题6 104
第7章 创建和删除数据库 105
7.1 数据库对象 105
7.2 系统数据库 105
7.3 SQL Server数据库的存储结构 106
7.3.1 文件和文件组 106
7.3.2 数据库的存储结构 107
7.3.3 事务日志 109
7.4 创建和修改数据库 109
7.4.1 创建数据库 109
7.4.2 修改数据库 110
7.5 重命名和删除数据库 114
7.5.1 重命名数据库 114
7.5.2 删除数据库 115
练习题7 117
第8章 创建和使用表 118
8.1 表的概念 118
8.1.1 什么是表 118
8.1.2 表中数据的完整性 118
8.2 创建表 119
8.3 修改表的结构 122
8.4 数据库关系图 124
8.4.1 建立数据库关系图 124
8.4.2 删除关系和数据库关系图 127
8.5 更改表名 127
8.6 删除表 128
8.7 记录的新增和修改 128
8.8 表的两种特殊类型的列 129
练习题8 132
第9章 T-SQL基础 133
9.1 T-SQL语句的执行 133
9.2 数据定义语言 134
9.2.1 数据库的操作语句 134
9.2.2 表的操作语句 139
9.3 数据操纵语言 141
9.3.1 INSERT语句 141
9.3.2 UPDATE语句 142
9.3.3 DELETE语句 142
9.4 数据查询语言 142
9.4.1 投影查询 143
9.4.2 选择查询 144
9.4.3 排序查询结果 144
9.4.4 使用聚合函数 145
9.4.5 连接查询 149
9.4.6 子查询 153
9.4.7 空值及其处理 160
9.5 关系数据库系统的查询优化 161
练习题9 164
第10章 T-SQL程序设计 167
10.1 标识符和注释 167
10.1.1 标识符的类型 167
10.1.2 使用标识符和同义词 167
10.1.3 注释 169
10.2 SQL Server的数据类型 169
10.2.1 数据类型概述 169
10.2.2 系统数据类型 170
10.2.3 用户定义数据类型 173
10.3 变量 175
10.3.1 局部变量 175
10.3.2 全局变量 177
10.4 运算符 179
10.4.1 算术运算符 179
10.4.2 赋值运算符 179
10.4.3 按位运算符 179
10.4.4 比较运算符 180
10.4.5 逻辑运算符 180
10.4.6 字符串连接运算符 181
10.4.7 一元运算符 181
10.4.8 运算符的优先级 182
10.5 批处理 182
10.5.1 批处理概述 182
10.5.2 GO命令 182
10.5.3 批处理的使用规则 184
10.6 控制流语句 185
10.6.1 BEGIN…END语句 185
10.6.2 IF…ELSE语句 186
10.6.3 CASE语句 186
10.6.4 WHILE语句 187
10.6.5 GOTO语句 188
10.7 异常处理 189
10.7.1 TRY…CATCH构造 189
10.7.2 THROW语句 190
10.7.3 RAISERROR语句 191
10.8 游标 191
10.8.1 游标的概念 192
10.8.2 游标的基本操作 192
10.8.3 使用游标 195
练习题10 198
第11章 索引和视图 200
11.1 索引 200
11.1.1 索引概述 200
11.1.2 创建索引 204
11.1.3 索引的查看与使用 210
11.1.4 修改索引 213
11.1.5 删除索引 215
11.2 视图 215
11.2.1 视图概述 215
11.2.2 创建视图 217
11.2.3 使用视图 222
11.2.4 视图定义的修改 226
11.2.5 查看视图的信息 228
11.2.6 视图的重命名和删除 229
11.2.7 索引视图 231
练习题11 233
第12章 数据完整性 234
12.1 数据完整性概述 234
12.1.1 为什么需要考虑数据完整性 234
12.1.2 SQL Server提供的强制数据完整性方法 234
12.2 约束 235
12.2.1 PRIMARY KEY约束 235
12.2.2 FOREIGN KEY约束 236
12.2.3 UNIQUE约束 237
12.2.4 CHECK约束 238
12.2.5 列约束和表约束 238
12.3 默认值 239
12.3.1 在创建表时指定默认值 239
12.3.2 使用默认对象 240
12.4 规则 243
12.4.1 创建规则 243
12.4.2 绑定规则 244
12.4.3 解除和删除规则 245
练习题12 245
第13章 事务处理和数据锁定 247
13.1 事务处理 247
13.1.1 事务概述 247
13.1.2 事务的分类 248
13.1.3 显式事务 248
13.1.4 自动提交事务 251
13.1.5 隐式事务 252
13.1.6 事务和异常处理 253
13.2 数据锁定 254
13.2.1 并发控制概述 254
13.2.2 SQL Server中的自动锁定 257
13.2.3 SQL Server中的自定义锁定 263
练习题13 272
第14章 函数和存储过程 276
14.1 函数 276
14.1.1 函数概述 276
14.1.2 内置函数 276
14.1.3 用户定义函数 280
14.2 存储过程 286
14.2.1 存储过程概述 286
14.2.2 存储过程的类型 287
14.2.3 创建存储过程 288
14.2.4 执行存储过程 290
14.2.5 存储过程的参数和返回值 292
14.2.6 存储过程的管理 297
练习题14 302
第15章 触发器 304
15.1 触发器概述 304
15.1.1 触发器的作用 304
15.1.2 触发器的种类 304
15.2 DML触发器 305
15.2.1 DML触发器概述 305
15.2.2 创建DML触发器 306
15.2.3 触发器的删除、禁用和启用 309
15.2.4 inserted表和deleted表 310
15.2.5 INSERT、UPDATE和DELETE触发器的应用 311
15.2.6 INSTEAD OF触发器 316
15.3 DDL触发器 319
15.3.1 创建DDL触发器 319
15.3.2 DDL触发器的应用 320
15.4 登录触发器 321
15.5 触发器的管理 322
15.5.1 查看触发器 322
15.5.2 修改触发器 324
练习题15 325
第16章 SQL Server的安全管理 326
16.1 SQL Server安全体系结构 326
16.2 SQL Server的身份验证模式和设置 327
16.2.1 SQL Server的身份验证模式 327
16.2.2 设置身份验证模式 329
16.3 SQL Server账号管理 330
16.3.1 SQL Server服务器登录账号管理 330
16.3.2 SQL Server数据库用户账号管理 334
16.4 权限和角色 338
16.4.1 权限 338
16.4.2 角色 341
16.5 架构 345
练习题16 346
第17章 数据文件安全和灾难恢复 347
17.1 数据文件安全概述 347
17.2 数据库备份和还原 348
17.2.1 数据库备份和还原概述 348
17.2.2 数据库备份和恢复过程 350
17.3 数据库的分离和附加 353
17.3.1 分离用户数据库 353
17.3.2 附加用户数据库 354
17.4 数据库镜像简介 355
17.5 数据库快照简介 356
17.6 日志传送简介 358
17.7 故障转移群集简介 360
17.8 AlwaysOn简介 361
练习题17 362
第18章 SQL Server数据访问技术 363
18.1 ADO.NET模型 363
18.1.1 ADO.NET简介 363
18.1.2 ADO.NET体系结构 363
18.1.3 ADO.NET数据库的访问流程 365
18.2 ADO.NET的数据访问对象 365
18.2.1 SqlConnection对象 365
18.2.2 SqlCommand对象 368
18.2.3 SqlDataReader对象 372
18.2.4 SqlDataAdapter对象 375
18.3 DataSet对象 377
18.3.1 DataSet对象概述 377
18.3.2 DataSet对象的属性和方法 378
18.3.3 Tables集合和DataTable对象 379
18.3.4 Columns集合和DataColumn对象 381
18.3.5 Rows集合和DataRow对象 382
练习题18 384
附录A 部分练习题的参考答案 386
附录B 上机实验题 392
参考文献 398