第1章 关系数据库系统基础 1
1.1 数据库技术概述 1
1.2 数据库发展简史 1
1.3 基本概念 2
1.3.1 数据 2
1.3.2 数据库 3
1.3.3 数据库管理系统 3
1.3.4 数据库系统 4
1.4 数据库系统模型 4
1.4.1 层次模型 5
1.4.2 网状模型 5
1.4.3 关系模型 6
1.5 数据库管理系统 8
1.6 Codd十二条法则 9
1.7 关系数据库的范式 10
1.7.1 数据依赖 11
1.7.2 关系模式的操作异常 12
1.7.3 范式 12
1.8 EAR方法 17
1.8.1 EAR图 17
1.8.2 EAR方法向关系数据库转换 18
小结 19
练习一 20
第2章 Oracle基础知识 21
2.1 Oracle的历史 21
2.2 Oracle系统的特点 27
2.3 Oracle9i组件 28
2.3.1 Oracle9i Database 28
2.3.2 Oracle9i Application Server 29
2.3.3 Internet Development Suite 29
2.4 Oracle9i的主要特点 31
2.4.1 Oracle9i数据库的主要特点 31
2.4.2 Oracle9i Application Server的主要特点 32
2.4.3 Internet Development Suite的主要特点 32
2.4.4 增强的特性 32
2.5 Oracle的今天与未来 33
2.6 Oracle认证 34
2.8 与Oracle的公司联系方法 35
2.7 网上电子公告板(BBS) 35
小结 36
练习二 37
第3章 Oracle体系结构 38
3.1 Oracle体系结构概述 38
3.2 Oracle文件 39
3.2.1 数据库文件 39
3.2.2 控制文件 40
3.2.3 重做日志文件 42
3.3 进程 42
3.3.1 进程结构 42
3.3.2 用户进程 42
3.3.3 Oracle进程(OracleProcesses) 43
3.4 内存结构 46
3.4.1 系统全局区 47
3.4.2 程序全局区(PGA) 48
3.5 数据字典 49
3.5.1 数据字典的结构 49
3.5.2 数据字典的使用 49
3.6 事务管理 49
3.6.1 事务管理概述 49
3.6.2 Oracle的事务管理 50
3.6.3 事务剖析 51
3.7 数据库和实例的启动与关闭 52
3.7.1 数据库和实例的启动 52
3.7.2 数据库和实例的关闭 52
3.8.1 理解并行服务器的优点 53
3.8 并行服务器数据库 53
3.8.2 单实例与并行服务器数据库的比较 54
3.9 分布式数据库 55
3.9.1 理解分布式数据库 55
3.9.2 使用一个分布式数据库 56
3.9.3 分布式数据库全局名与数据库链 57
3.9.4 表快照 57
3.10 Oracle9i系统的高可用性 58
小结 60
练习三 61
第4章 Oracle网络数据库 62
4.1 概念和术语 62
4.2 三层结构 65
4.3 电子商务给网络体系结构带来的改变 66
4.4 Oracle网络计算体系结构 67
4.5 认识Oracle应用服务器 68
4.5.1 HTTP 监听层 69
4.5.2 Oracle应用服务器层 69
4.5.3 应用层 70
4.6 因特网文件系统 70
4.7 Oracle Net 71
4.7.1 客户/服务器应用程序的连接 71
4.7.2 Web客户端应用程序的连接 72
4.7.3 不通过Web应用服务器的Web客户连接 72
4.8 使用网络配置助手 73
4.8.1 监听程序配置 73
4.8.2 命名方法配置 76
4.8.3 本地网络服务名配置 77
4.8.4 目录使用配置 81
4.9 Oracle与防火墙 81
4.9.1 什么是防火墙 81
4.9.2 防火墙的功能 82
4.9.3 防火墙的种类 82
4.9.4 防火墙 82
4.10 理解RAID 82
小结 84
练习四 84
第5章 SQL*Plus工具 85
5.1 SQL*Plus启动与关闭 85
5.1.1 基于 DOS方式的启动与关闭 85
5.1.2 基于Windows方式的启动与关闭 87
5.1.3 关闭SQL*Plus 88
5.2.1 修改环境变量 90
5.2 SQL*Plus环境设置 90
5.2.2 设置环境参数 91
5.2.3 SHOW命令的使用 95
5.3 编辑和执行命令 96
5.3.1 编辑和执行语句 96
5.3.2 命令文件操作 101
5.4 输出格式控制 102
5.4.1 列格式控制 102
5.4.2 报表数据格式控制 105
5.4.3 表格式控制 107
5.4.4 格式化的清除 110
5.5.1 使用步骤 111
5.5 SQL*Plus Worksheet 111
5.5.2 SQL*Plus Worksheet与与 SQL*Plus之间的差异 112
5.6 iSQL*Plus的应用 112
5.6.1 SQL*Plus体系结构 113
5.6.2 使用iSQL*Plus 113
5.6.3 iSQL*Plus的限制 114
小结 115
练习五 115
第6章 PL/SQL语言基础 116
6.1 SQL语言简介 116
6.1.1 SQL发展历史 116
6.1.2 SQL语言的分类 117
6.2 理解PL/SQL 118
6.3 PL/SQL和Oracle版本 119
6.4 PL/SQL引擎 120
6.5 PL/SQL语法格式约定 120
6.6 PL/SQL词法单元 121
6.6.1 分隔符 122
6.6.2 标识符 123
6.6.3 常量值 124
6.6.4 注释 125
6.7 数据类型 127
6.7.1 标量数据类型 127
6.7.2 LOB数据类型 132
6.7.4 集合 133
6.7.3 用户定义数据类型 133
6.7.5 记录 137
6.7.6 数据类型转换 139
6.8 运算符 141
6.8.1 算术运算符 141
6.8.2 比较运算符 141
6.8.3 逻辑运算符 147
6.8.4 连接运算符 148
6.8.5 集合运算符 148
6.8.6 其他内置运算符 151
6.8.7 运算符的优先级 151
6.9 变量和常量 152
6.9.1 声明变量和常量 153
6.9.2 变量赋值 154
6.9.3 变量的可见域和作用域 156
6.10.1 控制结构 158
6.10.2 结构控制语句 158
6.10.3 条件语句 158
6.10 PL/SQL控制结构 158
6.10.4 循环语句 161
6.10.5 转移语句 164
6.10.6 空语句 165
6.11 基本的SQLSELECT语句 166
6.11.1 SELECT语句的语法格式 166
6.11.2 编写简单的查询语句 167
6.11.3 行的排序 168
6.11.4 限制行 169
6.11.5 分组查询 170
6.12 SCOTT/TIGER之后的新方案 171
6.11.6 使用HAVING子句 171
6.13 多表查询 173
6.13.1 笛卡尔连接 173
6.13.2 简单连接 174
6.13.3 复杂连接 175
6.13.4 多表连接 176
6.13.5 外部连接 177
6.13.6 其他多表查询 177
6.14 子查询 179
6.14.1 单行子查询 179
6.14.2 多行子查询 179
6.14.3 相关子查询 180
6.15.1 INSERT语句 181
6.14.4 标量子查询 181
6.15 数据操纵语言DML 181
6.15.2 UPDATE语句 182
6.15.3 DELETE语句 182
6.16 数据控制语言DCL 183
6.16.1 事务 183
6.16.2 锁 186
小结 187
练习六 188
第7章 函数 189
7.1 SQL内置函数 189
7.1.1 数字函数 189
7.1.2 字符函数 191
7.1.3 日期函数 196
7.1.4 转换函数 198
7.1.5 集合函数 202
7.1.6 其他类函数 202
7.2 用户定义函数 206
7.2.1 创建用户函数 207
7.2.2 参数传递 208
7.2.3 参数默认值 209
7.2.4 编译用户函数 209
7.2.5 删除用户函数 209
小结 209
练习七 210
8.1 表 211
第8章 数据库对象 211
8.2 索引 214
8.3 视图 216
8.3.1 何要用视图 217
8.3.2 创建视图 217
8.3.3 修改视图 218
8.3.4 删除视图 218
8.4 数据库触发器 219
8.5 同义词 219
8.6 回滚段 220
8.7 数据库链接 221
8.9 包、过程和函数 222
8.10 快照 222
8.8 序列 222
小结 223
练习八 224
第9章 过程、包和触发器 225
9.1 过程 225
9.1.1 创建过程 225
9.1.2 查询过程 226
9.1.3 调用过程 226
9.1.4 删除过程 227
9.2 包 227
9.2.1 创建包 228
9.2.2 包定义 228
9.2.3 包体 229
9.2.5 包的示例 230
9.2.4 重载打包子程序 230
9.2.6 Oracle提供的包 231
9.3 触发器 233
9.3.1 创建触发器 233
9.3.2 触发器名称 234
9.3.3 对触发器的限制 234
9.3.4 触发器权限 234
小结 235
练习九 235
第10章 游标 236
10.1 游标操作 236
10.1.1 声明游标 236
10.1.3 提取游标数据 238
10.1.2 打开游标 238
10.1.4 关闭游标 239
10.2 游标FOR循环 240
10.3 游标属性 241
10.4 游标的修改和删除 242
10.5 游标变量 243
10.5.1 声明游标变量 243
10.5.2 游标变量操作 244
10.5.3 使用游标变量的限制 247
小结 247
练习十 247
第11章 Oracle对象-关系数据库 248
11.1 什么是面向对象数据库系统 248
11.2 面向对象数据库系统的对象理论 249
11.2.2 类 250
11.2.3 封装 250
11.2.4 数据库触发器 250
11.2.1 对象 250
11.2.5 可扩充性 251
11.2.6 多态性和继承 251
11.3 对象-关系数据库 252
11.4 定义对象类型 253
11.4.1 创建对象类型 253
11.4.2 对象构造函数 255
11.4.3 对象的方法 255
11.4.4 对象方法重载 257
11.5.2 创建一个对象类型体 258
11.5 对象的使用 258
11.5.1 创建一个对象类型 258
11.5.3 使用构造成员方法 259
11.5.4 使用map成员方法和order成员方法 259
11.5.5 对象前向声明 261
11.5.6 对象的修改 261
小结 261
练习十一 262
第12章 程序设计基础 263
12.1 OCI简介 263
12.2 OCI程序结构 263
12.2.1 创建OCI环境 263
12.2.2 申请句柄和数据结构 265
12.2.3 连接服务器建立会话 269
12.2.4 结束会话、断开服务器连接 271
12.2.5 释放句柄 272
12.3 错误处理 272
12.3.1 OCI数返回代码 272
12.3.2 读取错误诊断记录 273
12.4 程序示例 273
12.5 嵌入式SQL 275
12.6 Pro*C/C++应用程序开发环境 275
12.6.1 Pro*C/C++开发环境 275
12.7 Pro*C/C++程序 276
12.7.1 什么是Pro*C/C++程序 276
12.6.2 Pro*C/C++应用程序开发步骤 276
12.7.2 Pro*C/C++的程序结构图 277
12.8 Pro*C/C++程序结构 277
12.9 应用程序首部 278
12.9.1 DECLARE部分(描述部分) 278
12.9.2 指示器变量的说明和引用 278
12.9.3 指针SQL变量的说明和使用 279
12.9.4 数组SQL变更的说明和引用 279
12.9.5 伪类型VARCHAR的说明和引用 280
12.9.6 SQL通信区 280
12.10 应用程序体 281
12.10.1 连接到Oracle数据库 281
12.10.2 插入、更新和删除 281
12.10.3 数据库查询及游标的使用 281
12.10.4 SQL嵌套的方法及应用 282
12.10.5 错误检测和恢复 283
12.10.6 动态定义语句 285
12.11 程序示例 287
小结 290
练习十二 290
第13章 数据库设计 291
13.1 数据库设计的基本任务 291
13.2 数据库设计的基本过程 291
13.3 需求分析阶段 292
13.3.1 需求分析的任务 292
13.3.3 数据流图 293
13.3.2 需求分析的方法 293
13.3.4 数据字典 294
13.4 概念结构设计 295
13.5 逻辑结构设计 296
13.5.1 E-R图向关系模型的转换 296
13.5.2 数据模型的优化 297
13.5.3 设计用户子模式 298
13.5.4 基本表 298
13.6 建立数据库 299
13.6.1 规范化 300
13.6.2 非规范化 303
13.6.3 确保数据完整性 303
13.6.4 创建触发器、存储过程和索引 303
13.6.6 建立数据库的实例 304
13.6.5 数据库设计的文档化 304
13.7 应用系统设计 313
小结 315
练习十三 315
第14章 系统开发 317
14.1 数据库的生存周期 317
14.1.1 分析阶段 317
14.1.2 设计阶段 317
14.1.3 实现阶段 318
14.1.4 维护阶段 318
14.2 应用程序开发方法 319
14.2.1 自顶向下的开发方法 320
14.2.2 原型方法 321
14.2.3 面向对象的分析和设计 322
14.3 对象的发现和标识 323
14.3.1 动机 323
14.3.2 方法 324
14.3.3 三视图模型(3VM) 324
14.3.4 基于语言的信息分析系统 325
14.4 数据分析 327
14.5 管理技术 328
14.5.1 CASE工具 328
14.5.2 共享目录 329
14.5.3 项目管理数据库 329
14.5.4 讨论数据库 329
14.6 Oracle Developer 329
14.6.1 Oracle Developer简介 329
14.6.2 使用Oracle Developer开发数据库应用程序 331
14.6.3 使用Oracle Developer开发Internet数据库应用程序 332
14.7 Oracle9i JDeveloper 333
14.8 Oracle WebDB 334
小结 336
练习十四 337
第15章 Oracle优化和调试 339
15.1 选择平台 339
15.2 内存/CPU建议 340
15.3 优化程序 341
15.3.1 理解基于规则的优化程序 341
15.3.2 使用基于开销的优化程序方法 342
15.4.1 使用解释计划特性 346
15.4 SQL的调整 346
15.4.2 使用SQL*Plus自动跟踪 349
15.4.3 使用SQL Trace和TKPROF 350
15.5 调试一个Oracle数据库 350
15.5.1 收集统计数字 350
15.5.2 步骤 351
15.6 调试SGA 351
15.6.1 高速缓存器命中率 352
15.6.2 库缓存区命中率 353
15.6.3 改变共享池规模 354
15.6.4 字典缓存区命中率 354
15.6.5 调试回滚段 355
15.6.6 调试redo 日志缓存器 356
15.7 Oracle网络计算环境的调整与优化 356
15.7.1 解决性能故障问题的前提条件 357
15.7.2 评估栈 358
15.8 调整Windows NT 以优化Oracle9i 358
15.8.1 Windows NT上的Oracle数据库 358
15.8.2 更改虚拟内存 360
15.8.3 禁止不必要的服务 361
15.8.4 取消不使用的网络协议并重新设置连接顺序 362
15.8.5 其他可用的配置选项 364
小结 365
练习十五 365
参考答案 366
第1章 366
第2章 366
第3章 367
第4章 368
第5章 369
第6章 371
第7章 374
第8章 375
第9章 376
第10章 376
第11章 377
第12章 378
第13章 379
第14章 379
第15章 380
参考文献 382