资源描述:
《数据库编程规范(oracle)x》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Oracle数据库编程规范声明:1范围和简介1.1范本规范适用于公司范啪内所冇以ORACLE作为后台数据库的应用系统和项U开发工作。1.2简介使用统一的OracleSQL编程规范,使Oracle数据库库编程风格标准化,以便于阅读、理解和继承及项目组成员相互交流。本规范的制定主要出于以下几方面的考虑:效率,可读性,可维护性,规范性规范中未做卢明的内容,以满足开发总则为准。Ps:优秀的应用:良好的硬件配置;正确合理的数据库及中叫件参数配置;合理的数据库设计;良好的sql编程;运行期的性能优化2文件格式以及命名规范2.1文件格式及脚本•过6!文件:prc_xxx.prc•Sql脚木文件:xxx
2、.sql•视图文件:vwxxx.sql•脚本都置于XXX目录对应子目录下2.2命名以及一些原则•过程:prcjF•义•,必须宥异常捕获,行数限制,事物提交,不要使川动态游标•函数:fn_开头,•视阁:^7_开头•表:用户.模块名(撮多三级).对象名创建时都必须带上用户名如.mposx.m_transJnfo,IL毎个表必须创建索引,考虑数裾增长•字段:主语+宾语,如user表的user_id,user_status而不焰id,status便于字段扩展命名,日期宇段使川_date结W,时问字段使川」ime结备注统一remark(varchar2(500),考虑非空选项,默认值•主键:pk_
3、+对象+字段名,默认主键长度16位为日期格式+4位循环sequence:如YYYYMMddHH24miss+seq_xxxx•索引:idx_汗头,•序列:seq」
4、•头3Sql书写规范写SQL的时候诸注意大小写-•致。因为sql执行的第一少是将其转化成ASCII编码,而大写和小写的ASCII编码是不同的。ORACLE会认为select*fromdual和SELECT*fromDUAL是两个不同的SQL,这会造成额外的硬分析。开发人员耍使用统-的beautifier格式规范:Oracle保留字人写,余小写sql格式关键是对齐,方便识别,参考如下insert:INSERTINTO表名〉<5'
5、J2>,)VALUES(例1值〉,雜值〉,)Delete:DELETEFROItahlelWHEREx=yAMD«-bANDc=dUpdate:UPDATE運更新的表名》SET潘更S的列1>=例值1〉<»更«的列2>=例值2>WHEREx=yANDa=bANDc=dSelect:Selectcl,C2ZC3FromTbxxWherecl=lAndc2=2Andc3=3Select子句记得先写关联条件再条件等于,其余的凼定的重耍的走索引的写前而,查询表一定要有别名別人写的:http://blog.itpub.net/11990065/viewspace-702148/4.1绑定变量分析阁数
6、是oracle816引入的-个伞新的概念,为我们分析数据提供了一种简申商效的处理力_式.在分析函数出现以前,我们必须使川联查询,子查询或奍内联视图,甚茧复杂的存储过程实现的语句,现在只要-•条简单的sql语句就可以实现了,而且在执行效率方面也宵相当大的提高.分析函数的主耍包含:ft动fl:总函数rollup,cube,rank函数,rank,dense一rank,row_numberlag,lead函数um,avg,的移动增加,移动平均数ratiotoreport报表处理函数first,last取棊数的分析函数具体应用可参考一个比较详细的文章,URL地址:http://www.cnblo
7、gs.com/sunsonbaby/archive/2004/09/29/47876.aspxWith,level,Merge4.4临时表频繁dml揀作处理4.5注意的地方避免字段计算如:Selectsalaryfromdeptwheresalary/2=1000;Sql拆分,尤K是S杂更新,S合查询,(使用unionall)索引列不用like开头杏询如SELECTUSER_NO,USER_NAME,ADDRESSFROMUSER_FILESWHEREUSER_NOLIKE'%109204421';//全表扫多使用正向匹配,如exists而非notexists,(易导致逻辑错误)避免is
8、null和isnotnull使用decode减少处理时I'uJSELECTCOUNT(*),SUM(SAL)FROMEMPWHEREDEPT—NO=0020ANDENAMELIKE"SMITH%’;SELECTCOUNT(*),SUM(SAL)FROMEMPWHEREDEPT一NO=0030ANDENAMELIKE‘SMITH%';SELECTCOUNT(DECODE(DEPT_NO,0020,’X’,NULQ)D0020—COUN