本书从数据库的基本理论知识出发,通过丰富的实例介绍数据库的基本操作、管理、维护、设计过程以及开发应用等。全书分为五篇。前两篇为基础理论篇、数据库设计理论,主要介绍数据库的基本原理与基础知识,以及数据模型相关理论,数据库的设计优化理论以及数据库的设计与实施过程;第三篇介绍数据库安全保护理论和操作;第四篇为基础应用篇,介绍SQL Server 2012的基本功能及操作。第五篇为高级应用篇,详细介绍了T-SQL的编程知识。每章还配有大量的操作实例和习题,凡是加了底纹的代码,都可以直接在查询窗口运行。附录中还配有十五个实验及一个课程作业,可作为实验课的任务。本书可作为大中专院校本科生或研究生相关专业网络数据库、数据库应用、数据库原理等课程的教材,可根据专业需要选择部分篇章进行教学,其它的篇章也为学生自学或提高的内容。也可供从事计算机软件开发与应用的科研人员、工程技术人员以及其他有关人员参考。对于非计算机专业的学生,建议先讲解基础应用篇,再选讲前面的理论篇。对于重SQL Server操作的课程,可以只讲基础应用篇和高级应用篇,基本包含了项目开发所需的数据库知识。对于重数据库原理的课程,可以让学生边自学基础应用篇,边讲解前三篇的内容。
前 言数据库技术是计算机科学技术中发展快的领域之一,也是应用广泛的技术之一,它已成为计算机信息管理系统与应用系统的核心技术和重要基础。数据库技术从20世纪60年代中期产生到今天已有近六十年的历史,经历了三代演变,造就了C.W.Bachman、E.F.Codd和James Gray三位图灵奖获得者;发展了以数据建模和DBMS(数据库管理系统)核心技术为主、内容丰富的一门学科;带动了一个巨大的软件产业DBMS产品及其相关工具和解决方案,五十多年来的辉煌。从70年代后期开始,国外各大学先后把数据库列为计算机科学与技术专业的一门重要课程。我国各高等院校从80年代开始,也把数据库作为计算机专业的主要课程之一,83年教育部部属高校计算机科学与技术专业教学方案将数据库系统原理列为四年制本科的必修课程。目前,数据库系统原理及应用已经成为计算机科学技术及其相关专业的专业基础课程。针对数据库技术的进展和我国数据库应用水平的提高,在借鉴前人经验和总结实际教学的前提下,并顺应数据库应用的发展,我们对《数据库系统原理及应用》进行了改版。与第1版相比,第二版中教学和练习平台换成了SQL Server 2012,并且将例子统一成了xsxk的数据库的操作,这样方便读者模仿,还有少量例子使用比较经典数据库pubs,为了方便读者练习,我们将这两个数据库的结构和部分数据列举在附录中;每章还配有一定数量的习题以帮助读者加深理解,大部分章节配了操作实例,凡是加了底纹的代码,都可以直接在查询窗口运行。附录中还配有十五个实验及一个课程作业,可作为上机实验的任务和期末课程作业,减轻老师的工作量。通过参考国内外的新文献,我们还将一些概念和名称进行了修改,或者并列地列举了不同的表述,这样当读者在阅读别的文献时,不至于迷茫或误会。另外,我们对全书的模块进行了重新划分,内容也进行重新分配,显得更精细和合理,也方便教学时对内容的选择。全书分为五篇。第1篇为基础理论篇,主要介绍数据库的基本原理与基础知识,以及数据模型相关理论,重点介绍关系数据相关理论及查询优化及其相关理论。第二篇,数据库的设计优化理论以及数据库的设计与实施过程,从这一章,读者将学到数据库分析设计的相关知识,并能完成简单的数据库的设计与实现。第三篇介绍数据库系统安全与保护的相关原理以及实现安全与保护的相关操作,如:数据库的安全管理、数据的完整性、备份和恢复管理功能,学完这章,读者对数据库原理就有了基本的认识了,而且懂得了数据库日常管理的知识。第四篇为基础应用篇,以SQL Server 2012为例,介绍SQL Server 2012的基本功能及操作、使用Transact-SQL(以下简称:T-SQL)语句创建和管理数据库、表、索引和视图,并重点介绍了各种查询,使初学者能快速了解数据库的主要操作。第五篇为高级应用篇,详细介绍了T-SQL的编程基础、创建与管理存储过程、触发器和自定义函数及游标等编程知识,学完这一章读者将懂得数据库开发的知识。每章还配有一定数量的习题以帮助读者加深理解,大部分章节配了大量的操作实例,凡是加了底纹的代码,都可以直接在查询窗口运行。我们在本书的编写过程中,查阅了国内外大量数据库研究成果和文献,力求把数据库领域的新理论、新技术和新方法纳入本书,使之既包括数据库系统的基本理论、概念和技术,也能够反映数据库领域的新进展。但是,由于才疏学浅,时间紧迫,不足之处在所难免,我们会在每次重印时,及时改正已发现的错误,真心希望使用本书的老师和同学不吝指教。我们的Email地址:wlp@hunnu.edu.cn。编者
目录
第一篇
基础理论 1
第1章
数据库技术概述 2
1.1 数据库的相关概念 2
1.1.1 数据 2
1.1.2 数据库 2
1.1.3 数据库管理系统 3
1.1.4 数据库系统 4
1.1.5 数据库技术 4
1.2 数据库管理系统概述 5
1.2.1 数据库管理系统的目标 5
1.2.2 数据库管理系统的功能 6
1.2.3 用户访问数据库的过程 7
1.2.4 数据库管理和数据库管理员 8
1.3 数据库系统概述 9
1.3.1 数据库系统的微观结构 10
1.3.2 数据库系统的宏观结构 13
1.4 数据库技术概述 15
1.4.1 数据库技术的发展历史 15
1.4.2 *数据库技术的研究与应用领域和发展方向 18
1.5 习题 22
第2章
数据模型 23
2.1 数据描述 23
2.1.1 数据的三种范畴 23
2.1.2 实体间的联系 25
2.1.3 三种世界的概念转换 26
2.2 数据模型 27
2.2.1 数据模型概述 27
2.2.2 数据模型的三要素 28
2.3 概念模型与E-R表示方法 29
2.3.1 概念模型的基本概念 29
2.3.2 概念模型的E-R表示方法 30
2.3.3 概念数据模型实例 31
2.4 逻辑数据模型 33
2.4.1 层次模型 34
2.4.2 网状模型 35
2.4.3 关系模型 37
2.4.4 面向对象模型 39
2.5 习题 40
第3章
关系数据库理论及查询优化 41
3.1 关系数据库 41
3.1.1 关系模型的组成 41
3.1.2 关系模式的形式化定义 41
3.2 关系代数 42
3.2.1 五种基本运算 43
3.2.2 关系代数的其他操作 45
3.3 *关系查询优化 47
3.3.1 关系系统及其查询优化 47
3.3.2 查询优化的一般准则 49
3.3.3 关系代数等价变换规则 50
3.3.4 关系代数表达式的优化算法 51
3.4 习题 53
第二篇
设计理论 54
第4章
关系模式的规范化 55
4.1 问题的提出 55
4.1.1 关系模式 55
4.1.2 关系 55
4.1.3 插入、删除、更新异常 57
4.2 关系模式的函数依赖 57
4.2.1 函数依赖 58
4.2.2 键(Key) 59
4.2.3 函数依赖的逻辑蕴含 60
4.3 关系模式的规范化 66
4.3.1 第一范式(1NF) 66
4.3.2 第二范式(2NF) 67
4.3.3 第三范式(3NF) 68
4.3.4 BCNF范式(BCNF) 69
4.3.5 多值依赖与第四范式 70
4.3.6 各范式之间的关系 72
4.4 *关系模式的分解特性 73
4.4.1 关系模式的分解 73
4.4.2 分解的无损连接性 74
4.4.3 关系模式分解算法 79
4.5 *关系模式的优化 83
4.5.1 水平分解 84
4.5.2 垂直分解 84
4.6 习题 85
第5章
数据库的设计与实施 87
5.1 数据库设计概述 87
5.1.1 数据库设计的特点 87
5.1.2 数据库设计方法 88
5.1.3 数据库设计的步骤 89
5.2 数据库规划 90
5.3 需求分析 91
5.3.1 需求分析的任务 91
5.3.2 需求分析的方法 91
5.3.3 需求分析的步骤 92
5.4 概念结构设计 95
5.4.1 设计各局部应用的E-R模型 96
5.4.2 全局E-R模型的设计 97
5.5 逻辑结构设计 98
5.5.1 E-R图向关系模型的转换 99
5.5.2 关系模型向特定的RDBMS的转换 100
5.5.3 逻辑模式的优化 100
5.5.4 外模式的设计 102
5.6 物理结构设计 103
5.6.1 关系模式存取方法选择 104
5.6.2 确定系统的存储结构 107
5.7 数据库实施 108
5.8 数据库运行和维护 109
5.9 数据库设计实例 图书管理系统数据库设计 110
5.10 习题 112
第三篇
安全与保护理论 113
第6章
数据库的安全性控制 114
6.1 数据库安全性控制概述 114
6.2 SQL Sever的安全性措施概述 115
6.3 SQL Server身份验证 116
6.3.1 身份验证概述 116
6.3.2 身份验证方式设置 117
6.3.3 登录名管理 119
6.4 SQL Server数据库身份验证 122
6.5 SQL Server数据库对象安全验证 123
6.5.1 角色 124
6.5.2 授权的主体 126
6.5.3 架构 127
6.5.4 授权的安全对象 128
6.5.5 权限操作 129
6.5.6 命令行方式进行权限管理 131
6.6 习题 133
第7章
数据完整性 134
7.1 完整性约束条件 134
7.2 完整性控制 136
7.3 SQL Sever的完整性的实现 139
7.4 习题 143
第8章
事务 144
8.1 事务的概念 144
8.2 事务调度 146
8.3 事务隔离级别 148
8.4 SQL Server 中的事务定义 151
8.5 习题 153
第9章
并发控制 154
9.1 封锁技术 154
9.2 事务隔离级别与封锁规则 155
9.3 封锁的粒度 156
9.4 *封锁带来的问题 158
9.5 *两段锁协议 159
9.6 *乐观并发控制与悲观并发控制 160
9.7 *SQL Server的并发控制 160
9.8 习题 162
第10章
数据库的恢复 163
10.1 数据库恢复技术 163
10.1.1 故障的种类 163
10.1.2 恢复的实现技术 164
10.1.3 SQL Server基于日志的恢复策略 166
10.1.4 SQL Server检查点 168
10.2 SQL Server的备份与恢复 169
10.3 习题 174
第四篇
基础应用 175
第11章 SQL SERVER 2012基本知识 176
11.1 SQL Server 2012发展简介 176
11.2 SQL Server 2012组件和管理工具 177
11.2.1 服务器组件 177
11.2.2 管理工具 178
11.2.3 文档 178
11.3 SQL Server 2012服务器的管理 179
11.3.1 启动停止服务器 179
11.3.2 配置管理器 180
11.3.3 服务器的注册 180
11.4 习题 181
第12章
数据库操作 182
12.1 SQL Server实例 182
12.2 数据库基本概念 182
12.2.1 物理数据库 182
12.2.2 逻辑数据库 184
12.2.3 系统数据库和用户数据库 186
12.3 创建数据库 187
12.3.1 管理工具交互方式创建数据库 187
12.3.2 命令行方式创建数据库 189
12.4 修改数据库 190
12.4.1 管理工具交互方式修改数据库 190
12.4.2 命令行方式修改数据库 191
12.5 删除数据库 192
12.5.1 交互方式删除数据库 192
12.5.2 命令行方式删除数据库 192
12.6 数据库的分离和附加 192
12.6.1 分离数据库 193
12.6.2 附加数据库 193
12.7 数据库的快速备份与恢复 194
12.8 *数据库的收缩 195
12.8.1 手动收缩 195
12.8.2 自动收缩 196
12.9 * 移动数据库 196
12.10 *数据库快照 197
12.10.1 数据库快照的优点 197
12.10.2 数据库快照的操作 198
12.11 习题 198
第13章
表和表数据操作 200
13.1 表概念 200
13.1.1 表结构 200
13.1.2 表类型 200
13.2 创建表 202
13.2.1 列的数据类型 202
13.2.2 列的其他属性 206
13.2.3 交互方式创建表 206
13.2.4 命令行方式创建表 207
13.3 修改表 208
13.3.1 交互方式修改表 208
13.3.2 命令行方式修改表 210
13.4 删除表 211
13.5 表数据操作 211
13.5.1 交互方式操作表数据 211
13.5.2 命令行方式操作表数据 212
13.6 习题 214
第14章
数据查询 215
14.1 数据查询语句 215
14.1.1 投影列 216
14.1.2 选择行 217
14.1.3 连接 219
14.2 排序 221
14.3 简单统计 222
14.4 分组统计 223
14.5 子查询 224
14.5.1 无关子查询 224
14.5.2 相关子查询 225
14.5.3 子查询作数据项 226
14.6 集合操作 227
14.7 存储查询结果 228
14.8 习题 229
第15章
视 图 230
15.1 视图概述 230
15.2 视图的类型 230
15.3 创建视图 231
15.4 查询视图 233
15.5 可更新视图 233
15.6 修改视图定义 234
15.7 删除视图 235
15.8 视图小结 236
15.8.1 创建视图准则 236
15.8.2 视图的优点和作用 236
15.9 习题 237
第16章
数据完整性和索引 238
16.1 数据完整性 238
16.1.1 PRIMARY KEY主键约束 238
16.1.2 UNIQUE唯一性约束 240
16.1.3 FOREIGN KEY引用完整性约束 241
16.1.4 CHECK检查约束 242
16.2 索引 244
16.2.1 索引的分类 244
16.2.2 创建索引 245
16.2.3 查看索引 246
16.2.4 修改索引 247
16.2.5 删除索引 247
16.2.6 其他类型索引 247
16.2.7 优化索引 249
16.3 数据库关系图 251
16.4 习题 253
第五篇
高级应用 254
第17章 T-SQL语言 255
17.1 SQL语言基本元素 255
17.1.1 T-SQL语言简介 255
17.1.2 TSQL语言的语法约定 255
17.1.3 标识符 256
17.1.4 常量和变量 256
17.1.5 注释 258
17.1.6 运算符 258
17.1.7 函数 259
17.1.8 表达式 262
17.2 流程控制语句 264
17.2.1 SET语句 264
17.2.2 BEGIN END语句 265
17.2.3 IF-ELSE语句 266
17.2.4 WHILE、BREAK、CONTINUE语句 266
17.2.5 RETURN语句 267
17.2.6 WAITFOR语句 267
17.2.7 GOTO语句 267
17.2.8 TRY CATCH语句 267
17.2.9 GO语句 268
17.2.10 EXECUTE语句 268
17.2.11 T-SQL语句的解析、编译和执行 268
17.3 数据定义、操纵及控制语言 269
17.3.1 数据定义语言 269
17.3.2 数据操纵语言 270
17.3.3 数据控制语言 272
17.4 习题 274
第18章
存储过程、自定义函数、触发器和游标 275
18.1 存储过程 275
18.1.1 存储过程概述 275
18.1.2 创建存储过程 275
18.1.3 调用存储过程 276
18.1.4 获取存储过程信息 277
18.1.5 修改和重命名存储过程 277
18.1.6 重新编译存储过程 278
18.1.7 删除存储过程 278
18.2 用户定义函数 279
18.2.1 标量值函数 279
18.2.2 内嵌表值函数 279
18.2.3 多语句表值函数 280
18.2.4 修改和重命名用户定义函数 280
18.2.5 删除用户定义函数 281
18.3 触发器 281
18.3.1 触发器概述 281
18.3.2 触发器的类型 282
18.3.3 触发器的设计规则 283
18.3.4 使用触发器 285
18.3.5 启用、禁用和删除触发器 286
18.3.6 触发器的用途 287
18.4 游标 288
18.4.1 游标概述 288
18.4.2 游标的类型 288
18.4.3 游标的使用 290
18.5 习题 293
附录 295
1. 本书中示例数据库的结构及数据 295
2. 上机实验题 298
3. 课程设计要求 305
参考文献 307