SQL编码规范

合集下载

ORACLE SQL编写规范(v1.1)

ORACLE SQL编写规范(v1.1)
2
1.SQL(PL/SQL)编码格式规范
一些第三方开发工具,例如TOAD等,都有比较好的格式化功能,大家可以用 其做风格统一和美化使用,以下是自定义的一套规范,可以供大家参考。


大小写风格
所有数据库的关键字和保留字均使用大写,对象名称、列名称则使用小写。 缩进风格
程序块以及SQL均采取统一的缩进风格书写,保持代码的清晰易懂,风格一致,
ANSI标准写法:使用RIGHT(LEFT) OUTER JOIN ON来实现外连接
SELECT i.first_name, st_name, z.state FROM instructor i RIGHT OUTER JOIN zipcode z ON i.zip = z.zip GROUP BY i.first_name, z.state;
7. FOR UPDATE语句使用注意
FOR UPDATE语句的作用在于并发环境下,某用户将查询到的数据加锁,以
便后续的操作过程中,该数据不会被其他用户所修改,这通常用于一些公共模块的 公共处理场景。
由于锁定操作势必会影响到并发性,所以原则就是尽量把条件限定严格,使
锁定的记录数最少,并且在后续的操作完成后尽快提交或回滚事务,以便其他用户 能尽快得到锁资源。 除特殊原因外,严格禁止不加过滤条件的SELECT语句中使用FOR UPDATE 子句。
多表连接的ANSI写法:
SELECT s.section_no, c.course_no, c.description,i.first_name, st_name FROM course c JOIN section s ON (s.course_no = c.course_no) JOIN instructor i ON (i.instructor_id = s.instructor_id);

oracle sql developer 编码格式

oracle sql developer 编码格式

一、介绍Oracle SQL Developer编码格式的重要性Oracle SQL Developer是一款用于管理Oracle数据库的集成开发环境(IDE),它不仅可以用于编写和执行SQL语句,还可以进行数据建模、数据导入导出等操作。

在使用Oracle SQL Developer时,编码格式的设置至关重要,它直接影响到SQL语句的正确性和可读性。

了解和正确设置Oracle SQL Developer的编码格式对于数据库开发人员来说至关重要。

二、Oracle SQL Developer编码格式的设置方法1. 打开Oracle SQL Developer并登入到需要操作的数据库2. 点击菜单栏中的“工具”-“首选项”-“代码编辑器”-“文件编码”选项3. 在文件编码选项中,可以选择默认的文件编码格式,一般情况下默认为UTF-84. 确定设置后,关闭首选项窗口,设置即生效。

三、UTF-8编码格式在Oracle SQL Developer中的应用UTF-8是一种针对Unicode的可变长度字符编码,它可以表示Unicode标准中的任何字符,并且在互联全球信息站有广泛的应用。

在Oracle SQL Developer中,使用UTF-8编码格式可以很好地支持中文、英文等多种语言的字符,保证数据库操作的正确性和稳定性。

四、常见的编码格式错误及解决方法1. 中文乱码:在使用Oracle SQL Developer进行数据库操作时,有时会出现中文乱码的情况。

这通常是由于数据库和Oracle SQL Developer的编码格式设置不一致导致的。

解决方法是统一数据库的编码格式,并在Oracle SQL Developer中设置相应的文件编码格式。

2. 数据录入错误:如果在使用Oracle SQL Developer进行数据录入时出现字符错误或丢失的情况,很可能是由于编码格式不匹配所致。

在这种情况下,需要检查数据库和Oracle SQL Developer的编码格式设置,并做出相应的调整。

数据库标准规范(两篇)2024

数据库标准规范(两篇)2024

数据库标准规范(二)引言:数据库是当代信息系统中关键的存储和管理数据的工具,数据库标准规范的制定对于确保数据的一致性、完整性和可靠性至关重要。

本文将详细阐述数据库标准规范的五个大点,包括数据库设计、数据模型、数据操作、数据存储和数据安全。

概述:在数据库标准规范中,数据库设计是基础,决定了整个数据库系统的架构和功能。

数据模型定义了数据的结构和属性,数据操作确定了对数据库的增删改查操作,数据存储指定了数据的物理存储方式,数据安全保证了数据库的安全性和可用性。

正文内容:一、数据库设计1. 定义数据库设计的目标和要求,包括数据的一致性、可扩展性和易用性。

2. 建立数据库的概念模型,包括实体关系模型、关系模型和层次模型。

3. 制定数据库设计的规范和准则,确保数据库结构的一致性和易维护性。

4. 设计数据库的表结构,包括表的字段、属性和约束等。

5. 定义数据库的索引和视图,提高数据库的查询和操作效率。

二、数据模型1. 介绍常用的数据模型,包括层次模型、网络模型、关系模型和面向对象模型。

2. 选择合适的数据模型,根据数据库的特点和应用需求进行权衡。

3. 设计数据模型的实体和属性,确保数据的准确性和完整性。

4. 定义数据模型之间的关系,包括一对一、一对多和多对多关系。

5. 使用标准的建模工具和方法,对数据模型进行建模和验证。

三、数据操作1. 定义数据操作的目标和要求,包括数据的增加、删除、修改和查询。

2. 设计数据操作的接口和功能,提供简单易用的操作方式。

3. 制定数据操作的规范和约束,确保数据的一致性和安全性。

4. 优化数据操作的性能,提高查询和更新的效率。

5. 实现数据操作的事务管理和并发控制,确保数据的一致和可靠。

四、数据存储2. 设计数据的物理存储结构,包括数据文件、表空间和数据块等。

3. 制定数据存储的规范和准则,确保数据的安全和可靠。

4. 实施数据存储的备份和恢复策略,保护数据的完整性和可用性。

5. 优化数据存储的性能,提高数据访问的效率和响应速度。

SQL编码规范

SQL编码规范

SQL编码规范(V1.00)文 档 信 息文档名称:SQL编码规范电子文档:版本号: 1.00密级:保密文档编号:编写人:马云日期:2007-03-27校对人:日期:审核人:日期:批准人:日期:更 改 记 录更改序号更改原因更改页码更改前版本号更改后版本号更改人生效日期备注目录1注释规范 61.1.一般性注释 61.2.函数文本注释 62.排版格式 72.1.缩进 72.2.换行 82.3.空格 102.4.大小写 102.5.对齐 103.命名规则 113.1.输入变量 113.2.输出变量 113.3.内部变量 113.4.游标命名 114.编码规范 114.1.不等于统一使用"<>" 114.2.使用表的别名 114.3.使用SELECT语句时,必须指出列名 124.4.使用INSERT语句时,必须指定插入的字段名。

124.5.减少子查询的使用 124.6.适当添加索引以提高查询效率 124.7.不要在WHERE字句中对索引列施以函数 124.8.不要使用数据库的类型自动转换功能,使用显式的类型转换 12 4.9.应使用变量绑定实现SQL语句共享,避免使用硬编码 124.10.用执行计划分析SQL性能 14附录A:Oracle SQL性能优化 14A.1选用适合的ORACLE优化器 14A.2访问TABLE的方式 15A.3共享SQL语句 15A.4选择最有效率的表名顺序(只在基于规则的优化器中有效) 17 A.5WHERE子句中的连接顺序 19A.6SELECT子句中避免使用 ‘ * ‘ 19A.7减少访问数据库的次数 19A.8使用DECODE函数来减少处理时间 21A.9整合简单,无关联的数据库访问 22A.10删除重复记录 23A.11用TRUNCATE替代DELETE全表记录 23A.12尽量多使用COMMIT 23A.13计算记录条数 24A.14用Where子句替换HAVING子句 24A.15减少对表的查询 24A.16通过内部函数提高SQL效率 26A.17使用表的别名(Alias) 27A.18用EXISTS替代IN 27A.19用NOT EXISTS替代NOT IN 28A.20用表连接替换EXISTS 29A.21用EXISTS替换DISTINCT 30A.22识别'低效执行'的SQL语句 31A.23使用TKPROF 工具来查询SQL性能状态 31A.24用EXPLAIN PLAN 分析SQL语句 32A.25用索引提高效率 34A.26索引的操作 34A.27基础表的选择 36A.28多个平等的索引 37A.29等式比较和范围比较 38A.30不明确的索引等级 39A.31强制索引失效 40A.32避免在索引列上使用计算 41A.33自动选择索引 42A.34避免在索引列上使用NOT 42A.35用>=替代> 44A.36用UNION替换OR (适用于索引列) 44A.37用IN来替换OR 48A.38避免在索引列上使用IS NULL和IS NOT NULL 49 A.39总是使用索引的第一个列 50A.40ORACLE内部操作 51A.41用UNION-ALL 替换UNION ( 如果有可能的话) 51 A.42使用提示(Hints) 53A.43用WHERE替代ORDER BY 54A.44避免改变索引列的类型 56A.45需要当心的WHERE子句 57A.46连接多个扫描 58A.47CBO下使用更具选择性的索引 60A.48避免使用耗费资源的操作 60A.49优化GROUP BY 61A.50使用日期 62A.51使用显式的游标(CURSORs) 62A.52优化EXPORT和IMPORT 62A.53分离表和索引 631注释规范.1. 一般性注释.1.1. 创建每一数据库对象时都要加上COMMENT ON注释,以说明该对象的功能和用途;建表时,对某些数据列也要加上COMMENT ON注释,以说明该列和/或列取值的含义。

SQL Server编码规范

SQL Server编码规范

文件制修订记录目录1前言 (3)1.1目的 (3)1.2术语 (3)1.3参考文献 (3)2逻辑对象的命名规范 (3)2.1数据库命名 (3)2.2数据库文件及目录 (3)2.3表 (3)2.4字段/域 (4)2.5索引 (4)2.6视图 (4)2.7存储过程 (4)2.8触发器 (4)2.9函数 (4)3可编程性编码规范 (4)3.1可编程性统一规范 (4)3.1.1外部参数 (4)3.1.2内部参数 (5)3.1.3代码编写格式规范 (5)3.2存储过程 (5)3.2.1存储过程格式: (6)3.2.2存储过程标头备注 (6)3.2.3返回值 (6)3.3函数 (6)3.3.1函数格式 (7)3.3.2函数标头备注 (7)3.4触发器 (7)3.4.1触发器格式 (7)3.4.2触发器标头备注 (8)4数据库编程技巧 (8)1前言1.1目的为了统一公司软件开发的设计过程中关于数据库SQL SEREVR设计时的命名规范和具体工作时的编程规范,便于交流和维护,特此收集、整理公司已经积累的技术资料、参考国家规范和标准、修订和编制了本编程规范。

1.2术语暂无。

1.3参考文献版本说明和修改历史2逻辑对象的命名规范2.1数据库命名数据库的命名要求使用与数据库意义相关联的拼音首字母且以“XY”打头,例如:客户资料数据库的命名可以是XYKhzl。

2.2数据库文件及目录数据库文件存放路径:d:\xydata数据库主数据文件命名:DBName_Data_XX.mdf,文件组名称:PRIMARY数据库事务日志文件命名:DBName_log_XX.ldf数据库文件组命名:主文件组 PRIMARY,次文件组 DBName_FileGroup_XX其中:DBName为数据库实际名称XX为从00开始的数字编号2.3表表的命名以业务品种为第一前缀,加下划线(_),业务模块为第二个前缀,其后紧接与表意义相关联的除系统管理库中表的命名可不用业务品种为第一前缀外,其他库中必须使用第一前缀。

代码安全编写规范

代码安全编写规范

代码安全编写规范1.安全编码1.1.通用编码原则(一)不要信任外部的用户输入或系统。

应用程序应该彻底验证所有用户输入,然后再根据用户输入执行操作.验证可能包括筛选特殊字符。

针对用户意外地错误使用和某些人通过在系统中注入恶意命令蓄意进行攻击的情况,这种预防性措施对应用程序起到了保护作用.常见的例子包括SQL 注入攻击、脚本注入和缓冲区溢出。

此外,对于任何非受控的外部系统,都不要假定其安全性.(二)不要通过隐藏来保障安全.尝试使用让人迷惑的变量名来隐藏机密信息或将它们存储在不常用的文件位置,这些方法都不能提供安全保障,最好使用平台功能或使用已被证实可行的技术来保护数据.(三)以安全的方式处理失效如果应用程序失效(如发生严重错误等),要恰当的进行处理,一定要保护好机密数据.同时,在向最终用户返回错误消息时,不要公开任何不需要公开的信息。

也就是不要提供任何有助于攻击者发现应用程序漏洞的详细信息。

1.2.防范常见安全编码问题在实现应用软件的编码阶段,也较容易因缺乏严谨思考或不好的编程习惯而引入安全问题,而且这些安全问题产生的危害作用非常大,因其产生的漏洞常常会造成应用程序中其他部分构筑的安全控制措施完全失效。

目前存在的相当数量系统漏洞都是由编码问题造成的.因此要想保证应用软件的安全性,必须在编码阶段继续高度贯彻安全性原则.在编码阶段,避免安全问题的基本原则如下:➢程序只实现指定的功能➢永远不要信任用户输入,对用户输入数据做有效性检查➢必须考虑意外情况并进行处理➢不要试图在发现错误之后继续执行➢尽可能使用安全函数进行编程➢小心、认真、细致地编程目前在各种应用软件中常见的安全漏洞如下所示,应对这些常见问题进行有针对性的防范。

1.2.1缓冲区溢出如果对输入参数(字符串、整数等)处理时长度检查不严格,或对指针和数组越界访问不进行保护,就容易产生缓冲区溢出(Buffer Overflow)问题,这种问题主要出现在主要出现在C/C++ 语言编写的系统中,它造成的漏洞是当今绝大多数安全漏洞的主要根源。

编码规范

编码规范
编码规范
编码规范概述
编码规范的必要性
① 有助于程序的维护,降低软件生命周期成本,符 合项目管理的规律 ② 使团队中相关人员的流动对项目的影响尽可能小, 有利于项目的控制与管理; ③ 提高程序的可读性,有利于相关设计人员交流, 提高软件质量; ④ 容易发现代码的问题,调试时比较容易 ⑤ 体现公司形象
实例讲解
• C#的编码规范
– 代码格式
代码的格式包括缩进、换行、空行、空格等,为了不影响编码的效率,在此只作如下规定: • 空格、空行不做严格的固定,以使代码清晰为基本原则。空行不影响程序的运行,但可 以使代码看起来清晰,增加可读性,因此可以适当的多用。 • 代码的缩进建议使用tab键进行控制,tab键的大小设置为4个空格。每个层次都要进行缩 进。 如:
if (isOverFlow) { return false; }
• 换行,掌握的原则是不要使一行代码特别的长,再不产生严重歧义或增加阅读难度的情 况下,尽量控制在120列之内,以方便代码的打印。另外,换行的原则是,在逗号后,操 作符前换行,换行与首行要保持一个单位的缩进。 如: string strSql = “SELECT ID,NAME,SEX,BIRTHDAY,” + “BELONGCLASSID,BELONGGRADEID “ + “FROM STUDENTINFO”; • { }必须单独在一行上,且上下对齐。 • if,while,do,try-catch-finally等语句后必须有{},即使里面只有一条语句或为空,且遵循 { }单独成行的原则。
实例讲解
• C#的编码规范
– 注释(续)
• 特别注意,如果是在已经发行版本的基础上添加、修改、删除代码,则需要将原先的代 码注释掉,而不是直接删除掉,然后添加自己的代码。如: 添加新代码的注释: //add by [姓名] yyyyMMdd xxx // add by [姓名] yyyyMMdd 修改代码的注释: //update by [姓名] yyyyMMdd // xxx yyy // update by [姓名] yyyyMMdd 删除代码的注释: //delete by [姓名] yyyyMMdd //xxx // delete by [姓名] yyyyMMdd

数据库表字段命名规范

数据库表字段命名规范

数据库表字段命名规范摘要:当前研发工作中经常出现因数据库表、数据库表字段格式不规则而影响开发进度的问题,在后续开发使用原来数据库表时,也会因为数据库表的可读性不够高,表字段规则不统一,造成数据查询,数据使用效率低的问题,所以有必要整理出一套合适的数据库表字段命名规范来解决优化这些问题。

本文是一篇包含了数据库命名、数据库表命名、数据库表字段命名及SQL语言编码的规范文档,针对研发中易产生的问题和常见错误做了一个整理和修改,为日后涉及到数据库相关的研发工作做好准备。

一、数据库命名规范采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成,命名简洁明确,多个单词用下划线'_'分隔,一个项目一个数据库,多个项目慎用同一个数据库二、数据库表命名规范2.1数据表命名规范(1)采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成,命名简洁明确,多个单词用下划线'_'分隔(2)全部小写命名,禁止出现大写(3)禁止使用数据库关键字,如:name,time ,datetime,password等(4)表名称不应该取得太长(一般不超过三个英文单词)(5)表的名称一般使用名词或者动宾短语(6)用单数形式表示名称,例如,使用employee,而不是employees 明细表的名称为:主表的名称+字符dtl(detail缩写)例如:采购定单的名称为:po_order,则采购定单的明细表为:po_orderdtl (7)表必须填写描述信息(使用SQL语句建表时)2.2命名规范①模块_+功能点示例:alllive_log alllive_category②功能点示例:live message③通用表示例:all_user2.3待优化命名示例①冗余:错误示例:yy_alllive_video_recomment yy_alllive_open_close_log说明:去除项目名,简化表名长度,去”yy_”②相同类别表命名存在差异,管理性差错误示例:yy_all_live_category yy_alllive_comment_user说明:去除项目名,统一命名规则,均为”yy_alllive_”开头即可③命名格式存在差异错误示例:yy_showfriend yy_user_getpoints yy_live_program_get说明:去除项目名,统一命名规则,动宾短语分离且动宾逻辑顺序统一三、数据库字段命名规范3.1字段命名规范(1)采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成,命名简洁明确,多个单词用下划线'_'分隔(2)全部小写命名,禁止出现大写(3)字段必须填写描述信息(4)禁止使用数据库关键字,如:name,time ,datetime password等(5)字段名称一般采用名词或动宾短语(6)采用字段的名称必须是易于理解,一般不超过三个英文单词(7)在命名表的列时,不要重复表的名称例如,在名employe的表中避免使用名为employee_lastname的字段(8)不要在列的名称中包含数据类型(9)字段命名使用完整名称,禁止缩写3.2命名规范①名词示例:user_id user_name sex②动宾短语示例:is_friend is_good3.3待优化命名示例①大小写规则不统一错误示例:user_id houseID说明:使用统一规则,修改为”user_id”,”house_id”②加下划线规则不统一错误示例:username userid isfriend isgood说明:使用下划线进行分类,提升可性,方便管理,修改为”user_name”,”user_id”,”is_friend”,”is_good”③字段表示不明确错误示例:uid pid说明:使用完整名称,提高可读性,修改为”user_id”,”person_id”3.4字段类型规范(1)所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary 、varbinary外,必须有默认值,字符型的默认值为一个空字符值串’’,数值型的默认值为数值0,逻辑型的默认值为数值0(2)系统中所有逻辑型中数值0表示为“假”,数值1表示为“真”,datetime、smalldatetime类型的字段没有默认值,必须为NULL(3)用尽量少的存储空间来存储一个字段的数据使用int就不要使用varchar、char,用varchar(16)就不要使varchar(256)IP地址使用int类型固定长度的类型最好使用char,例如:邮编(postcode)能使用tinyint就不要使用smallint,int最好给每个字段一个默认值,最好不能为null(4)用合适的字段类型节约空间字符转化为数字(能转化的最好转化,同样节约空间、提高查询性能)避免使用NULL字段(NULL字段很难查询优化、NULL字段的索引需要额外空间、NULL字段的复合索引无效)少用text类型(尽量使用varchar代替text字段)3.5数据库中每个字段的规范描述(1)尽量遵守第三范式的标准(3NF)表内的每一个值只能被表达一次表内的每一行都应当被唯一的标示表内不应该存储依赖于其他键的非键信息(2)如果字段事实上是与其它表的关键字相关联而未设计为外键引用,需建索引(3)如果字段与其它表的字段相关联,需建索引(4)如果字段需做模糊查询之外的条件查询,需建索引(5)除了主关键字允许建立簇索引外,其它字段所建索引必须为非簇索引四、SQL语言编码规范4.1大小写规范(1)所有关键字必须大写,如:INSERT、UPDATE、DELETE、SELECT 及其子句,IF……ELSE、CASE、DECLARE等(2)所有函数及其参数中除用户变量以外的部分必须大写(3)在定义变量时用到的数据类型必须小写4.2注释注释可以包含在批处理中,在触发器、存储过程中包含描述性注释将大大增加文本的可读性和可维护性,本规范建议:(1)注释以英文为主,实际应用中,发现以中文注释的SQL语句版本在英文环境中不可用,为避免后续版本执行过程中发生某些异常错误,建议使用英文注释(2)注释尽可能详细、全面创建每一数据对象前,应具体描述该对象的功能和用途,传入参数的含义应该有所说明,如果取值范围确定,也应该一并说明,取值有特定含义的变量(如boolean类型变量),应给出每个值的含义(3)注释语法:单行注释、多行注释单行注释:注释前有两个连字符(--)对变量、条件子句可以采用该类注释多行注释:符号之间的内容为注释内容,对某项完整的操作建议使用该类注释(4)注释简洁,同时应描述清晰(5)函数注释:编写函数文本--如触发器、存储过程以及其他数据对象--时,必须为每个函数增加适当注释,该注释以多行注释为主,主要结构如下:CREATE PROCEDURE sp_xxxTHANKS !!!致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL 编码规范目录1概述 (6)1.1.范围 (6)2排版规则 (7)1.2.一般规则 (7)规则2.1 独立单元书写规则 (7)规则2.2 块关键字对齐原则 (7)规则2.3 块内缩进原则 (7)规则2.4 TAB/空格一致原则 (8)规则2.5 程序块间隔行规则 (8)规则2.6 IF语句 (8)规则2.7 循环语句 (8)规则2.8 换行规则 (8)规则2.9 空格 (9)规则2.10 大小写规则 (9)1.3.E-SQL排版规则 (10)规则2.11 在EXEC SQL语句后加一个TAB键,然后再写SQL语句。

. 10规则2.12 SQL语句的关键字SELECT、FROM、WHERE、AND等,必须尾部对齐。

(10)规则2.13 语句的结束符“;”,放在语句的结束位置,不单独起一行。

10规则2.14 SQL语句中不能有注释,如“/**/”、“--”等,注释写在SQL 语句的外面。

(10)规则2.15 SQL语句中的对齐方式用空格对齐,SQL语句到“EXEC SQL”之间用TAB对齐。

(10)规则2.16 每个嵌入的EXEC SQL语句,必须单独一行开始。

(10)3注释规则 (11)规则3.1 对象注释要求 (11)规则3.2 文件注释 (11)规则3.3 过程与函数的注释 (11)规则3.4 变量注释 (12)规则3.5 参数注释 (12)规则3.6 功能性注释 (12)规则3.7 单行注释 (13)4命名规范 (14)4.1数据库对象 (14)建议4.1 命名长度和结构 (14)规则4.2 不得出现省市、项目简称 (14)规则4.3 年月日等数字 (14)规则4.4 区分非正式表 (14)规则4.5 命名特例 (15)4.2PL/SQL程序块内变量 (15)规则4.6 程序块内变量命名 (15)4.3E-SQL源文件 (16)规则4.7:E-SQL源文件命名 (16)4.4常用英文缩写字典 (16)规则4.8:业务操作类 (16)规则4.9:业务名词类 (18)5SQL程序编码规则 (20)5.1PL/SQL程序块 (20)规则5.1 简单函数或过程 (20)规则5.2 不允许使用内嵌函数或过程 (20)规则5.3 复杂函数或过程 (21)5.2E-SQL程序 (21)规则5.4 SQL语句出错判断,使用NOTFOUND、SQLOK等宏判断SQL 语句是否正确执行。

(21)规则5.5 E-SQL使用自己的出错控制,不使用E-SQL提供的统一出错控制,E-SQL的出错一般设置为无效。

(21)规则5.6 属主变量都要放在SQL定义区统一定义。

(21)5.3可读性要求 (22)规则5.7 不允许使用SELECT * (22)规则5.8 INSERT必须指定插入的字段名 (22)规则5.9 函数及表达式放在等号左边 (22)规则5.10 不等于统一使用"<>" (22)规则5.11 使用表的别名 (22)6SQL性能规则与建议 (23)6.1性能相关的规则 (23)规则6.1 添加索引提高效率 (23)规则6.2 WHERE子句中不应对索引列使用函数 (23)规则6.3 使用显式的类型转换 (23)规则6.4 为共享SQL语句,要使用绑定变量 (23)6.2性能相关的建议 (24)建议6.5 减少子查询的使用 (24)建议6.6 使用DECODE函数来减少处理时间 (24)建议6.7 用UNION替换OR (适用于索引列) (24)建议6.8 如何删除重复记录 (25)建议6.9 用TRUNCATE替代DELETE删除全表 (25)建议6.10 特大事务多使用COMMIT (26)建议6.11 用Where子句替换HAVING子句 (26)建议6.12 用EXISTS替代IN (26)建议6.13 用NOT EXISTS替代NOT IN (27)建议6.14 用表连接替换EXISTS (28)建议6.15 用EXISTS替换DISTINCT (28)建议6.17 避免在索引列上使用计算 (28)建议6.18 避免在索引列上使用NOT (29)建议6.19 用>=替代> (29)7程序质量保证 (31)规则7.1 运行日志 (31)规则7.2 错误日志 (31)规则7.3 工作日志 (31)规则7.4 异常检查 (31)8安全保障 (32)8.1PL/SQL安全 (32)规则8.1 DML/DDL语句需说明功能和要求 (32)规则8.2 游标使用结束后必须关闭 (32)8.2E-SQL安全 (32)规则8.3 PROC程序中禁止出现用户名和密码 (32)8.3数据库操作 (32)规则8.4 DML/DDL操作应显式写明对象属主 (32)1概述制定编码规范的最主要的目的是为了对产出代码的长期维护。

通常负责维护代码的人大多都不是开发者本人,如果有一个统一的代码格式以及说明就可以减少混淆提高理解速度。

因此,下列的编码规范是基于良好的编码习惯和可读性的原则来制定的。

1.1. 范围本规范定义了所有代码编写者在编写SQL程序时应遵守的一些规则和习惯。

本规范采用以下术语描述:规则:编程时强制必须遵守的原则。

建议:编程时必须加以考虑的原则。

说明【】:对此规则或建议进行必要的解释。

示例:对此规则或建议从正、反两个方面给出例子。

2排版规则1.2. 一般规则规则2.1 独立单元书写规则整个文件,以过程、函数或包为相对独立的单元。

在每个单位中,采用以下统一格式:示例:CREATE or REPLACE ……AS……BEGIN……EXCEPTION……END;即:CREATE、AS、BEGIN、EXCEPTION和END,在第1列。

后面的内容,间隔4个空格书写。

除非内部处理,否则一律带上EXCEPTION。

规则2.2 块关键字对齐原则任何块的关键字,首字母在列上对齐。

即:一个程序块内部,标识程序块的关键字开始语句(IF、DO、FOR和BEGIN)、中间语句(ELSIF、EXCEPTION、ELSE)和结束语句(END IF、END LOOP、END),在列位置对齐。

规则2.3 块内缩进原则即:一个块下属的内容,从下一行开始,从这个块的标识首字符右移4个空格(或者一个tab键),从第5个列位置开始。

规则2.4 TAB/空格一致原则即:一个源文件中,在内容缩进上,要么采用tab方式,要么采用4个空格方式。

不能二者并存。

规则2.5 程序块间隔行规则SQL程序块之间,采用1行空行分隔。

适当时候,可以存在2行空行,不要超过2行(注释行不在此约定范围内)。

规则2.6 IF语句IF语句是条件判断语句,只有一个条件的时候,可以不用圆括号。

两个以上条件的时候,要求用圆括号(),使得逻辑处理明晰。

IF/ELSIF/ELSE/END IF关键字,每个都独立占一行。

且每行的开始列位置都相同。

特别注意,结束语句END IF后面,有分号。

规则2.7 循环语句循环开始语句(FOR、WHILE)跟LOOP语句分行。

END LOOP语句,跟LOOP在同一列位置。

示例:FOR v_Index IN 1..20LOOP……END LOOP;规则2.8 换行规则一行最长不能超过80字符。

当超过时,以语意为单位,进行断行,且断行后的内容,缩进书写。

示例:-- 创建汇总基础表 Create_BaseDat-- p_BaseSQL in varchar -- SQL 语句-- p_sResultTBL in varchar-- 结果输出数据表-- p_sInfoStr in varchar-- 提示信息---- 返回值:<0, 出错;=0, 无记录;>0记录数Function CReate_BaseData(p_BaseSQL in varchar,p_sResultTBL in varchar, p_sInfoStr in varchar2) RETURN INT;此外,SELECT/FROM/WHERE/ORDER BY/GROUP BY等子句必须另起一行写。

规则2.9 空格SQL内算数运算符、逻辑运算符连接的两个元素之间必须用空格分隔。

逗号之后必须接一个空格。

关键字、保留字和左括号之间必须有一个空格。

规则2.10 大小写规则SQL 语句中出现的系统保留字、内置函数名、SQL保留字、绑定变量等都应大写。

1.3. E-SQL排版规则规则2.11 在EXEC SQL语句后加一个TAB键,然后再写SQL语句。

规则2.12 SQL语句的关键字SELECT、FROM、WHERE、AND等,必须尾部对齐。

规则2.13 语句的结束符“;”,放在语句的结束位置,不单独起一行。

规则2.14 SQL语句中不能有注释,如“/**/”、“--”等,注释写在SQL语句的外面。

规则2.15 SQL语句中的对齐方式用空格对齐,SQL语句到“EXEC SQL”之间用TAB对齐。

示例:规则2.16 每个嵌入的EXEC SQL语句,必须单独一行开始。

3注释规则规则3.1 对象注释要求创建每一数据库对象时都要加上COMMENT ON注释,以说明该对象的功能和用途;建表时,对某些数据列也要加上COMMENT ON注释,以说明该列和/或列取值的含义。

示例:comment on table RasInfo.TD_UserInfo is'普通地区用户信息表,用于记录除成都外的其他地区的用户信息,按地区分区';comment on column RasInfo.TD_erCode is '用户编码,主键'; 规则3.2 文件注释在每个SQL脚本文件的开头,要用块注释,进行文件功能说明,文件编写人、联系方式和文件创建时间说明等。

由于PL/SQL语句的特殊性,每行注释前以’--’为标志。

示例:------------------------------- 收入保障系统后台数据库脚本---- 特殊号码汇总计算程序 dsras_pkgSpecal_CalcSum.SQL---- 文本责任人:丁凌风(dinglf@ )---- 2007.02.28 开始创建------------------------------规则3.3 过程与函数的注释在每个过程或函数的开头,使用块注释,进行函数功能说明,入口出口参数和返回值说明。

示例:------------- 得到集团用户外部编码。

-- @author lugz-- @version %I%, %G%-- @since 1.00-- @inparam regionCode 地市代码-- @inparam smCode 业务代码-- @outparam grpUserNo 集团用户编码-- @return 返回0表示正确,否则出错!------------规则3.4 变量注释对SQL代码中的局部变量,重要的,要进行注释。

相关文档
最新文档