Oracle数据库10g:新的SQL和PLSQL功能

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Oracle数据库10g中新的SQL和PL/SQL功能议程新的SQL特性新的PL/SQL特性PL/SQL的速度是原来的两倍总结问答Oracle8OracleSQL引擎的发展Oracle8iOracle9iOracle9iR2SQL/XML集成(XMLType、URIType等)OLAPDatetime类型ANSI联接CASE表达式XML数据库SQL/XMLW3C标准数据挖掘网络Web服务正则表达式本地数值结构BLAST对象扩展数据插件SQL/Java集成interMedia类型数据和处理复杂性新的SQL特性正则表达式本地数值结构LOB增强集合增强正则表达式简介起源于数学首先在UNIX中计算机化–从ed、grep、perl、cgi、web到任何地方多种应用程序–HTMLFORMS中的验证–生物信息学–服务器配置–数据挖掘Oracle正则表达式对数据库的本地支持–SQL和PL/SQL中的接口–基于POSIX标准–与GNU、PERL、Java、Xquery等同步描述数据的模式变为数据的一个属性数据库内部强大的字符串处理主要特性POSIX扩展的正则表达式接口–REGEXP_LIKE模式是否匹配?–REGEXP_SUBSTR它与什么匹配?–REGEXP_INSTR它在哪里匹配?–REGEXP_REPLACE替换匹配的记录。匹配选项语言环境支持LOB支持REGEXP_LIKE确定模式是否存在。查找名称‘JonStevens‘的变体–John或Jon–Steven或Stevens或Stephen或StephensSELECTc1FROMt1WHEREREGEXP_LIKE(c1,‘Joh?nSte(ph|v)ens?’);JonStevensJohnStephensJohnStevens和DDL一起使用允许使用过滤器的数据,并带检查约束–邮政编码(ZIPcode)列是VARCHAR2(5),但可以包含任意的5个字符。使用视图的查询子集和格式化–将电话号码格式化为(xxx)xxx-xxxx创建基于函数的索引与PL/SQL一起使用非常强大的字符串处理功能src:=REGEXP_REPLACE(src,‘regexp_1’);src:=REGEXP_REPLACE(src,‘regexp_2’);src:=REGEXP_REPLACE(src,‘regexp_3’);可以增强现有的功能–支持PERL缩写–提取第n个子表达式替换大量代码行–可以简化字符串处理函数性能考虑事项模式匹配可能很复杂–需要编译成状态机–词法分析–检查所有可能的分支,直到发现匹配每条语句编译一次–对于复杂情景可能比LIKE更快邮政编码检查快5倍通常比等价的PL/SQL更快编写快速执行的表达式本地浮点数据类型两种新的数值数据类型BINARY_FLOAT,BINARY_DOUBLE–二进制浮点运算的IEEE754标准–是许多其他标准(例如,Java、XML模式)和硬件平台的一部分–普遍存在于商务智能、生命科学、工程/科学计算本地浮点数据类型与数值数据类型比NUMBER类型效率更高–硬件运算/数学运算快5–10倍–占用更少的内存/磁盘空间(5/9字节与1–22字节)–BINARY_DOUBLE值范围更大(e308与e125)–无需类型转换(使用与字节顺序无关的存储格式)本地浮点函数新的类型转换函数–TO_BINARY_FLOAT、TO_BINARY_DOUBLE–TO_NUMBERSQL函数支持–数值函数(sin、cos等)–聚合函数(sum、avg、stddev等)–分析函数(sum、avg、stddev等)对SQL、PL/SQL、Java、XML模式注册、ODP.NET和OCI/OCCI的无缝支持本地浮点约束createtablefloating_point_table1(fltNnullbinary_floatconstraintflt_nullnotnull,dblNnullbinary_doubleconstraintdbl_nullnotnull,fltUnqbinary_floatconstraintflt_unqunique,dblUnqbinary_doubleconstraintdbl_unqunique,fltChkbinary_floatconstraintflt_chkcheck(fltChkisnotNaN),dblChkbinary_doubleconstraintdbl_chkcheck(dblChkisnotinfinite),fltPrmbinary_floatconstraintflt_prmprimarykey);*NaN(不是数字)–e.g.0/0,infinity/infinity本地浮点约束createtablefloating_point_table2(dblPrmbinary_doubleconstraintdbl_prmprimarykey,fltFrnbinary_floatconstraintflt_frnreferencesfloating_point_table1(fltPrm)ondeletecascade);PL/SQL示例使用欧拉级数计算=sqrt(6*(1+1/2*2+1/3*2+...))使用牛顿方法近似真值的平方根赋值、加、乘、除、比较、绝对值procedureEuler_Pi_Seriesis...beginpi:=one;prev_pi:=zero;prod_over_six:=zero;step:=zero;whilepi-prev_pitolerloopprev_pi:=pi;step:=step+one;prod_over_six:=prod_over_six+one/(step*step);prod:=six*prod_over_six;prev_root:=prod;root:=prod/two;whileAbs(root-prev_root)root_tolerloopprev_root:=root;root:=(root+prod/root)/two;endloop;pi:=root;endloop;endEuler_Pi_Series;subtypeMy_Numberisnumber;zeroconstantMy_Number:=0.0;oneconstantMy_Number:=1.0;twoconstantMy_Number:=2.0;sixconstantMy_Number:=6.0;tolerconstantMy_Number:=0.00000000001;root_tolerconstantMy_Number:=toler/1000.0;rootMy_Number;prev_rootMy_Number;prod_over_sixMy_Number;prodMy_Number;piMy_Number;prev_piMy_Number;stepMy_Number;subtypeMy_Numberisbinary_double;zeroconstantMy_Number:=0.0d;oneconstantMy_Number:=1.0d;twoconstantMy_Number:=2.0d;sixconstantMy_Number:=6.0d;tolerconstantMy_Number:=0.00000000001d;root_tolerconstantMy_Number:=toler/1000.0d;rootMy_Number;prev_rootMy_Number;prod_over_sixMy_Number;prodMy_Number;piMy_Number;prev_piMy_Number;stepMy_Number;PL/SQL示例使用欧拉级数计算近似300,000次迭代NUMBER花费约27.7秒BINARY_DOUBLE花费约3.7秒提高倍数:约7倍LOB增强LOB普遍用于存储非结构化的数据(文本、AVI、基因/蛋白序列等)LOB性能改善访问内联(4KB)LOB时获得5倍的性能增益(在9iR2中)临时LOB使用引用计算提供了几个数量级的性能增益–在读取时引用(ReferenceonRead)–在写入时复制(CopyonWrite)超大型LOBTB大小的Lob(8–128TB)–DB_BLOCK_SIZE(2–32KB)x(4GB–1)–新的DBMS_LOB.GET_STORAGE_LIMIT函数–OCI、JDBC和DBMS_LOB现在支持大于4GB的LOBOCILobRead2()、OCIWriteAppend2()和OCILobWrite2()函数为JDBC和DBMS_LOB提供相同的API集合类型增强用户定义的类型、集合类型和引用类型简化了结构复杂的数据建模集合类型用于映射实际世界应用程序中的包含关系–例如,一个购物车包含了许多商品VARRAY增强VARRAY的类型发展CREATETYPEemail_list_typASOBJECT(section_noNUMBER,emailsemail_list_arr);/CREATETYPEemail_varray_typASVARRAY(5)OFemail_list_typ;/ALTERTYPEemail_varray_typMODIFYLIMIT100CASCADE;在临时表中支持VARRAY列–提供应用程序开发灵活性嵌套表增强将一个不同的表空间用于嵌套表的存储表–带嵌套表的列的表可以在表空间之间分配I/O负载CREATETABLEpurchase_orders(order_items_columnorder_items_typ)NESTEDTABLEorder_items_columnSTOREASorder_items_column_nt(TABLESPACEusers);为嵌套表提供的ANSISQL多集合操作嵌套表存储无序的元素–集合只包含唯一的元素–多集合可以包含重复的元素嵌套表上的各种多集合操作为嵌套表提供的多集合操作Cardinality、Collect、MultisetExcept、MultisetIntersection、MultisetUnion、Powermultiset、Powermultiset_by_Cardinality和Set操作–查找热销商品集合的强大工具(市场指数总览分析)多集合操作示例createtypecategoriesastableofint;/createtablecarts(c1int,c2categories)nestedtablec2storeastb1_c2;insertintocartsvalues(1,categories(1,2,3,4));insertintocartsvalues(2,categories(2,4,6));selectt1.c2multisetintersectt2.c2fromcartst1,cartst2wheret1.c1=1andt2.c1=2;categories(2,4)-frequentset嵌套表比较Equal和NotEqual、In、Submultiset、MemberOf、Empty和Is[Not]ASetSELECT*FROMcustomercWHEREitem_typ(2)MEMBEROFc.freq_set;在PL/SQL中也提供declaretypeTab_tistableofpls_integer;aTab_t:=Tab_t(1,2,3,4,5);beginif3memberofathenShow('member');endif;end;SQL小结Oracle数据库10gSQL引擎–聚合来自不同的分布式数据源的数据网格信息–无缝地集成Java、XML

1 / 72
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功