第1章 了解Oracle 1
1.1 Oracle基本术语 1
1.1.1 数据库 1
1.1.2 实例 1
1.1.3 用户 2
1.1.4 模式 2
1.1.5 安全 2
1.2 使用Oracle 3
1.2.1 SQL?Plus 4
1.2.2 数据词典 4
1.2.3 Oracle的工作方式 5
1.2.4 学习途径 6
1.3.1 数据库类别 8
1.3 数据库家族 8
1.3.2 可以使用的选项和特性 9
1.4 小结 9
第2章 SQL?Plus和基本查询 11
2.1 SQL?Plus简介 11
2.1.1 SQL、PL/SQL和SQL?Plus之间的区别 12
2.1.2 启动SQL?Plus 14
2.2 快速而简单地查询数据库 18
2.2.1 格式化用户结果 21
2.2.2 总结SQL?Plus 30
2.3 什么是SQL 30
2.4 表中内容 31
2.5 数据操作语言 33
2.5.1 查询 33
2.5.2 WHERE子句 35
2.5.3 联接 45
2.5.4 集合操作符 54
2.6 其他DML语句 58
2.6.1 INSERT语句 58
2.6.2 UPDATE语句 59
2.6.3 DELETE语句 62
2.7 提交和回滚 64
2.8 回滚 66
2.9 小结 67
第3章 建立以及管理用户和表 68
3.1 数据定义语言 68
合法的Oracle标识符 69
3.3.1 建立用户 70
3.3 用户 70
3.2 表空间 70
3.3.2 改变用户 72
3.3.3 删除用户 75
3.4 Oracle数据类型 77
3.4.1 数值类型 77
3.4.2 字符类型 78
3.4.3 日期和时间 82
3.4.4 ANSI数据类型 91
3.5 建立表 93
3.5.1 约束 95
3.5.2 CREATE TABLE AS SELECT 104
3.6 数据词典 105
3.7 小结 110
4.1 SCOTT模式 111
第4章 新的9i示例模式 111
4.2 Oracle 9i示例模式 112
4.2.1 深入讨论各个模式 113
4.2.2 渐进学习方式 122
4.2.3 发现更多有关示例模式的内容 122
4.3 小结 134
第5章 体系结构 135
5.1 为什么必须理解体系结构 135
5.2 进行连接 136
5.2.1 用户进程 136
5.2.2 Oracle监听器 136
5.2.3 Oracle网络客户 138
5.3 服务器进程 141
5.4.1 参数文件 142
5.4 文件 142
5.4.2 控制文件 145
5.4.3 数据文件 146
5.4.4 表空间 146
5.4.5 段 146
5.4.6 盘区 148
5.4.7 数据块 149
5.4.8 预先分配文件 149
5.4.9 重做日志文件 150
5.4.10 临时文件 150
5.4.11 Oracle管理文件 152
5.5 内存区域 153
5.5.1 系统全局区域 153
5.5.2 程序全局区域 156
5.6.2 系统监控器 157
5.6 后台进程 157
5.6.1 进程监控器 157
5.6.3 数据库写入器 158
5.6.4 日志写入器 159
5.6.5 归档器 160
5.6.6 检查点 160
5.6.7 作业队列协调器,作业进程(CJQ0 Jnnn) 161
5.6.8 恢复器 161
5.7 体系结构概貌 162
5.8 小结 163
第6章 在Oracle中处理语句 164
6.1 SQL语句类型 164
6.2 怎样执行语句 165
6.2.1 解析 165
6.2.2 优化 170
6.2.3 行源生成器 175
6.2.4 执行引擎 175
6.2.5 语句执行汇总 175
6.3 查询全过程 176
6.4 DML全过程 177
6.5 DDL处理 181
6.6 小结 181
第7章 表 183
7.1 介绍Oracle中的表 183
7.2 表类型 183
7.2.1 堆表 184
7.2.2 外部表 185
7.2.3 索引组织表 191
7.2.4 临时表 198
7.2.5 其它表类型 201
7.3 表特性 202
7.3.1 TABLESPACE子句 202
7.3.2 LOGGING和NOLOGGING 206
7.3.3 STORAGE子句 206
7.3.4 CACHE和NOCACHE 208
7.4 修改表 208
7.4.1 改变表中的列 208
7.4.2 NOT NULL列约束 210
7.4.3 删除列以及标注不用列 211
7.4.4 重命名表 215
7.4.5 将表移动到新表空间或者存储 215
7.4.6 改变不同的表特性 216
7.5 删除表 217
7.4.7 ALTER TABLE总结 217
7.6 TRUNCATE TABLE 220
7.6.1 OROP STORAGE或者REUSE STORAGE 220
7.6.2 截取临时表 221
7.7 小结 221
第8章 索引 222
8.1 索引工作方式 222
8.2 Oracle中的索引 223
8.3 索引什么时候有用 227
8.4 索引开销 230
8.4.1 插入行怎样影响索引 230
8.4.2 更新和删除行如何影响索引 237
8.4.3 DML和索引 243
8.5 联接 244
8.5.1 B树索引的键压缩 245
8.5.2 索引的跳跃搜索 246
8.6 索引和约束 255
8.7 反转键索引 259
8.8 基于函数的索引 261
8.9 位图索引 267
8.10 位图联接索引 271
8.11 小结 273
第9章 掌握SQL?Plus 274
9.1 高级启动选项 274
9.1.1 LOGON 276
9.1.2 设置描述文件 277
9.1.3 START 279
9.1.4 GUI SQL?Plus的启动选项 283
9.3.1 COLUMN 284
9.3 SQL?Plus命令入门 284
9.2 日常使用SQL?Plus 284
9.3.2 DESCRIBE 287
9.3.3 PROMPT 288
9.3.4 ACCEPT 289
9.3.5 SHOW 291
9.3.6 VARIABLE 294
9.4 内建的SQL?Plus HELP 298
9.4.1 内建HELP 298
9.4.2 安装HELP 300
9.4.3 输入新的HELP主题 300
9.5 使用SQL?Plus缓冲区 302
9.5.1 设置用户编辑器 302
9.5.2 使用SQL?Plus进行编辑 303
9.6.1 START,@,@@ 305
9.6 脚本 305
9.6.2 HOST命令 307
9.7 小结 308
第10章 PL/SQL 309
10.1 总览 309
10.2 基于程序块的开发 310
10.3 声明 313
10.3.1 变量和常量 313
10.3.2 为变量和常量赋值 315
10.3.3 可视性和作用域 316
10.3.4 定义不确定内容:解释NULL 318
10.3.5 使用%TYPE和%ROWTYPE 319
10.4.1 字符数据类型 320
10.4 PL/SQL数据类型 320
10.4.2 数值数据类型 321
10.4.3 BOOLEAN 321
10.5 PL/SQL集合 321
10.5.1 记录 322
10.5.2 PL/SQL表 324
10.5.3 VARRAYS 332
10.5.4 NESTED TABLE 334
10.6 游标 337
10.6.1 显式游标 337
10.6.2 隐式游标 339
10.6.3 游标属性 340
10.6.4 REF CURSORS和游标变量 344
10.6.5 单独SELECT 349
10.7.1 条件 350
10.7 控制语句 350
10.7.2 循环 355
10.7.3 控制语句概要 358
10.8 错误处理 359
10.8.1 异常部分 359
10.8.2 预定义异常 360
10.8.3 用户定义异常 362
10.8.4 PRAGMA EXCEPTION_INIT 364
10.8.5 异常传播 366
10.9 小结 373
第11章 过程、函数和程序包 375
11.1 优势和利益 375
11.2 过程 376
11.2.1 语法 376
11.2.2 建立或者替换 377
11.2.3 执行存储过程 378
11.2.4 安全 378
11.2.5 参数 381
11.2.6 局域声明 393
11.3 函数 399
11.3.1 语法 400
11.3.2 返回值 400
11.3.3 确定性 403
11.3.4 常见错误 404
11.4 程序包 405
11.4.1 语法 406
11.4.2 规范 407
11.4.3 主体 407
11.4.4 程序包变量和其他声明 412
11.4.5 重载 416
11.4.6 依赖性 420
11.4.7 程序包的优势 422
11.5 数据词典 424
11.5.1 列出所有的用户存储过程 424
11.5.2 从数据库中检索用户代码 424
11.6 包装实用工具 425
11.7 小结 427
第12章 事务处理和并发控制 428
12.1 什么是事务处理 428
12.2 事务处理控制语句 429
12.2.1 COMMIT处理 429
12.2.2 ROLL BACK处理 430
12.2.3 SAVEPOINT和ROLL BACK TO SAVEPOINT 431
12.2.4 SET TRANSACTION 432
12.2.5 SET CONSTRAINTS 435
12.3 事务处理的ACID属性 437
12.3.1 原子性 437
12.3.2 一致性 439
12.3.3 隔离性 444
12.3.4 持久性 445
12.4 并发控制 446
12.4.1 锁定 446
12.4.2 多版本和读取一致性 454
12.5 小结 457
第13章 安全 458
13.1 数据库安全概述 458
13.1.1 用户和模式 458
13.1.2 系统特权 460
13.1.3 对象特权 464
13.1.4 数据库角色 470
13.1.5 PL/SQL和数据库角色 476
13.2 细粒度访问控制 483
13.3 数据安全 492
13.1.1 DES3ENCRYPT和ES3DECRYPT 493
13.3.2 消息摘要 496
13.4 小结 498
第14章 视图 499
14.1 关系视图 499
14.1.1 建立视图 500
14.1.2 检索视图定义 503
14.1.3 改变视图定义 503
14.1.5 视图中的约束 505
14.1.4 删除视图 505
14.1.6 联接视图 509
14.1.7 验证视图 511
14.1.8 通过视图进行更新和删除 514
14.1.9 视图和性能 517
14.2 内嵌视图 518
14.3 对象视图 522
14.4 物化视图 525
14.4.1 立即生成 530
14.4.2 自动生成 530
14.4.3 查询重写 531
14.5 小结 534
第15章 触发器 535
15.1 开始 535
15.2 触发器类型 538
15.2.1 语句触发器 539
15.2.2 行触发器 547
15.2.3 INSTEAD OF触发器 555
15.2.4 系统事件触发器 561
15.2.5 用户事件触发器 561
15.3 启用和禁用触发器 563
15.4 事务处理和触发器 566
15.5 从数据词典中获取触发器信息 566
15.6 Event Attribute Functions 568
15.7 小结 572
第16章 对象 574
16.1 面向对象概念 575
16.2 什么是对象类型 575
16.3 使用对象类型 576
16.3.1 建立对象类型 577
16.3.2 构造函数方法 578
16.3.3 表中的对象类型 579
16.3.4 修改和删除类型 582
16.3.5 方法 587
16.3.6 继承 594
16.4 对象表 608
16.4.1 VALUE() 610
16.4.2 REF数据类型 610
16.5 小结 614
第17章 高级查询 616
17.1 层次化查询 616
17.1.1 基础知识 617
17.1.2 Order Siblings By 623
17.1.3 SYS_CONNECT_BY_PATH() 625
17.1.4 联接 626
17.2 用户定义聚集函数 628
17.3 表和管道函数 633
17.3.1 表函数 633
17.3.2 管道函数 635
17.4 使用查询编写生成SQL的SQL 640
17.5 分析函数 642
17.5.1 计算当前总和 643
17.5.2 下一个值和上一个值 646
17.5.3 等级和前N个 651
17.5.4 第一个和最后一个值 654
17.6 MERGE 655
17.7 小结 661
18.1 调整的途径 663
第18章 调整工具 663
18.2 基准评测 665
18.3 绑定变量 665
18.4 EXPLAIN PLAN 672
18.5 AUTOTRACE 674
18.6 跟踪文件和TIMED_STATISTICS 681
18.6.1 设置跟踪 681
18.6.2 使用和解释TKPROF输出 684
18.6.3 TKPROF和等待 692
18.7 小结 694
第19章 SQL工具箱 695
19.1 脚本 697
19.1.1 LOGIN 697
19.1.2 CONNECT 698
19.1.3 BIGDATE 699
19.1.4 FLAT 700
19.1.5 PRINT_TABLE 702
19.1.6 COMP脚本 706
19.1.7 GET脚本 714
19.1.8 INVALID 723
19.1.9 CREATECTL 723
19.1.10 DBLS 726
19.1.11 DBLSL 727
19.1.12 FREE 729
19.1.13 INDEX 732
19.1.14 SHOWSQL 734
19.1.15 SHOWSPACE 738
19.2 小结 741
20.1.1 DBMS_OUTRUT的限制 742
第20章 案例分析1——调试PL/SQL 742
20.1 历史 742
20.1.2 其他调试消息选项 743
20.2 要求 743
20.3 数据库设计和组织 744
20.3.1 表 744
20.3.2 索引和约束 745
20.3.3 触发器 745
20.3.4 UTL_FILE_DIR 746
20.4 程序包规划 746
20.5 实现 747
20.5.1 F() 748
20.5.2 FA() 749
20.5.3 DEBUG_IT() 749
20.5.4 WHO_CALLED_ME() 752
20.5.5 BUILD_IT() 755
20.5.6 PARSE_IT() 756
20.5.7 FILE_IT() 759
20.5.8 INIT() 761
20.5.9 CLEAR() 763
20.5.10 STATUS() 764
20.5.11 完成讨论 765
20.6 使用DEBUG 771
20.7 排除DEBUG的故障 772
20.8 Debug产品内代码 773
20.9 小结 775
21.1 历史 777
21.1.1 PHONE 777
第21章 案例分析2——搜索人员 777
21.1.2 开启信息时代——PEOPLE 778
21.2 应用 779
21.2.1 建立模式 779
21.2.2 建立对象 782
21.2.3 过渡表 785
21.2.4 生成过渡表 786
21.2.5 PL/SQL API 787
21.2.6 为应用增加数据 794
21.2.7 维护数据 795
21.2.8 主安装脚本 796
21.3 用户接口 797
21.4 小结 804
附录A SQL函数参考 805
A.1 DUAL 805
A.2 NUMBER函数 806
A.3 DATETIME函数 811
A.4 CHARACTER函数 820
A.5 CONVERSION函数 828
A.6 AGGREGATION函数 838
A.7 MISCELLANEOUS函数 841
附录B 补充程序包 851
B.1 DBMS_OUTPUT 851
B.2 DBMS_RANDOM 854
B.3 UTL_FILE 860
B.4 DBMS_JOB 867
B.5 UTL_RAW 874
B.6 DBMS_LOB 884
B.7 DBMS_SQL 898
附录C 数据词典 921
C.1 DBA_TABLES 928
C.1.1 DBA_TAB_COLUMNS 931
C.1.2 DBA_TAB_PRIVS 933
C.1.3 DBA_COL_PRIVS 934
C.1.4 DBA_TAB_COMMENTS/DBA_COL_COMMENTS 935
C.1.5 DBA_CONSTRAINTS 937
C.1.6 DBA_CONS_COLUMNS 938
C.1.7 DBA_EXTERNAL_TABLES 941
C.1.8 DBA_EXTERNAL_LOCATIONS 941
C.1.9 DBA_OBJECT_TABLES 942
C.1.10 DBA_COLL_TYPES 943
C.2 DBA_JOBS 944
C.3 DBA_TYPES 946
C.3.1 DBA_TYPE_ATTRS 947
C.3.2 DBA_TYPE_METHODS 948
C.3.3 DBA_METHOD_PARAMS 949
C.3.4 DBA_METHOD_RESULTS 950
C.4 DBA_LOBS 951
C.5 DBA_VIEWS 952
C.5.1 DBA_UPDATABLE_COLUMNS 953
C.5.2 DBA_TRIGGERS 955
C.5.3 DBA_TRIGGER_COLS 956
C.6 DBA_SOURCE 957
C.6.1 DBA_PROCEDURES 958
C.6.2 ALL_ARGUMENTS 959
C.6.3 DBA_DEPENDENCIES 960
C.6.4 DBA_ERRORS 961
C.7 DBA_INDEXES 962
C.8 DBA_ROLES 966
C.8.1 DBA_ROLE_PRIVS 967
C.8.2 DBA_SYS_PRIVS 968
C.9 DBA_DIRECTORIES 969
C.9.1 DBA_USERS 969
C.9.2 GLOBAL_NAME 971
C.10 简略名称 972
附录D 安装示例模式 973
D.1 安装SCOTT模式 973
D.2 安装Oracle 9i模式 974
D.2.1 使用DBCA 974
D.2.2 手工安装 975
D.2.3 模式依赖关系 984
D.3 安装小结 984
附录E 选项和特性 985