第一部分 SQL 1
第1章 开始使用Oracle Server 1
1.1 安装Oracle Database 10g 1
前言 1
1.2 数据库配置助手 4
1.3 Net Manager 12
1.3.1 配置监听程序 12
1.3.2 配置网络服务名 14
1.4 SQL*Plus 17
1.4.1 以命令行运行SQL*Plus 17
1.4.2 在Windows环境中运行SQL*Plus 17
1.5 iSQL*Plus 18
1.6 PL/SQL Developer 20
1.6.2 Program Window 21
1.6.1 Command Window 21
1.6.3 Test Window 22
1.7 小结 22
1.8 习题 23
第2章 SQL和PL/SQL综述 24
2.1 关系数据库 24
2.1.1 概念模型 25
2.1.2 数据模型 25
2.2 SQL综述 27
2.2.1 SQL语言特点 27
2.2.2 SQL语言分类 27
2.2.3 SQL语句编写规则 28
2.3 PL/SQL简介 29
2.4.1 表(Table) 31
2.4 Oracle数据库对象 31
2.4.2 索引(Index) 32
2.4.3 约束(Constraint) 32
2.4.4 视图(View) 33
2.4.5 序列(Sequence) 34
2.4.6 同义词(Synonym) 34
2.4.7 过程(Procedure) 34
2.4.8 函数(Function) 35
2.4.9 包(Package) 35
2.4.10 触发器(Trigger) 35
2.4.11 对象类型(Object Type) 36
2.5 小结 36
3.1 查询所有列 37
3.2 查询特定列 37
第3章 基本查询语句 37
3.3 查询日期列 38
3.4 排除重复行 41
3.5 使用算术运算符 42
3.6 处理NULL 42
3.7 连接字符串 44
3.8 使用列别名 45
3.9 小结 47
3.10 习题 47
第4章 限制数据 48
4.1 在WHERE子句中使用常规比较符 48
4.2 在WHERE子句中使用其他比较符 50
4.3 在WHERE子句中使用逻辑操作符 51
4.4 小结 53
4.5 习题 53
5.1 单列排序 54
第5章 排序数据 54
5.2 多列排序 57
5.3 小结 58
5.4 习题 58
第6章 SQL单行函数 59
6.1 数字函数 59
6.1.1 数字函数使用示例 59
6.1.2 数字函数清单 60
6.2 字符函数 61
6.2.1 字符函数使用示例 62
6.2.2 字符函数清单 63
6.3 日期时间函数 64
6.3.1 日期时间函数使用示例 64
6.3.2 日期时间函数清单 66
6.4 转换函数 67
6.4.1 转换函数使用示例 68
6.4.2 转换函数清单 69
6.5 正则表达式函数 71
6.6 对象函数 75
6.7 集合函数 75
6.8 其他函数 75
6.9 小结 77
6.10 习题 77
第7章 操纵数据 79
7.1 增加数据 79
7.1.1 增加单行数据 79
7.1.2 使用子查询复制数据 81
7.1.3 在INTO子句中使用子查询 82
7.1.4 使用多表插入 82
7.2.1 使用表达式更新数据 84
7.2 更新数据 84
7.2.2 使用子查询更新数据 85
7.2.3 使用MERGE语句 86
7.3 删除数据 87
7.4 控制事务 88
7.4.1 事务和锁 88
7.4.2 提交事务 89
7.4.3 回退事务 89
7.4.4 只读事务 90
7.4.5 顺序事务 91
7.5 小结 92
7.6 习题 92
第8章 连接查询 94
8.1 相等连接 94
8.2 不等连接 96
8.3 自连接 97
8.4 外连接 98
8.5 SQL:1999连接 99
8.6 小结 103
8.7 习题 103
第9章 数据分组 105
9.1 常用分组函数 105
9.2 使用GROUP BY和HAVING子句 107
9.3 使用ROLLUP和CUBE操作符 109
9.4 使用GROUPING SETS操作符 113
9.5 连接分组 114
9.6 小结 116
9.7 习题 117
10.1.2 多行子查询 118
10.1.1 单行子查询 118
10.1 单行和多行子查询 118
第10章 子查询 118
10.2 多列子查询 120
10.3 相关子查询 122
10.4 在其他SQL语句中引用子查询 124
10.4.1 在DDL语句中使用子查询 124
10.4.2 在FROM子句中使用子查询 124
10.4.3 标量子查询表达式 125
10.4.4 使用WITH子句重用子查询 126
10.5 小结 126
10.6 习题 126
第11章 其他复杂查询 127
11.1 使用集合操作符 127
11.2 层次查询 131
11.3 使用条件表达式 133
11.3.2 使用CASE表达式 134
11.3.1 使用DECODE函数 134
11.4 Flashback查询 136
11.5 小结 137
11.6 习题 138
第二部分 数据库对象 139
第12章 建立和管理表 139
12.1 表简介 139
12.1.1 设计表 139
12.1.2 行格式 140
12.1.3 常用数据类型 140
12.1.4 伪列ROWID和ROWNUM 142
12.2 建表 143
12.3 修改表 145
12.4.1 截断表 146
12.4 截断和删除表 146
12.4.3 恢复被删除表 147
12.5 显示表信息 147
12.4.2 删除表 147
12.6 小结 148
12.7 习题 149
第13章 使用约束 150
13.1 约束简介 150
13.2 定义约束 153
13.3 维护约束 156
13.3.1 增加约束 156
13.3.2 修改约束名 157
13.3.3 删除约束 158
13.3.4 禁止约束 158
13.4 显示约束信息 159
13.3.5 激活约束 159
13.5 小结 160
13.6 习题 160
第14章 使用视图 162
14.1 视图简介 162
14.1.1 视图的作用 162
14.1.2 视图分类 163
14.1.3 在视图上执行DML操作的原则 163
14.2 建立视图 163
14.2.1 建立简单视图 164
14.2.2 建立复杂视图 164
14.2.3 建立连接视图 165
14.2.4 建立只读视图 165
14.2.6 在建立视图时定义列别名 166
14.2.5 在建立视图时定义CHECK约束 166
14.3 维护视图 167
14.3.1 修改视图定义 167
14.3.2 重新编译视图 167
14.3.3 删除视图 167
14.4 显示视图信息 168
14.5 小结 168
14.6 习题 169
第15章 使用其他对象 170
15.1 使用索引 170
15.1.1 索引的分类 170
15.1.2 使用索引的指导方针 171
15.1.3 建立索引 171
15.1.5 显示索引信息 173
15.1.4 维护索引 173
15.2 使用序列 174
15.2.1 建立序列 175
15.2.2 维护序列 176
15.2.3 显示序列信息 177
15.3 使用同义词 177
15.3.1 建立同义词 178
15.3.2 删除同义词 178
15.3.3 显示同义词信息 179
15.4 小结 179
15.5 习题 180
第三部分 PL/SQL 181
第16章 PL/SQL基础 181
16.1 PL/SQL块简介 181
16.1.1 PL/SQL块结构 181
16.1.2 PL/SQL块分类 183
16.2 定义并使用变量 186
16.2.1 标量(Scalar)变量 186
16.2.2 复合(Composite)变量 189
16.2.3 参照(Reference)变量 191
16.2.4 LOB(Large Object)变量 193
16.2.5 使用子类型定义变量 193
16.2.6 非PL/SQL变量 194
16.3 编写PL/SQL代码 195
16.3.1 PL/SQL词汇单元 195
16.3.2 PL/SQL代码编写规则 198
16.4 小结 199
16.5 习题 200
17.1.1 使用标量变量接收数据 202
17.1 检索单行数据 202
第17章 访问Oracle 202
17.1.2 使用记录变量接收数据 203
17.1.3 嵌入SELECT语句注意事项 203
17.2 操纵数据 205
17.2.1 插入数据 205
17.2.2 更新数据 206
17.2.3 删除数据 206
17.2.4 SQL游标 207
17.3 使用事务控制语句 209
17.4 小结 210
17.5 习题 210
第18章 编写控制结构 212
18.1 条件分支语句 212
18.1.2 二重条件分支 213
18.1.1 简单条件判断 213
18.1.3 多重条件分支 214
18.2 CASE语句 215
18.3 循环语句 217
18.3.1 基本循环 217
18.3.2 WHILE循环 218
18.3.3 FOR循环 218
18.3.4 嵌套循环和标号 219
18.4 顺序控制语句 219
18.5 小结 221
18.6 习题 221
第19章 使用复合数据类型 223
19.1 PL/SQL记录 223
19.1.1 定义PL/SQL记录 223
19.1.2 使用PL/SQL记录 224
19.2 PL/SQL集合 227
19.2.1 PL/SQL表 227
19.2.2 嵌套表 228
19.2.3 变长数组(VARRAY) 231
19.2.4 PL/SQL记录表 232
19.3 PL/SQL集合方法 232
19.4 批量绑定 237
19.4.1 传统循环和批量绑定 237
19.4.2 使用BULK COLLECT子句 239
19.4.3 使用FORALL语句 240
19.4.4 使用INDICES OF和VALUES OF子句 242
19.5 PL/SQL集合高级特性 243
19.5.1 集合赋值 243
19.5.2 集合比较 246
19.5.3 集合嵌套 249
19.6 小结 252
19.7 习题 252
第20章 使用游标 253
20.1 显式游标 253
20.1.1 显式游标属性 253
20.1.2 使用显式游标 254
20.1.3 游标FOR循环 256
20.1.4 参数游标 258
20.1.5 更新或删除游标行 258
20.2 游标变量 261
20.3 使用批量提取 263
20.4 使用CURSOR表达式 264
20.6 习题 265
20.5 小结 265
第21章 异常处理 267
21.1 异常简介 267
21.2 捕捉并处理异常 268
21.2.1 预定义异常 268
21.2.2 非预定义异常 270
21.2.3 自定义异常 271
21.3 使用异常处理函数 273
21.4 使用编译警告 274
21.5 小结 276
21.6 习题 276
第22章 本地动态SQL 277
22.1 动态SQL简介 277
22.2 使用EXECUTE IMMEDIATE语句 278
22.2.1 处理DDL和DCL语句 278
22.2.2 处理DML语句 279
22.2.3 处理单行查询 281
22.3 处理多行查询 282
22.4 在动态SQL中使用批量绑定 283
22.5 小结 286
22.6 习题 286
第23章 PL/SQL过程 287
23.1 使用过程参数 287
23.2 调用过程 289
23.3 过程开发示例 290
23.3.1 为过程参数指定默认值 290
23.3.2 使用异常处理 291
23.3.3 自定义错误消息 292
23.3.4 使用记录变量作为输入参数 293
23.3.5 使用记录变量作为输出参数 294
23.3.6 使用集合变量作为输入参数 295
23.3.7 使用集合变量作为输出参数 296
23.4 维护过程 297
23.5 小结 298
23.6 习题 298
第24章 PL/SQL函数 299
24.1 使用函数参数 299
24.2 调用函数 301
24.3 函数开发示例 303
24.3.1 使用异常处理 303
24.3.2 使用记录类型作为返回类型 304
24.3.3 使用集合类型作为返回类型 305
24.4 管理函数 306
24.6 习题 307
24.5 小结 307
第25章 PL/SQL包 308
25.1 包组件 308
25.1.1 建立包规范 308
25.1.2 建立包体 309
25.2 调用包组件 310
25.3 包开发示例 311
25.3.1 使用记录类型 311
25.3.2 使用集合类型 312
25.3.3 使用重载 314
25.3.4 使用构造过程 315
25.3.5 使用纯度级别 317
25.4 维护包 318
25.6 习题 319
25.5 小结 319
第26章 触发器 321
26.1 DML触发器 321
26.1.1 语句触发器 321
26.1.2 行触发器 323
26.1.3 DML触发器开发示例 325
26.2 INSTEAD OF触发器 328
26.3 事件触发器 329
26.3.1 事件属性函数 329
26.3.2 系统事件触发器 330
26.3.3 客户事件触发器 331
26.4 维护触发器 333
26.5 小结 334
26.6 习题 334
第27章 使用对象类型 336
27.1 对象类型简介 336
27.2 建立对象类型 337
27.3 使用对象方法 339
27.4 使用对象表 341
27.4.1 使用行对象和列对象 342
27.4.2 在对象表上引用对象方法 343
27.5 对象类型开发示例 345
27.5.1 嵌套对象类型 345
27.5.2 对象类型继承 349
27.5.3 参照对象类型 351
27.6 维护对象类型 353
27.7 小结 356
27.8 习题 356
第四部分 PL/SQL系统包 358
第28章 使用大对象 358
28.1 LOB简介 358
28.2 使用CLOB 359
28.3 使用BFILE 362
28.4 使用BLOB 363
28.5 DBMS_LOB包 365
28.6 小结 371
第29章 读写OS文件 372
29.1 写入OS文件 372
29.2 读取OS文件 373
29.3 UTL_FILE包 374
29.4 小结 378
第30章 DBMS_SQL动态SQL 379
30.1 实现动态SQL 379
30.2 DBMS_SQL 383
30.3 小结 389
31.1 管理表统计 390
第31章 管理统计 390
31.2 管理索引统计 391
31.3 管理直方图统计 392
31.4 管理方案和数据库统计 392
31.5 管理系统统计 393
31.6 DBMS_STATS包 394
31.7 小结 411
第32章 使用数据库资源管理器 412
32.1 实现资源管理 412
32.2 DBMS_RESOURCE_MANAGER_PRIVS包 415
32.3 DBMS_RESOURCE_MANAGER包 416
32.4 小结 421
第33章 数据加密和解密 422
33.1 实现数据加密和解密 422
33.2 DBMS_OBFUSCATION_TOOLKIT 424
33.3 DBMS_CRYPTO 426
33.4 小结 429
第34章 开发Web应用 430
34.1 配置数据库访问描述符 430
34.2 Web应用开发示例 432
34.3 HTP和HTF 436
34.4 OWA_COOKIE 457
34.5 OWA_IMAGE 457
34.6 OWA_OPT_LOCK 458
34.7 OWA_PATTERN 459
34.8 OWA_SEC 461
34.9 OWA_TEXT 462
34.10 OWA_UTIL 463
34.11 小结 467
第35章 使用调度程序 468
35.1 使用作业 468
35.2 使用程序 469
35.3 使用时间表 470
35.4 使用作业类 471
35.5 DBMS_SCHEDULE包 472
35.6 小结 482
第36章 使用Flashback 483
36.1 实现Flashback 483
36.2 DBMS_FLASHBACK 484
36.3 小结 485
第37章 使用重定义联机表 486
37.1 重定义联机表 486
37.2 DBMS_REDEFINITION 488
37.3 小结 490
第38章 修正损坏块 491
38.1 实现损坏块修正 491
38.2 DBMS_REPAIR 493
38.3 小结 495
第39章 使用日志挖掘 496
39.1 实现日志挖掘 496
39.2 DBMS_LOGMNR D包 498
39.3 DBMS_LOGMNR包 498
39.4 小结 500
第40章 使用管道 501
40.1 实现管道 501
40.2 DBMS_PIPE包 503
40.3 小结 505
41.1 实现精细访问控制 506
第41章 使用精细访问控制 506
41.2 DBMS_RLS 510
41.3 小结 513
第42章 使用精细审计 514
42.1 实现精细审计 514
42.2 DBMS_FGA包 515
42.3 小结 516
第43章 使用预警事件 517
43.1 实现预警事件 517
43.2 DBMS_ALERT 518
43.3 小结 519
第44章 转换ROWID 520
44.1 实现ROWID转换 520
44.2 DBMS ROWID 521
44.3 小结 523
第45章 其他常用包 524
45.1 DBMS_DDL 524
45.2 DBMS_OUTPUT 525
45.3 DBMS_RANDOM 528
45.4 DBMS_SESSION 530
45.5 DBMS_SHARED_POOL 533
45.6 DBMS_SPACE 534
45.7 DBMS_SPACE_ADMIN 539
45.8 DBMS_TRANSACTION 542
45.9 DBMS_TTS 544
45.10 DBMS_UTILITY 545
45.11 UTL_INADDR 550
附录A 习题答案 552
附录B SQL*Plus命令 570