版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目前 ORACLE表空间定 原 命 ORACLE数据文 数据文件 用户管 用户创 用户...................................................................................................................管 表定 表 列类 列长 索 主 外 表分 PL/SQL过程编写规 命 格 大小写规 语句规 SELECT语句的格式标准 DELETE语句的格式标准 尽量避免使用GOTO......LABEL语句 ORACLE的伪表与伪列 使用%ROWTYPE和 尽量不使用NOTIN子句 不要在WHERE子句中使用函数作为条件 使用SELECT EXISTS子句中,使用SELECT 使用TRUNCATE 在PL/SQL中使用 适当使用ORACLE的 注释要 位置要 变量的.............................................................................................................数据选 游标的使 尾注要 C/C++SQL书写规 SELECT语句格式标 UPDATE语句格式标 DELETE语句格式标 INSERT语句格式标 JDBC&ORACLE使用............................................................................................... 在动态SQL或有时间限制令中使用STATEMENT对 在成批处理重复的或更新操作中使用PreparedStatement对 利用SQL完成数据库内的操 所有数值型的字段使用NUMBER(X)/ 索引名为 字段别名用AS方 返回值约 前英文使用原使用英文名称时,使用大写。单词之间用下划线“_”进行分隔。使用范围包负责形成英文单词缩写汇总表,所有英文单词的缩写格式。ORACLE表空间原SYSTEM用户不得使用SYSTEM表空间。BLOCK_SIZE16K命用户表表空间命名格式:TBS_UserNameTBS_OLAP索引表空间命名格式:TBS_UserName_IDXTBS_OLAP_IDX或ORACLE数据文数据文件的存为了便于管理,数据文件应存放在指数据文件数据文件命名前缀应与表空间名一致,并加扩展名以示区别,例如: 、TBS_E_ODS_2.ORA数据文件的大数据文件属用户管用户创DBAE_DBA,平常数据库管理员用该用户进行数据库管理,只有在数据库启动和关闭时才用SYS用户进行登录。用户CONNECTRESOURCEDBA用户外,不得给普通用户授予DBA角色权限。管用户设置应避免使用弱,特别是SYS/SYSTEM和另外单独建的DBA用用户命名规接口层EI_HA:AEI_SA:AEI_HB:BEI_SB:B应用程EA_SEC:账务管表在PowerDesigner中建模时,表的中文名称使用,代码+名称的格式,如柜台客户信息表的中文名称:TR_CUST_INFO表。主键(PRIMARY列数字型字段使用NUMBER型,并指定长度,整型使用NUMBER(m),如NUMBER(6)NUMBER(m,n)NUMBER(8,2)等。DATECHAR型,一般记录日志的日期、时间字段用DATE型。如果日期和时间分成两个字段,可以考虑日期采用使用CLOB代替 X,BLOB代替 应当根据实际需要选择列长度。有对应web页面的,与页面上对应列长度一致。索索引名 IDX_TableName[_x],例 44对于表中的数据记录频繁地被删除或,对这些表要经常性重建索引,使Alterindexrebuild主主键名为外外键名为表分YZETABLETaGTameCOMPUTESTATISTICS;YZEINDEXIndexNameCOMPUTESTATISTICS;不可以对SYSTEM用户和SYSPL/SQL过程编写规命 沿用公司原有《DatabaseServer端编码规范》中名规范沿用公司原有《DatabaseServer端编码规范》中名规范格FUNCTIONname[{parameter[,parameter,...]}]RETURNdatatypesIS[localdeclarations]executestatementsexceptionhandlers]END[name];PROCEDUREname[(parameter[,parameter,...])]IS[localdeclarations]executestatementsexceptionhandlers]END[name]为了保证不同编辑器中浏览的版式一致将编辑器设置为TAB转换为4个空格begin-exception-endif-endifPL/SQLDeveloperPL/SQLBeautifier大小写规语句规SELECT语句的格式标准SELECTColumn_name1,Column_name2INTO:Parameter1,:Parameter2FROMTable1A,Table2BWHEREA.Column_name=过“执行计划”来,在PL/SQLDeveloper中的ExplainPlanWindow中可分析ORACLE以下是SELECTSELECT[DISTINCT|ALL]{*|column1[,column2]...}FROM{table_1|(subquery)}[alias][,{table_2|(subquery)}[alias]]...[WHEREcondition][CONNECTBYcondition[STARTWITH[GROUPBYexpn][HAVIX[{UNION[ALL]|INTERSECT|MINUS}SELECT...][ORDERBY[expn][ASC|DESC][FORUPDATE[OF[user.]table|view]column]UPDATE语句的格式标准UPDATETableSETColumn_name1=Column_name2=:Parameter2WHEREColumn_name=:Pareameter;UPDATESET{column1=express1[,column2=experss2]...|(column1[,column2]...)=(subquery)}[WHEREcondition|currentofINSERT语句的格式标准INSERTINTOTableName(Column_name1,Column_name2)或INSERTINTOSELECTColumn_name1,Column_name2FROMTableWHEREColumn_name=INSERTINTOTableNameVALUESParameter1,:Parameter2INSERTINTOTableNameSELECT*FROMTableDELETE语句的格式标准DELETEFROMTableNameWHEREColumn_name1=DELETE[FROM][user.]table[@db_link][Alias][WHEREUNION,INTERSECT及有时需要从多个表中组合具有一种相似类型的信息。Union可以完成将两个以unionall则(不管是否重复IntersectMinus则返回只在一个表中出现的信息1.selectselectselect...selectselect...select...尽量避免使用 LABEL语句 ORACLE的伪表与伪列Oracle而是在建立对象时由自动Oracle完成的。Oracle目前有以下的伪列:CURRVALand OracleDUALSELECTfromfrom后有个表名,就用DUAL代替。如:SQL>selectto_char(sysdate,'yyyy.mm.ddhh24:mi:ss')from2004.09.24例2:计算一下 *0.1的结果是多少,则SQL>select *0.1from 使用%ROWTYPEPL/SQL可以与数据库行有相同类型的记录或者与数据库字段相同的变量类型 尽量不使用NOTIN子句NOTINNOEXISTSMINUS不要在WHERE子句中使用函数作为条件WHERETO_NUMBER(_NBR)=7654321这种写法是效率非常低下的使用SELECTSELECTCOUNT(*)SELECTCOUNT(1EXISTS子句中,使用SELECTEXISTS,SELECT*SELECT1CREATETABLETaGTameASSELECT*FROMINSERTINTOTaGTameSELECT*FROM……使用TRUNCATETRUNCATETABLETaGTameDELETEFROMTaGTame,能有效提高速度并该表所占的空间减少磁盘碎片由于TRUNCATETABLE是DDL语言,在过程中不能直接使用,应加上EXECUTEIMMEDIATE,使用方法如下:EXECUTEIMMEDIATE‘TRUNCATETABLETaGTame’;使用前请注意是否限问题PL/SQL中使用当过程执行出错抛出EXCEPTION时,可通过sqlcode和sqlerrm取得当前 UPDATEdeptSETusername=(SELECTusernameFROMwork_group)WHERErownum=1;WHENOTHERSV_SQLCODE:=sqlcode;V_ERRMSG:=sqlerrm;Dmbs_output.put_line‘程序出错,错误代码:’||V_SQLCODE||’错误信息:’||V_ERRMSG);适当使用ORACLE……HINTINSERT/*+append*/INTO…….SELECTHINT/*+rule*/HINTSELECT/*+rule*/……FROM……WHERE注释要位置要变量申明的注在变量申明语句的后面,并以--为注释语V_BpModeVARCHAR2(10)SELECTBpModeINTOV_BpModeFROMACC_BPWHEREUser_ID=I_User_ID;WHENNO_DATA_FOUNDTHENWHENOTHERSTHENEND过程注释要用途:<修订日期><修订人 代码片断注释要代码片断处理要变量的函数变量的放在函数代码段的开始部分,不允许分散在函数内小代码片断中。全局公共变量放在一个包内,并放在包代码段开始部分。数据选OracleSELECT*INTOV_AccFROMAcc_BpWHEREUser_ID=I_User_ID;WHENNO_DATA_FOUND……相应处理;WHENOTHERSTHEN……相应处理;END;V_PensonId=TO_NUMBER(I_In);WHENOTHERS……相应处理;END;游标的使FORrecIN(SELECT*FROMAcc_BpWHEREBpMode‘省网中文’…ENDLOOPEND错误处理要不可以预见的Oracle系统错误,则应向操作员报告如下信息错误发生的环境或关键条件、关键性的帮助信息的取舍与多寡,取决于如 t(IN_PayINJf_PayList%ROWTYPE)RETURNVARCHAR2V_AccAcc_Bp%ROWTYPE;SYSTEM_ERROREXCEPTION;SELECT*INTOV_AccFROMAcc_BpWHEREUser_ID=I_Pay.User_Id;WHENNO_DATA_FOUNDPub.SetErrMsg(无法找到用户(User_ID=’||I_Pay.User_ID‘)’)RAISESYSTEM_ERROR;WHENOTHERSTHENPub.SetErrMsg(‘( t)取Acc_Bp表,User_ID=’||I_Pay.User_ID||‘意外错误:’ ||SQLERRM);RAISESYSTEM_ERROREND;RETURN‘成功’WHENSYSTEM_ERRORTHENRETURN‘失败’;WHENOTHERSPub.SetErrMsg( t)User_Id=’||I_Pay.User_ID‘,Money=’||I_Pay.PayMoney||‘,Free=’||I_PayList.PayFree||‘||SQLERRM);RAISE‘失败’; 尾注要LOOPLOOP都应该加注,如:LOOP--…LOOP--…LOOP--…ENDLOOP;--…ENDLOOP--…ENDLOOP--3ENDIF件内容如:IF1IF条件2THENIF3THENENDIF3ENDIF2ENDIF 如果条件代码片断超过10行,应加尾注,如:IF1THEN……10ENDIFC/C++SQL书写规首先,因公司原有的开发规范不建议采用C/C++中直接嵌入SQL的作法。而是将SQL放在过程作实现。以下只是制定书写规范,特殊的需求要采用嵌SQL时,应遵从以下书定规范。大多数SQL语句与交互式SQL语句的区别仅仅是增加了一些子句或使用了一SQL在定义SQL语句时,把变量和所要赋的值分两行来表达,把SQL的赋值同其变量定义UNIXSQLSelect语句格式标Char*p_cSelStmt“SELECTColumn_name1,Column_name2 INTO:Parameter1,:Parameter2 FROMTable1A,Table2B WHEREA.Column_name=B.Column_name”;行关联,因为当超过五张表关联时Oracle将不再做语句的优化处理;对语句的性能可以通过“执行计划”来,在SQL/PLUS下运行:setautotraceon,然后运行要的语句,setautotraceoffUpdate语句格式标Char*p_cUpdStmt“UPDATETableSet \Column_name1=:Parameter1,\Column_name2=:Parameter2 WHEREColumn_name=:Pareameter”;Delete语句格式标Char*p_cDelStmt“DELETEfromTableName WHEREColumn_name1=:Parameter1,Column_name2=Insert语句格式标Char*p_cInsStmt“INSERTINTOTableName(Column_name1,Column_name2)\Values(:Parameter1,:Parameter2);“日期、时间使用在每个SQL语句中,需要用到时间值的,都以如下格式出入:的动作都通过系统时间(sysdate)来。JDBC&Oracle使用关闭自动提交功能,提高系统性了获得更好的性能可以通过调用带布尔值false参数的Connection类的 值得注意的是,一旦关闭了自动提交功能,就需要通过调用Connection类在动态SQL或有时间限制令中使用Statement对在执行SQL命令时,有二种选择:可以使用PreparedStatement对象,也可以解析和编译。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,应当考虑使用Statement对象。在成批处理重复的或更新操作中使用PreparedStatement对StatementCallableStatementPreparedStatement对象才真正地支持批处理。可以使用addBatch()和executeBatch()方法选择标准的JDBCPreparedStatementsetExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的OracleOracle专有的批处理机setExecuteBatch():PreparedStatementpstmt3Dnull;try{}。命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中可以通过PreparedStatementsendBatch()方法随时传输批处理任务。。利用SQL完成数据库内的操要充分利用SQLJava等过数据,最后,编程创建了独立的UPDATE命令来成批地更新第一个表中的数据。set子句中使用多列子查询而在一个UPDATESQLSERVER与ORACLE数据库之英文命名全部大写,单词之间用下划线、为了书写规范在表名字段名过程命名时,采用的英文单词全部使用大写,、VARCHAR类型字段最长为为了考虑兼容ORACLE数据库的VARCHAR所有数值型的字段使用number(x)/索引名为索引名为IDX_TableName[_x],例如IDX_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年稻米种植与收购协议标准文本版
- 2024年航空公司航材供应合同
- 2022年人教版中考化学一轮复习:空气和氧气讲练(含解析)
- 2024智能医疗设备远程诊断服务合同
- 2024年采购法务实操:鲁照旺协议管理深度剖析版
- 2024年门窗设备购销合同
- 劳务派遣人员管理协议书(2篇)
- 2024版危险品运输业务合同
- 加油站更换加油安全协议书(2篇)
- 2024建筑公司整体转让合同
- 火力发电厂有关职业病的危害及防护
- 民主测评票(三种样式)
- 班车安全检查表(2015-7-14)V3 0 (2)
- 城投集团年度安全管理工作计划
- 一、 行业协会申请设立分支机构、代表机构应提交的文件:
- 幼儿园幼儿园理事会成员一览表
- 学生对课堂教学满意度调查
- 住房公积金中心窗口人员个人工作总结
- 集成电路单粒子效应评估技术研究PPT课件
- 幼儿园小班生成活动教案20篇
- 讲师与平台的合作协议
评论
0/150
提交评论