第1章 数据库设计过程 1
1.1 概述 1
1.2 需求分析 2
1.2.1 数据流图基本概念 2
1.2.2 数据流图绘制 3
1.2.3 数据流图与程序框图 5
1.2.4 需求分析示例 5
1.2.5 数据字典 7
1.2.6 使用PowerDesigner绘制数据流图 8
1.3 概念结构设计 11
1.3.1 概念结构设计方法 11
1.3.2 自底向上的概念结构设计方法 12
1.3.3 使用PowerDesigner绘制概念数据模型 17
1.4 逻辑结构设计 21
1.4.1 E-R图向关系模型的转换 21
1.4.2 逻辑模型到数据库特定模型的转换 22
1.4.3 子模式设计 24
1.4.4 使用PowerDesigner建立逻辑模型 24
1.5 物理结构设计 25
1.5.1 物理结构设计的工作内容 25
1.5.2 使用PowerDesigner建立物理模型 26
1.6 数据库实施及数据库的运行与维护 27
1.7 本章小结 28
习题1 28
第2章 Oracle数据库体系结构 29
2.1 概述 29
2.2 实例的组成 30
2.2.1 内存结构 30
2.2.2 后台进程 31
2.3 实例的启动 32
2.4 连接数据库实例 33
2.4.1 专用服务器模式 34
2.4.2 共享服务器模式 35
2.4.3 两种工作模式的讨论 36
2.5 数据库使用的文件 36
2.6 Oracle存储的逻辑结构 37
2.6.1 表空间 38
2.6.2 段 38
2.6.3 区(盘区) 39
2.6.4 数据块 39
2.7 数据逻辑结构与数据文件的关系 40
2.8 表空间的创建 41
2.9 本章小结 43
习题2 43
第3章 Oracle数据库开发工具 44
3.1 SQL*PLUS 44
3.1.1 SQL*PLUS启动 44
3.1.2 SQL*PLUS登录方式 45
3.1.3 SQL*PLUS的数据库连接命令 47
3.1.4 SQL*PLUS中执行SQL语句 48
3.1.5 SQL*PLUS的格式化命令 49
3.1.6 SQL*PLUS运行环境设定 55
3.1.7 SQL*PLUS缓冲区编辑 55
3.1.8 文件操纵命令 56
3.1.9 批处理方式执行命令——SQL脚本 57
3.1.10 SQL*PLUS变量 58
3.1.11 绑定变量 60
3.1.12 SQL*PLUS交互命令 61
3.1.13 带参数的脚本调用 62
3.1.14 从不同路径调用SQL脚本 62
3.1.15 SQL*PLUS登录脚本 63
3.1.16 特殊命令 64
3.2 PL/SQL Developer 66
3.2.1 登录 66
3.2.2 命令窗口 67
3.2.3 PL/SQL Developer环境设置 68
3.2.4 进行数据库对象管理(对象管理器的用法) 70
3.2.5 使用SQL查询窗口 71
3.2.6 编写及调试PL/SQL程序的方法 72
3.3 SQL Developer 76
3.3.1 连接数据库 77
3.3.2 创建及修改数据库对象 78
3.3.3 检索及更新数据 80
3.3.4 PL/SQL编程环境 83
3.4 本章小结 89
习题3 89
第4章 SQL 90
4.1 SQL简述 90
4.2 数据定义语言(DDL) 91
4.2.1 建立数据表(CREATE TABLE) 91
4.2.2 更改数据表(ALTER TABLE) 93
4.2.3 删除数据表(DROP) 95
4.3 数据操纵语言(DML) 95
4.3.1 插入数据命令(INSERT) 95
4.3.2 更新数据命令(UPDATE) 96
4.3.3 删除数据命令(DELETE) 98
4.4 数据检索命令(SELECT) 98
4.4.1 基本语法 100
4.4.2 选择查询结果属性列 101
4.4.3 选择查询结果数据行 103
4.4.4 查询结果排序 109
4.4.5 聚集计算 111
4.4.6 分组查询 112
4.4.7 多表查询 114
4.4.8 子查询 119
4.4.9 集合查询 125
4.5 Oracle中的特殊对象与高级SQL命令 126
4.5.1 DUAL表 127
4.5.2 INSER TALL语句和INSERT FIRST语句 128
4.5.3 MERGE语句 132
4.6 SQL函数 136
4.6.1 NULL和单行函数 136
4.6.2 字符函数 137
4.6.3 数值函数 139
4.6.4 日期函数 140
4.6.5 类型转换函数 141
4.6.6 分支函数 141
4.6.7 MS SQL Server与Oracle常用SQL函数对应关系 143
4.7 SQL高级查询技术 144
4.7.1 TOP-N查询 144
4.7.2 层次查询 145
4.7.3 分析函数 147
4.8 本章小结 153
习题4 153
第5章 Oracle数据类型 155
5.1 概述 155
5.2 字符类型 156
5.2.1 CHAR 156
5.2.2 VARCHAR2 159
5.2.3 NCHAR和NVARCHAR2 160
5.3 数值类型 160
5.3.1 NUMBER 161
5.3.2 BINARY_FLOAT和BINARY_DOUBLE 164
5.4 二进制类型 165
5.5 日期和时间类型 167
5.6 ROWID和UROWID 170
5.7 LONG数据类型 171
5.8 大对象技术 172
5.8.1 LOB类型的特点 173
5.8.2 LOB的存储 173
5.8.3 使用大对象数据类型 174
5.8.4 DBMS_LOB包 182
5.9 本章小结 184
习题5 184
第6章 Oracle中的数据库对象管理 185
6.1 Oracle中的基础数据库对象 185
6.1.1 数据表与堆表 185
6.1.2 索引与B*树索引 187
6.1.3 视图与关系视图 190
6.2 Oracle中的数据表 192
6.2.1 索引组织表 193
6.2.2 外部表 196
6.2.3 临时表 198
6.2.4 对象表 201
6.2.5 嵌套表 203
6.2.6 聚簇表 206
6.3 Oracle中的视图 208
6.3.1 物化视图 208
6.3.2 对象视图 209
6.4 Oracle中的索引 210
6.4.1 反转键索引 210
6.4.2 位图索引 211
6.4.3 基于函数的索引 212
6.5 联合索引与跳跃查询 213
6.6 索引的压缩 215
6.7 Oracle序列 215
6.7.1 序列的创建与删除 216
6.7.2 序列的使用 218
6.7.3 序列的cache使用方式 220
6.8 Oracle同义词 221
6.9 Oracle数据字典 223
6.9.1 数据字典分类 226
6.9.2 数据字典的组成 226
6.9.3 常用的静态数据字典 227
6.9.4 常用的动态数据字典 228
6.10 其他常用数据库对象 228
6.11 本章小结 229
习题6 229
第7章 PL/SQL基础 230
7.1 PL/SQL概览 230
7.1.1 客户端/服务器架构中的PL/SQL 230
7.1.2 PL/SQL程序的代码组织方式 231
7.1.3 PL/SQL代码块分类 232
7.1.4 第一个PL/SQL示例程序 232
7.2 PL/SQL中的变量 234
7.2.1 PL/SQL数据类型 234
7.2.2 PL/SQL的语言规则与约定 235
7.2.3 变量声明 236
7.2.4 锚定变量类型 237
7.2.5 变量初始化 237
7.2.6 变量生存范围 239
7.3 PL/SQL与SQL 242
7.3.1 在PL/SQL程序中使用查询语句 242
7.3.2 在PL/SQL程序中使用DML 243
7.4 流程控制结构 245
7.4.1 IF语句 245
7.4.2 CASE语句 249
7.4.3 LOOP循环(无条件循环) 251
7.4.4 WHILE循环 252
7.4.5 FOR循环 253
7.4.6 嵌套循环 255
7.4.7 CONTINUE循环跳转控制 256
7.4.8 GOTO程序跳转 258
7.5 错误处理 259
7.5.1 错误与异常 259
7.5.2 异常的分类 260
7.5.3 异常的处理 262
7.5.4 SQLCODE和SQLERRM 265
7.5.5 复合异常处理 266
7.5.6 异常的引发 267
7.5.7 异常的传播 268
7.5.8 RAISE_APPLICATION_ERROR 269
7.6 本章小结 271
习题7 271
第8章 PL/SQL进阶 272
8.1 PL/SQL复合数据类型 272
8.1.1 记录 272
8.1.2 VARRAY 275
8.1.3 嵌套表 279
8.1.4 PL/SQL表 280
8.2 游标 283
8.2.1 显式游标 284
8.2.2 隐式游标 288
8.2.3 游标变量 289
8.2.4 游标子查询 291
8.2.5 游标更新 291
8.3 过程与函数 293
8.3.1 过程 293
8.3.2 参数传递模式 295
8.3.3 参数类型约束 299
8.3.4 异常处理与参数传递 302
8.3.5 参数的NOCOPY模式 304
8.3.6 参数的位置表示法和名称表示法 305
8.3.7 参数的默认值 306
8.3.8 函数 307
8.3.9 过程和函数的比较 308
8.4 包 309
8.4.1 包规范 309
8.4.2 包主体 310
8.4.3 包的使用 312
8.4.4 包子程序的重载 313
8.4.5 包的初始化 318
8.5 触发器 318
8.5.1 DML触发器 319
8.5.2 BEFORE触发器和AFTER触发器 321
8.5.3 行级触发器与语句级触发器 321
8.5.4 关联标识符 325
8.5.5 自增触发器 328
8.5.6 触发器的执行顺序 329
8.5.7 FOLLOWS和ENABLE/DISABLE 332
8.5.8 REFERENCING子句 332
8.5.9 WHEN子句 333
8.5.10 INSTEAD OF触发器 333
8.5.11 复合触发器 336
8.5.12 系统触发器 339
8.6 本章小结 339
习题8 339
第9章 用户管理与安全 341
9.1 用户与模式 341
9.2 应用程序创建的数据库设置 342
9.3 用户管理 345
9.3.1 建立用户 345
9.3.2 更改用户 345
9.3.3 删除用户 348
9.4 权限管理 348
9.4.1 系统权限 348
9.4.2 对象权限 351
9.5 角色管理 354
9.6 PL/SQL程序与权限 356
9.7 本章小结 358
习题9 359
第10章 事务管理与并发控制 360
10.1 事务基本概念 360
10.2 事务控制语句 361
10.3 Oracle中事务的原子性 363
10.4 事务的隔离级别 365
10.5 悲观锁定与乐观锁定 367
10.6 本章小结 368
习题10 368
第11章 数据备份与传输技术 369
11.1 备份与恢复 369
11.1.1 备份分类 369
11.1.2 恢复分类 370
11.1.3 备份与恢复方法 370
11.2 RMAN 371
11.2.1 RMAN基本概念 371
11.2.2 RMAN基本应用 372
11.3 闪回操作 380
11.3.1 闪回数据库 380
11.3.2 闪回命令 381
11.3.3 回收站 383
11.4 数据泵 386
11.4.1 EXPDP 386
11.4.2 IMPDP 388
11.5 SQL*Loader 389
11.6 本章小结 390
习题11 390
第12章 数据库程序开发案例 391
12.1 系统需求描述 391
12.1.1 系统整体业务流程 391
12.1.2 生产计划管理 391
12.1.3 分解鉴定管理 392
12.1.4 工艺文件管理 392
12.1.5 机车档案管理 393
12.2 需求分析 393
12.2.1 功能界定 393
12.2.2 运行环境 393
12.2.3 系统功能分析 394
12.3 数据库设计 395
12.3.1 数据库设计命名约定 395
12.3.2 概念结构设计 395
12.3.3 逻辑结构设计 396
12.3.4 数据视图设计 398
12.3.5 存储过程设计 399
12.4 本章小结 403
习题12 403
附录A 订单处理系统设计方案 404
参考文献 408