第1章 数据库系统绪论 1
1.1 数据库的基本概念 1
1.1.1 信息、数据和数据处理 1
1.1.2 数据库 1
1.1.3 数据库管理系统 2
1.1.4 数据库系统 3
1.2 数据管理技术的发展阶段 4
1.2.1 人工管理阶段 5
1.2.2 文件系统管理阶段 6
1.2.3 数据库管理阶段 7
1.3 数据库系统的结构 8
1.3.1 模式结构 8
1.3.2 体系结构 10
1.4 数据模型 12
1.4.1 数据模型的概念 12
1.4.2 数据模型的三要素 13
1.4.3 概念模型 14
1.4.4 常用的数据模型 18
1.5 本章小结 21
1.6 课后习题 21
第2章 关系运算理论 24
2.1 关系数据结构 24
2.1.1 关系的定义 24
2.1.2 关系的性质 26
2.1.3 关系模式 27
2.1.4 关系数据库 27
2.2 关系数据操作 27
2.2.1 关系的基本操作 27
2.2.2 关系操作的特点 28
2.2.3 关系数据语言 28
2.3 关系的完整性 28
2.3.1 完整性约束的分类 28
2.3.2 实体完整性 29
2.3.3 参照完整性 29
2.3.4 用户定义完整性 30
2.4 传统的集合运算 30
2.4.1 并运算 31
2.4.2 差运算 32
2.4.3 交运算 33
2.4.4 广义笛卡儿积 33
2.5 专门的关系运算 35
2.5.1 选择运算 35
2.5.2 投影运算 37
2.5.3 连接运算 38
2.5.4 除运算 39
2.6 综合实例 41
2.7 本章小结 44
2.8 课后习题 45
第3章 关系数据库标准语言SQL 47
3.1 SQL概述 47
3.1.1 SQL简介 47
3.1.2 SQL发展历程 47
3.1.3 SQL特点 48
3.2 数据定义 49
3.2.1 基本数据类型 50
3.2.2 约束条件 50
3.2.3 基本表的定义 51
3.2.4 基本表的修改 53
3.2.5 基本表的删除 54
3.2.6 索引的定义和删除 55
3.3 数据查询 56
3.3.1 SELECT语句格式 56
3.3.2 单表无条件查询 58
3.3.3 单表有条件查询 61
3.3.4 聚集函数 66
3.3.5 分组查询和排序查询 68
3.3.6 连接查询 70
3.3.7 嵌套查询 74
3.3.8 集合查询 83
3.4 数据操纵 85
3.4.1 插入数据 85
3.4.2 修改数据 86
3.4.3 删除数据 87
3.5 视图 88
3.5.1 定义视图 88
3.5.2 查询视图 90
3.5.3 操纵视图 91
3.5.4 删除视图 92
3.5.5 视图的优点 93
3.6 实验 93
3.6.1 实验1 SQL*PLUS常用命令练习 93
3.6.2 实验2 数据定义语言DDL 95
3.6.3 实验3 数据操纵语言DML 96
3.6.4 实验4 单表查询 97
3.6.5 实验5 多表连接查询和集合查询 98
3.6.6 实验6 嵌套查询 100
3.6.7 实验7 视图 102
3.7 本章小结 103
3.8 课后习题 103
第4章 数据库设计和规范化理论 108
4.1 关系数据库规范化理论 108
4.1.1 问题引入 108
4.1.2 函数依赖 109
4.1.3 范式 110
4.2 数据库设计概述 113
4.2.1 数据库设计的方法 113
4.2.2 数据库设计的步骤 114
4.3 系统规划阶段 115
4.3.1 系统规划的任务 115
4.3.2 系统规划的成果 115
4.4 需求分析阶段 115
4.4.1 需求分析的任务 115
4.4.2 需求分析的步骤 116
4.4.3 需求分析的调查方法 116
4.4.4 数据流图 117
4.4.5 数据字典 118
4.5 概念结构设计 120
4.5.1 概念结构设计方法 120
4.5.2 E-R设计方法的介绍 120
4.5.3 局部概念结构设计 121
4.5.4 全局概念结构设计 122
4.6 逻辑结构设计 127
4.6.1 逻辑结构设计的步骤 127
4.6.2 E-R图向关系模型的转换原则 128
4.6.3 数据模型的优化 132
4.7 物理结构设计 132
4.7.1 确定物理结构 133
4.7.2 评价物理结构 133
4.8 数据库的实施 133
4.9 数据库的运行和维护 135
4.10 本章小结 135
4.11 课后习题 136
第5章 Oracle数据库体系结构 138
5.1 物理存储结构 138
5.1.1 数据文件 138
5.1.2 控制文件 138
5.1.3 重做日志文件 139
5.1.4 其他文件 139
5.2 逻辑存储结构 140
5.2.1 表空间 141
5.2.2 段 141
5.2.3 区 141
5.2.4 块 142
5.3 内存结构 142
5.3.1 系统全局区 142
5.3.2 程序全局区 142
5.4 进程结构 143
5.4.1 用户进程 143
5.4.2 服务器进程 143
5.4.3 后台进程 143
5.5 数据库例程 143
5.6 本章小结 144
5.7 课后习题 144
第6章 PL/SQL概述 146
6.1 PL/SQL简介 146
6.1.1 PL/SQL的定义 146
6.1.2 PL/SQL的优点 146
6.1.3 PL/SQL块结构 146
6.2 PL/SQL变量 148
6.2.1 标识符定义 148
6.2.2 声明语法 148
6.2.3 数据类型 150
6.2.4 变量赋值 152
6.3 PL/SQL运算符和函数 152
6.3.1 PL/SQL中的运算符 152
6.3.2 PL/SQL中的函数 153
6.4 PL/SQL条件结构 153
6.4.1 IF条件语句 153
6.4.2 CASE条件语句 155
6.5 PL/SQL循环结构 157
6.5.1 简单循环 157
6.5.2 WHILE循环 158
6.5.3 数字式FOR循环 159
6.6 实验 161
6.6.1 实验1 PL/SQL基本结构 161
6.6.2 实验2 PL/SQL条件语句 162
6.6.3 实验3 PL/SQL循环语句 163
6.7 本章小结 164
6.8 课后习题 165
第7章 异常处理 167
7.1 异常概述 167
7.1.1 Oracle异常处理机制 167
7.1.2 异常的类型 167
7.1.3 异常处理的基本语法 168
7.2 预定义异常 168
7.3 非预定义异常 170
7.4 用户自定义异常 172
7.5 实验 174
7.5.1 实验1 系统预定义异常 174
7.5.2 实验2 用户自定义异常 176
7.6 本章小结 177
7.7 课后习题 178
第8章 游标 179
8.1 游标的定义 179
8.2 显式游标 179
8.2.1 显式游标的处理步骤 179
8.2.2 显式游标的属性 180
8.2.3 游标的FOR循环 182
8.2.4 利用游标操纵数据库 183
8.2.5 带参数的游标 184
8.3 隐式游标 186
8.3.1 隐式游标的属性 186
8.3.2 显式游标与隐式游标的区别 187
8.4 实验 188
8.4.1 实验1 不带参数的游标 188
8.4.2 实验2 带参数的游标 190
8.4.3 实验3 隐式游标 192
8.5 本章小结 193
8.6 课后习题 194
第9章 存储过程 195
9.1 存储过程的创建 195
9.1.1 创建过程的语法 195
9.1.2 形式参数的三种类型 196
9.2 存储过程的调用 197
9.2.1 参数传值 197
9.2.2 调用方法 197
9.3 存储过程的管理 199
9.3.1 修改存储过程 199
9.3.2 删除存储过程 199
9.3.3 查看语法错误 199
9.3.4 查看结构 200
9.3.5 查看源代码 201
9.4 实验 201
9.4.1 实验1 不带参数的存储过程 201
9.4.2 实验2 带参数的存储过程 202
9.5 本章小结 204
9.6 课后习题 204
第10章 存储函数 206
10.1 存储函数的创建 206
10.1.1 创建函数的语法 206
10.1.2 形式参数与返回值 206
10.2 存储函数的调用 207
10.3 存储函数的管理 209
10.3.1 修改存储函数 209
10.3.2 删除存储函数 209
10.3.3 查看语法错误 209
10.3.4 查看结构 210
10.3.5 查看源代码 210
10.4 存储过程与存储函数的区别 211
10.4.1 返回值方法不同 211
10.4.2 调用方法不同 211
10.5 实验 212
10.5.1 实验1 不带参数的存储函数 212
10.5.2 实验2 带参数的存储函数 212
10.6 本章小结 214
10.7 课后习题 215
第11章 包 216
11.1 包的简介 216
11.1.1 包的定义 216
11.1.2 包的优点 216
11.2 包的创建与调用 216
11.2.1 包说明的创建 217
11.2.2 包主体的创建 217
11.2.3 包的调用 218
11.3 包的重载 220
11.4 包的管理 222
11.4.1 修改包 222
11.4.2 删除包 222
11.4.3 查看语法错误 222
11.4.4 查看结构 223
11.4.5 查看源代码 223
11.5 Oracle内置包 224
11.6 实验 225
11.6.1 实验1 包的创建与调用 225
11.6.2 实验2 包的重载 226
11.7 本章小结 227
11.8 课后习题 227
第12章 触发器 229
12.1 触发器概述 229
12.1.1 触发器的概念 229
12.1.2 触发器的作用 229
12.1.3 触发器的类型 230
12.1.4 触发器的组成 230
12.2 语句级触发器 231
12.2.1 语句级触发器的创建 231
12.2.2 触发器谓词 233
12.3 行级触发器 234
12.3.1 行级触发器的创建 234
12.3.2 触发器标识符 235
12.3.3 触发器的WHEN子句 237
12.4 INSTEAD OF触发器 238
12.4.1 INSTEAD OF触发器的作用 238
12.4.2 触发器的创建 238
12.5 系统事件与用户事件触发器 240
12.5.1 系统事件与用户事件 240
12.5.2 触发器的创建 240
12.6 触发器的管理 242
12.6.1 修改触发器 242
12.6.2 禁用触发器 242
12.6.3 启用触发器 242
12.6.4 删除触发器 242
12.6.5 查看语法错误 243
12.6.6 查看源代码 243
12.7 实验 244
12.7.1 实验1 语句级触发器 244
12.7.2 实验2 行级触发器 245
12.8 本章小结 246
12.9 课后习题 246
第13章 数据库安全性与完整性 248
13.1 数据库安全性概述 248
13.1.1 安全控制模型 248
13.1.2 安全层次简介 249
13.1.3 安全标准简介 249
13.2 Oracle的安全机制 250
13.2.1 用户管理 250
13.2.2 权限管理 253
13.2.3 角色管理 260
13.2.4 视图机制 264
13.2.5 审计 265
13.2.6 数据加密 265
13.3 数据库完整性控制 266
13.3.1 完整性基本含义 266
13.3.2 完整性约束条件 266
13.3.3 完整性控制机制 267
13.4 实验 267
13.4.1 实验1 用户管理 267
13.4.2 实验2 权限管理 268
13.4.3 实验3 角色管理 268
13.5 本章小结 269
13.6 课后习题 269
第14章 数据库的备份与恢复 271
14.1 事务 271
14.1.1 事务的定义 271
14.1.2 事务的特性 271
14.1.3 事务控制语句 272
14.2 数据库的恢复技术 272
14.2.1 故障的种类 273
14.2.2 恢复的实现技术 274
14.2.3 恢复策略 275
14.3 Oracle数据库的备份 276
14.3.1 物理备份 276
14.3.2 逻辑备份 278
14.4 Oracle数据库的恢复 281
14.4.1 物理恢复 281
14.4.2 逻辑恢复 283
14.5 实验 285
14.5.1 实验1 数据库的备份 285
14.5.2 实验2 数据库的恢复 286
14.6 本章小结 287
14.7 课后习题 287
附录A 样本数据库 288
附录B Oracle 11g数据库的安装和卸载 291
附录C 实验参考答案 303
附录D 课后习题参考答案 323
参考文献 342