Oracle数据库10g新的SQL和PLSQL功能
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SELECT c1 FROM t1 WHERE REGEXP_LIKE(c1, ‘Joh?n Ste(ph|v)ens?’); Jon Stevens John Stephens John Stevens
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
和 DDL 一起使用
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
LOB 增强
Ÿ LOB 普遍用于存储非结构化的数 据(文本、AVI、基因/蛋白序列等 )
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
LOB 性能改善
Ÿ 访问内联 (< 4KB) LOB 时获得 5 倍 的性能增益
PL/SQL 示例
Ÿ 使用欧拉级数计算 = sqrt ( 6 * ( 1 + 1/2*2 + 1/3*2 + ... ) )
Ÿ 使用牛顿方法近似真值的平方根
Ÿ 赋值、加、乘、除、比较、绝对值
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
procedure Euler_Pi_Series is
subtype
My_Number is binary_double;
zero
constant My_Number := 0.0d;
one
constant My_Number := 1.0d;
two
constant My_Number := 2.0d;
six
constant My_Number := 6.0d;
Oracle数据库10g新的 SQL和PLSQL功能
学习改变命运,知 识创造未来
2021年2月17日星期三
•Oracle 数据库 10g •中新的 SQL 和 PL/SQL 功能
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
议程
Ÿ 新的 SQL 特性 Ÿ 新的 PL/SQL 特性 Ÿ PL/SQL 的速度是原来的两倍 Ÿ 总结 Ÿ 问答
Ÿ (在 9iR2 中) 临时 LOB 使用引用计算提供了 几个数量级的性能增益
– 在读取时引用 (Reference on Read) – 在写入时复制 (Copy on Write)
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
Oracle SQL 引擎的发展
•数据和处理复杂性
•对象扩展 •数据插件
•Oracle8
•XML 数据库 •SQL/XML •W3C 标准 •数据挖掘
•SQL /XML 集成
•(XMLType、URIType 等)
OLAP
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点函数
Ÿ 新的类型转换函数
– TO_BINARY_FLOAT、TO_BINARY_DOUBLE – TO_NUMBER
Ÿ SQL 函数支持
– 数值函数(sin、cos 等) – 聚合函数(sum、avg、stddev 等) – 分析函数(sum、avg、stddev 等)
* NaN (不是数字) – e.g. 0/0, infinity/infinity
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点约束
create table floating_point_table2 ( dblPrm binary_double constraint
dbl_prm primary key, fltFrn binary_float constraint flt_frn
references floating_point_table1(fltPrm) on delete cascade);
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
它在哪里匹配?
– REGEXP_REPLACE 替换匹配的记录。
Ÿ 匹配选项
Ÿ 语言环境支持
Ÿ LOB 支持
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
REGEXP_LIKE
Ÿ 确定模式是否存在。 Ÿ 查找名称 ‘Jon Stevens‘ 的变体
– John 或 Jon – Steven 或 Stevens 或 Stephen 或 Stephens
– HTML FORMS 中的验证 – 生物信息学 – 服务器配置 – 数据挖掘
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
Oracle 正则表达式
Ÿ 对数据库的本地支持
– SQL 和 PL/SQL 中的接口 – 基于 POSIX 标准 – 与 GNU、PERL、Java、Xquery 等同步
新的 SQL 特性
Ÿ 正则表达式 Ÿ 本地数值结构 Ÿ LOB 增强 Ÿ 集合增强wenku.baidu.com
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
正则表达式简介
Ÿ 起源于数学 Ÿ 首先在 UNIX 中计算机化
– 从 ed、grep、perl、cgi、web 到任何地方
Ÿ 多种应用程序
root prev_root prod_over_six prod pi prev_pi step
学习改变命运,知 识创造未来
My_Number; My_Number; My_Number; My_Number; My_Number; My_Number; My_Number;
Oracle数据库10g新的SQL和PLSQL功能
Ÿ 可以增强现有的功能
– 支持 PERL 缩写 – 提取第 n 个子表达式
Ÿ 替换大量代码行
– 可以简化字符串处理函数
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
性能考虑事项
Ÿ 模式匹配可能很复杂
– 需要编译成状态机 – 词法分析 – 检查所有可能的分支,直到发现匹配
prod
:= six*prod_over_six;
prev_root
:= prod;
root
:= prod/two;
while Abs(root - prev_root) > root_toler
loop
prev_root := root;
root
:= (root + prod/root)/two;
Ÿ 允许使用过滤器的数据,并带检查约束
– 邮政编码 (ZIP code) 列是 VARCHAR2(5),但可 以包含任意的 5 个字符。
Ÿ 使用视图的查询子集和格式化
– 将电话号码格式化为 (xxx) xxx-xxxx
Ÿ 创建基于函数的索引
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
toler
constant My_Number := 0.00000000001d;
root_toler constant My_Number := toler/1000.0d;
root prev_root prod_over_six prod pi prev_pi step
学习改变命运,知 识创造未来
Ÿ 每条语句编译一次
– 对于复杂情景可能比 LIKE 更快 Ÿ 邮政编码检查快 5 倍通常比等价的 PL/SQL 更 快 Ÿ
Ÿ 编写快速执行的表达式
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点数据类型
Ÿ 两种新的数值数据类型 BINARY_FLOAT,
BINARY_DOUBLE – 二进制浮点运算的 IEEE 754 标准 – 是许多其他标准(例如,Java、XML 模式 )和硬件平台的一部分 – 普遍存在于商务智能、生命科学、工程/科 学计算
My_Number; My_Number; My_Number; My_Number; My_Number; My_Number; My_Number;
Oracle数据库10g新的SQL和PLSQL功能
PL/SQL 示例
Ÿ 使用欧拉级数计算
Ÿ 近似 300,000 次迭代 Ÿ NUMBER 花费约 27.7 秒 Ÿ BINARY_DOUBLE 花费约 3.7 秒 Ÿ 提高倍数:约 7 倍
end loop;
pi := root;
end loop;
学习改变命e运n,知d Euler_Pi_Series;
识创造未来
Oracle数据库10g新的SQL和PLSQL功能
subtype
My_Number is number;
zero
constant My_Number := 0.0;
one
...
begin
pi
:= one;
prev_pi
:= zero;
prod_over_six := zero;
step
:= zero;
while pi - prev_pi > toler
loop
prev_pi
:= pi;
step
:= step + one;
prod_over_six := prod_over_six + one/(step*step);
constant My_Number := 1.0;
two
constant My_Number := 2.0;
six
constant My_Number := 6.0;
toler
constant My_Number := 0.00000000001;
root_toler constant My_Number := toler/1000.0;
与 PL/SQL 一起使用
Ÿ 非常强大的字符串处理功能
src := REGEXP_REPLACE (src, ‘<regexp_1>’); src := REGEXP_REPLACE (src, ‘<regexp_2>’);
src := REGEXP_REPLACE (src, ‘<regexp_3>’);
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点数据类型与数值数据类 型
Ÿ 比 NUMBER 类型效率更高
– 硬件运算/数学运算快 5– 10 倍 – 占用更少的内存/磁盘空间(5/9 字节与 1 – 22 字节) – BINARY_DOUBLE 值范围更大(e308 与 e125) – 无需类型转换(使用与字节顺序无关的存储格式)
Ÿ 对 SQL、PL/SQL、Java、XML 模式注册、 ODP.NET 和 OCI/OCCI 的无缝支持
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点约束
create table floating_point_table1 ( fltNnull binary_float constraint flt_null not null, dblNnull binary_double constraint dbl_null not null, fltUnq binary_float constraint flt_unq unique, dblUnq binary_double constraint dbl_unq unique, fltChk binary_float constraint
flt_chk check ( fltChk is not NaN ) , dblChk binary_double constraint
dbl_chk check ( dblChk is not infinite) , fltPrm binary_float constraint flt_prm primary key);
Ÿ 描述数据的模式变为数据的一个属性
Ÿ 数据库内部强大的字符串处理
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
主要特性
Ÿ POSIX 扩展的正则表达式
Ÿ 接口
– REGEXP_LIKE
模式是否匹配?
– REGEXP_SUBSTR
它与什么匹配?
– REGEXP_INSTR
•Datetime 类型
•ANSI 联接
•CASE 表达式 •SQL/Java 集成
•interMedia 类型
•Oracle8 i
•Oracle9 i
•Oracle9i R2
•网络 •Web 服务 •正则表达式 •本地数值结构
•BLAST
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
和 DDL 一起使用
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
LOB 增强
Ÿ LOB 普遍用于存储非结构化的数 据(文本、AVI、基因/蛋白序列等 )
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
LOB 性能改善
Ÿ 访问内联 (< 4KB) LOB 时获得 5 倍 的性能增益
PL/SQL 示例
Ÿ 使用欧拉级数计算 = sqrt ( 6 * ( 1 + 1/2*2 + 1/3*2 + ... ) )
Ÿ 使用牛顿方法近似真值的平方根
Ÿ 赋值、加、乘、除、比较、绝对值
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
procedure Euler_Pi_Series is
subtype
My_Number is binary_double;
zero
constant My_Number := 0.0d;
one
constant My_Number := 1.0d;
two
constant My_Number := 2.0d;
six
constant My_Number := 6.0d;
Oracle数据库10g新的 SQL和PLSQL功能
学习改变命运,知 识创造未来
2021年2月17日星期三
•Oracle 数据库 10g •中新的 SQL 和 PL/SQL 功能
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
议程
Ÿ 新的 SQL 特性 Ÿ 新的 PL/SQL 特性 Ÿ PL/SQL 的速度是原来的两倍 Ÿ 总结 Ÿ 问答
Ÿ (在 9iR2 中) 临时 LOB 使用引用计算提供了 几个数量级的性能增益
– 在读取时引用 (Reference on Read) – 在写入时复制 (Copy on Write)
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
Oracle SQL 引擎的发展
•数据和处理复杂性
•对象扩展 •数据插件
•Oracle8
•XML 数据库 •SQL/XML •W3C 标准 •数据挖掘
•SQL /XML 集成
•(XMLType、URIType 等)
OLAP
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点函数
Ÿ 新的类型转换函数
– TO_BINARY_FLOAT、TO_BINARY_DOUBLE – TO_NUMBER
Ÿ SQL 函数支持
– 数值函数(sin、cos 等) – 聚合函数(sum、avg、stddev 等) – 分析函数(sum、avg、stddev 等)
* NaN (不是数字) – e.g. 0/0, infinity/infinity
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点约束
create table floating_point_table2 ( dblPrm binary_double constraint
dbl_prm primary key, fltFrn binary_float constraint flt_frn
references floating_point_table1(fltPrm) on delete cascade);
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
它在哪里匹配?
– REGEXP_REPLACE 替换匹配的记录。
Ÿ 匹配选项
Ÿ 语言环境支持
Ÿ LOB 支持
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
REGEXP_LIKE
Ÿ 确定模式是否存在。 Ÿ 查找名称 ‘Jon Stevens‘ 的变体
– John 或 Jon – Steven 或 Stevens 或 Stephen 或 Stephens
– HTML FORMS 中的验证 – 生物信息学 – 服务器配置 – 数据挖掘
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
Oracle 正则表达式
Ÿ 对数据库的本地支持
– SQL 和 PL/SQL 中的接口 – 基于 POSIX 标准 – 与 GNU、PERL、Java、Xquery 等同步
新的 SQL 特性
Ÿ 正则表达式 Ÿ 本地数值结构 Ÿ LOB 增强 Ÿ 集合增强wenku.baidu.com
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
正则表达式简介
Ÿ 起源于数学 Ÿ 首先在 UNIX 中计算机化
– 从 ed、grep、perl、cgi、web 到任何地方
Ÿ 多种应用程序
root prev_root prod_over_six prod pi prev_pi step
学习改变命运,知 识创造未来
My_Number; My_Number; My_Number; My_Number; My_Number; My_Number; My_Number;
Oracle数据库10g新的SQL和PLSQL功能
Ÿ 可以增强现有的功能
– 支持 PERL 缩写 – 提取第 n 个子表达式
Ÿ 替换大量代码行
– 可以简化字符串处理函数
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
性能考虑事项
Ÿ 模式匹配可能很复杂
– 需要编译成状态机 – 词法分析 – 检查所有可能的分支,直到发现匹配
prod
:= six*prod_over_six;
prev_root
:= prod;
root
:= prod/two;
while Abs(root - prev_root) > root_toler
loop
prev_root := root;
root
:= (root + prod/root)/two;
Ÿ 允许使用过滤器的数据,并带检查约束
– 邮政编码 (ZIP code) 列是 VARCHAR2(5),但可 以包含任意的 5 个字符。
Ÿ 使用视图的查询子集和格式化
– 将电话号码格式化为 (xxx) xxx-xxxx
Ÿ 创建基于函数的索引
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
toler
constant My_Number := 0.00000000001d;
root_toler constant My_Number := toler/1000.0d;
root prev_root prod_over_six prod pi prev_pi step
学习改变命运,知 识创造未来
Ÿ 每条语句编译一次
– 对于复杂情景可能比 LIKE 更快 Ÿ 邮政编码检查快 5 倍通常比等价的 PL/SQL 更 快 Ÿ
Ÿ 编写快速执行的表达式
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点数据类型
Ÿ 两种新的数值数据类型 BINARY_FLOAT,
BINARY_DOUBLE – 二进制浮点运算的 IEEE 754 标准 – 是许多其他标准(例如,Java、XML 模式 )和硬件平台的一部分 – 普遍存在于商务智能、生命科学、工程/科 学计算
My_Number; My_Number; My_Number; My_Number; My_Number; My_Number; My_Number;
Oracle数据库10g新的SQL和PLSQL功能
PL/SQL 示例
Ÿ 使用欧拉级数计算
Ÿ 近似 300,000 次迭代 Ÿ NUMBER 花费约 27.7 秒 Ÿ BINARY_DOUBLE 花费约 3.7 秒 Ÿ 提高倍数:约 7 倍
end loop;
pi := root;
end loop;
学习改变命e运n,知d Euler_Pi_Series;
识创造未来
Oracle数据库10g新的SQL和PLSQL功能
subtype
My_Number is number;
zero
constant My_Number := 0.0;
one
...
begin
pi
:= one;
prev_pi
:= zero;
prod_over_six := zero;
step
:= zero;
while pi - prev_pi > toler
loop
prev_pi
:= pi;
step
:= step + one;
prod_over_six := prod_over_six + one/(step*step);
constant My_Number := 1.0;
two
constant My_Number := 2.0;
six
constant My_Number := 6.0;
toler
constant My_Number := 0.00000000001;
root_toler constant My_Number := toler/1000.0;
与 PL/SQL 一起使用
Ÿ 非常强大的字符串处理功能
src := REGEXP_REPLACE (src, ‘<regexp_1>’); src := REGEXP_REPLACE (src, ‘<regexp_2>’);
src := REGEXP_REPLACE (src, ‘<regexp_3>’);
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点数据类型与数值数据类 型
Ÿ 比 NUMBER 类型效率更高
– 硬件运算/数学运算快 5– 10 倍 – 占用更少的内存/磁盘空间(5/9 字节与 1 – 22 字节) – BINARY_DOUBLE 值范围更大(e308 与 e125) – 无需类型转换(使用与字节顺序无关的存储格式)
Ÿ 对 SQL、PL/SQL、Java、XML 模式注册、 ODP.NET 和 OCI/OCCI 的无缝支持
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
本地浮点约束
create table floating_point_table1 ( fltNnull binary_float constraint flt_null not null, dblNnull binary_double constraint dbl_null not null, fltUnq binary_float constraint flt_unq unique, dblUnq binary_double constraint dbl_unq unique, fltChk binary_float constraint
flt_chk check ( fltChk is not NaN ) , dblChk binary_double constraint
dbl_chk check ( dblChk is not infinite) , fltPrm binary_float constraint flt_prm primary key);
Ÿ 描述数据的模式变为数据的一个属性
Ÿ 数据库内部强大的字符串处理
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能
主要特性
Ÿ POSIX 扩展的正则表达式
Ÿ 接口
– REGEXP_LIKE
模式是否匹配?
– REGEXP_SUBSTR
它与什么匹配?
– REGEXP_INSTR
•Datetime 类型
•ANSI 联接
•CASE 表达式 •SQL/Java 集成
•interMedia 类型
•Oracle8 i
•Oracle9 i
•Oracle9i R2
•网络 •Web 服务 •正则表达式 •本地数值结构
•BLAST
学习改变命运,知 识创造未来
Oracle数据库10g新的SQL和PLSQL功能