内容简介
第Ⅰ部分 Oracle PL/SQL
第1章 Oracle PL/SQL程序开发概览
1.1 PL/SQL的历史和背景
1.2 Oracle开发架构
1.2.1 数据库
1.2.2 PL/SQL语言
1.2.3 Oracle处理架构
1.2.4 两层模型
1.2.5 n层模型
1.3 本章小结
1.4 精熟测验
第2章 新特性
2.1 SQL新特性
2.1.1 用数据目录DIRECTORY限定LIBRARY对象
2.1.2 使用有效时间(VT)来定义表
2.1.3 增强的Oracle原生LEFT OUTER JOIN语法
2.1.4 基于序列的列的默认值
2.1.5 显式NULL插入的默认值
2.1.6 标识列
2.1.7 STRING和RAW类型大小限制的增加
2.1.8 将SQL语句的结果传递给外部程序
2.1.9 查询行限制和偏移的原生SQL支持
2.1.10 MySQL应用程序的Oracle数据库驱动程序
2.1.11 SQL CROSS APPLY、OUTER APPLY和LATERAL
2.1.12 BEQUEATH CURRENT_USER视图
2.2 PL/SQL新特性
2.2.1 调用者权限函数的缓存
2.2.2 添加PL/SQL程序单元调用者到白名单
2.2.3 PL/SQL类型的原生客户端API支持
2.2.4 新的PL/SQL包utl_call_stack
2.2.5 dbms_utility包添加了expand_sql_txt子程序
2.2.6 dbms_sql包为parse过程添加了新的模式
2.2.7 SQL WITH子句中的PL/SQL函数
2.2.8 SQL中允许PL/SQL特定的数据类型
2.2.9 隐式的REF CURSOR参数绑定
2.3 支持脚本
2.4 本章小结
2.5 精熟测验
第3章 PL/SQL基础知识
3.1 块结构
3.1.1 执行块
3.1.2 基本块结构
3.1.3 声明块
3.1.4 异常块
3.2 块中变量的行为
3.2.1 匿名块
3.2.2 嵌套匿名块
3.2.3 局部命名块
3.2.4 存储命名块
3.3 基本标量和复合数据类型
3.3.1 标量数据类型
3.3.2 属性和表的锚定
3.3.3 复合数据类型
3.4 控制结构
3.4.1 条件结构
3.4.2 迭代结构
3.5 异常
3.5.1 用户自定义异常
3.5.2 动态的用户自定义异常
3.6 批量操作
3.7 函数、过程和包
3.7.1 函数
3.7.2 过程
3.7.3 包
3.8 事务作用域
3.8.1 单事务作用域
3.8.2 多事务作用域
3.9 数据库触发器
3.10 本章小结
3.11 精熟测验
第4章 语言基本知识
4.1 词汇单元
4.1.1 分隔符
4.1.2 标识符
4.1.3 字面值
4.1.4 注释
4.2 变量和数据类型
4.2.1 变量数据类型
4.2.2 标量数据类型
4.2.3 大对象
4.2.4 复合数据类型
4.2.5 系统引用游标
4.3 本章小结
4.4 精熟测验
第5章 控制结构
5.1 条件语句
5.1.1 IF语句
5.1.2 CASE语句
5.1.3 条件编译语句
5.2 迭代语句
5.2.1 简单循环语句
5.2.2 FOR循环语句
5.2.3 WHILE循环语句
5.3 游标结构
5.3.1 隐式游标
5.3.2 显式游标
5.4 批语句
5.4.1 BULK COLLECT INTO语句
5.4.2 FORALL语句
5.5 支持脚本
5.6 本章小结
5.7 精熟测验
第6章 集合
6.1 集合介绍
6.2 对象类型:变长数组和表集合
6.2.1 变长数组集合
6.2.2 表集合
6.3 关联数组
6.4 Oracle集合API
6.4.1 COUNT方法
6.4.2 DELETE方法
6.4.3 EXISTS方法
6.4.4 EXTEND方法
6.4.5 FIRST方法
6.4.6 LAST方法
6.4.7 LIMIT方法
6.4.8 NEXT方法
6.4.9 PRIOR方法
6.4.10 TRIM方法
6.5 支持脚本
6.6 本章小结
6.7 精熟测验
第7章 错误管理
7.1 异常类型和作用域
7.1.1 编译时错误
7.1.2 运行时错误
7.2 异常管理内置函数
7.3 用户定义的异常
7.3.1 声明用户定义的异常
7.3.2 动态的用户定义的异常
7.4 异常堆栈函数
7.5 支持脚本
7.6 本章小结
7.7 精熟测验
第Ⅱ部分 PL/SQL编程
第8章 函数和过程
8.1 函数和过程架构
8.2 事务作用域
8.2.1 调用子例程
8.2.2 位置表示法
8.2.3 命名表示法
8.2.4 混合表示法
8.2.5 排除表示法
8.2.6 SQL调用表示法
8.3 函数
8.3.1 函数模型选择
8.3.2 创建选项
8.3.3 按值传递函数
8.3.4 按引用传递函数
8.4 过程
8.4.1 按值传递过程
8.4.2 按引用传递过程
8.5 支持脚本
8.6 本章小结
8.7 精熟测验
第9章 包
9.1 包架构
9.2 包规范
9.2.1 原型特性
9.2.2 连续可重用预编译器指令
9.2.3 变量
9.2.4 类型
9.2.5 组件:函数与过程
9.3 包主体
9.3.1 原型特性
9.3.2 变量
9.3.3 类型
9.3.4 组件:函数与过程
9.4 定义者与调用者权限模型
9.5 管理数据库目录中的包
9.5.1 查找、验证和描述包
9.5.2 检查依赖关系
9.5.3 比较验证方法:时间戳与签名
9.6 本章小结
9.7 精熟测验
第10章 大对象
10.1 使用内部存储的LOB类型
10.1.1 低于32K的LOB赋值
10.1.2 高于32K的LOB赋值
10.2 将文件读入内部存储的列
10.2.1 将本地文件读入CLOB或NCLOB列
10.2.2 将本地文件读入BLOB列
10.2.3 通过Web页面处理LOB
10.3 使用二进制文件(BFILE)
10.3.1 创建和使用虚拟目录
10.3.2 读取规范路径名与文件名
10.4 了解dbms_lob包
10.4.1 包常量
10.4.2 包异常
10.4.3 打开与关闭方法
10.4.4 操作方法
10.4.5 内省方法
10.4.6 BFILE方法
10.4.7 临时LOB方法
10.4.8 安全链接方法
10.5 支持脚本
10.5.1 从LONG转换为CLOB的脚本
10.5.2 管理来自于文件系统的LOB
10.5.3 通过web管理CLOB和BLOB LOB
10.5.4 通过Web管理BFILE LOB
10.6 本章小结
10.7 精熟测验
第11章 对象类型
11.1 对象基础知识
11.1.1 声明对象类型
11.1.2 实现对象主体
11.1.3 对象类型白名单
11.1.4 getter和setter
11.1.5 静态成员方法
11.1.6 比较对象
11.2 继承和多态
11.2.1 声明子类
11.2.2 实现子类
11.2.3 类型演变
11.3 实现对象类型集合
11.3.1 声明对象类型集合
11.3.2 实现对象类型集合
11.4 支持脚本
11.5 本章小结
11.6 精熟测验
第12章 触发器
12.1 触发器简介
12.2 数据库触发器架构
12.3 数据定义语言触发器
12.3.1 事件属性函数
12.3.2 构建DDL触发器
12.4 数据操作语言触发器
12.4.1 语句级触发器
12.4.2 行级触发器
12.5 复合触发器
12.6 Instead of触发器
12.7 系统和数据库事件触发器
12.8 触发器限制
12.8.1 最大触发器尺寸
12.8.2 SQL语句
12.8.3 LONG和LONGRAW数据类型
12.8.4 变异表
12.8.5 系统触发器
12.9 支持脚本
12.10 本章小结
12.11 精熟测验
第13章 动态SQL
13.1 动态SQL架构
13.2 本地动态SQL(NDS)
13.2.1 动态语句
13.2.2 带输入的动态语句
13.2.3 带输入和输出的动态语句
13.2.4 带未知数量的输入的动态语句
13.3 dbms_sql包
13.3.1 动态语句
13.3.2 带输入变量的动态语句
13.3.3 带输入变量和固定输出的动态语句
13.3.4 带输入和输出变量的动态语句
13.3.5 dbms_sql包定义
13.4 支持脚本
13.5 本章小结
13.6 精熟测验
第Ⅲ部分 附录和术语表
附录A Oracle数据库入门
A.1 Oracle数据库架构
A.2 启动和停止Oracle Database 12c服务器
A.2.1 UNIX或Linux操作
A.2.2 Microsoft Windows操作
A.3 启动和停止Oracle侦听器
A.4 多版本并发控制
A.4.1 数据事务
A.4.2 DML锁定和隔离控制
A.5 定义者权限和调用者权限
A.5.1 定义者权限
A.5.2 调用者权限
A.6 SQL交互和批处理
A.6.1 SQL*Plus命令行界面
A.6.2 Oracle SQL Developer界面
A.7 数据库管理员
A.7.1 配置用户
A.7.2 使用数据库约束
A.7.3 安全加固
A.7.4 数据管理
A.8 SQL调优
A.8.1 EXPLAIN PLAN语句
A.8.2 DBMS_XPLAN包
A.9 SQL跟踪
A.9.1 跟踪会话状态
A.9.2 将原始跟踪文件转换为可读跟踪文件
A.10 本附录小结
附录B SQL入门
B.1 Oracle SQL数据类型
B.2 数据定义语言(DDL)
B.2.1 CREATE语句
B.2.2 ALTER语句
B.2.3 RENAME语句
B.2.4 DROP语句
B.2.5 TRUNCATE语句
B.2.6 COMMENT语句
B.3 数据管理语言(DML)
B.3.1 符合ACID的事务
B.3.2 INSERT语句
B.3.3 UPDATE语句
B.3.4 DELETE语句
B.3.5 MERGE语句
B.4 事务控制语言(TCL)
B.5 查询:SELECT语句
B.5.1 返回列或者返回列运算结果的查询
B.5.2 聚合查询
B.5.3 选择性返回列或结果的查询
B.5.4 联接结果
B.5.5 数据的联接
B.5.6 集合的联接
B.6 本附录小结
附录C SQL内置函数
C.1 字符函数
C.1.1 ASCII函数
C.1.2 ASCHSTR函数
C.1.3 CHR函数
C.1.4 CONCAT函数
C.1.5 INITCAP函数
C.1.6 INSTR函数
C.1.7 LENGTH函数
C.1.8 LOWER函数
C.1.9 LPAD函数
C.1.10 LTRIM函数
C.1.11 REPLACE函数
C.1.12 REVERSE函数
C.1.13 RPAD函数
C.1.14 RTRIM函数
C.1.15 UPPER函数
C.2 数据类型转换函数
C.2.1 CAST函数
C.2.2 CONVERT函数
C.2.3 TO_CHAR函数
C.2.4 TO_CLOB函数
C.2.5 TO_DATE函数
C.2.6 TO_LOB函数
C.2.7 TO_NCHAR函数
C.2.8 TO_NCLOB函数
C.2.9 TO_NUMBER函数
C.3 日期-时间转换函数
C.3.1 ADD_MONTHS函数
C.3.2 CURRENT_DATE函数
C.3.3 CURRENT_TIMESTAMP函数
C.3.4 DBTIMEZONE函数
C.3.5 EXTRACT函数
C.3.6 FROM_TZ函数
C.3.7 LAST_DAY函数
C.3.8 LOCALTIMESTAMP函数
C.3.9 MONTHS_BETWEEN函数
C.3.10 NEW_TIME函数
C.3.11 ROUND函数
C.3.12 SYSDATE函数
C.3.13 SYSTIMESTAMP函数
C.3.14 TO_CHAR(date)函数
C.3.15 TO_DSINTERVAL函数
C.3.16 TO_TIMESTAMP函数
C.3.17 TO_TIMESTAMP_TZ函数
C.3.18 TO-YMINTERVAL函数
C.3.19 TRUNC(date)函数
C.3.20 TZ OFFSET函数
C.4 集合管理函数
C.4.1 CARDINALITY函数
C.4.2 COLLECT函数
C.4.3 POWERMULTISET函数
C.4.4 POWERMULTISET_BY_CARDINALITY函数
C.4.5 SET函数
C.5 集合运算符
C.5.1 CARDINALITY运算符
C.5.2 EMPTY运算符
C.5.3 MULTISET运算符
C.5.4 MULTISET EXCEPT运算符
C.5.5 MULTISET INTERSECT运算符
C.5.6 MULTISET UNION运算符
C.5.7 SET运算符
C.5.8 SUBMULTISET OF运算符
C.6 数字函数
C.6.1 CEIL函数
C.6.2 FLOOR函数
C.6.3 MOD函数
C.6.4 POWER函数
C.6.5 REMAINDER函数
C.6.6 ROUND函数
C.7 错误报告函数
C.7.1 SQLCODE函数
C.7.2 SQLERRM函数
C.8 杂项函数
C.8.1 BFILENAME函数
C.8.2 COALESCE函数
C.8.3 DECODE函数
C.8.4 DUMP函数
C.8.5 EMPTY_BLOB函数
C.8.6 EMPTY_CLOB函数
C.8.7 GREATEST函数
C.8.8 LEAST函数
C.8.9 NANVL函数
C.8.10 NULLIF函数
C.8.11 NVL函数
C.8.12 SYS_CONTEXT函数
C.8.13 TABLE函数
C.8.14 TREAT函数
C.8.15 USERENV函数
C.8.16 VSIZE函数
C.9 本附录小结
附录D PL/SQL内置程序包和类型
D.1 Oracle Database 11g和12c的新程序包
D.2 程序包使用示例
D.2.1 DBMS_APPLICATION_INFO示例
D.2.2 DBMS_COMPARISON
D.2.3 DBMS_CRYPTO
D.2.4 DBMS_FGA
D.2.5 案例研究:查询工具
D.3 支持脚本
D.4 本附录小结
附录E 正则表达式入门
E.1 正则表达式简介
E.1.1 字符类
E.1.2 校准类
E.1.3 元字符
E.1.4 元序列
E.1.5 字面值
E.2 正则表达式实现
E.2.1 REGEXP_COUNT函数
E.2.2 REGEXP_INSTR函数
E.2.3 REGEXP_LIKE函数
E.2.4 REGEXP_REPLACE函数
E.2.5 REGEXP_SUBSTR函数
E.3 支持脚本
E.4 本附录小结
附录F 包装PL/SQL代码入门
F.1 包装PL/SQL的限制
F.1.1 PL/SQL的wrap实用程序的局限性
F.1.2 DBMS_DDL.WRAP函数的限制
F.2 使用wrap命令行实用程序
F.3 使用DBMS DDL命令行实用程序
F.3.1 WRAP函数
F.3.2 CREATE_WRAPPED过程
F.4 本附录小结
附录G PL/SQL分层的配置文件入门
G.1 配置架构
G.2 收集配置文件数据
G.3 配置文件数据
G.3.1 读取原始输出
G.3.2 定义PL/SQL配置文件表
G.3.3 查询分析数据
G.4 使用plshprof命令行实用程序
G.5 支持脚本
G.6 本附录小结
附录H PL/SQL保留字和关键字
附录I 精熟测验答案
术语表