« 上一篇下一篇 »

SQL编程规范

规则1: 数据库代码中,关键字大写,其他内容小写(在PL/SQL中可设置关键字自动转换为大写,以降低编码时的大小写切换)


规则2:程序块应采用缩进风格书写,保证代码可读,风格一致,缩进格数统一为2格;代码中需要空位时,统一采用空格键输入,不允许用TAB键产生空位;

说明:不同的编辑器对TAB的空位格数设置不一致,会导致使用TAB键产生空位的代码格式混乱;


规则3:同一条语句占用多行时,每一行的开始应是关键字,且关键字应和第一行左对齐,如确实不能从关键字分行,则分行处应对其上一行被分行的同类代码的最左边;

建议1:对于INSERT… VALUES和UPDATE语句,一行写一个字段,每个字段相对于INSERT语句空两格,这段后面紧跟注释(注释语句左对齐),VALUES和INSERT左对齐,左括号和右括号与INSERT、VALUES左对齐。

建议2:INSERT…SELECT 语句时,应使每行的字段顺序对应,以每行最多不超过4 个字段,以方便代码阅读,括号的内容另起一行缩进2 格开始书写,关键字单词左对齐,左括号、右括号另起一行与左对齐。


规则4:不允许将多行语句书写在同一行。


规则5:不允许将SQL语句写成一行,再短的SQL也应该在谓词处分行


规则6:相对独立的程序块之间应加空行


规则7:不同类型的操作符混合使用时,应使用括号明确的表达运算的先后关系


规则8:BEGIN和END应独立成行


规则9:SQL语句中的逗号后面应增加一个空格,以使得代码清晰

建议1:减少控制语句的判断次数,比如在ELSE(IF…ELSE)语句中,尽量将尽快能检测到结果的判断提前

建议2:尽量避免使用嵌套的IF语句,在这种情况应使用多个IF语句来判断其可能性。

建议3:存储过程、函数、触发器、程序块中定义的变量和输入、输出参数在命名上有所区分。

说明:一般用’v_’开头代表程序块中定义的变量;一般用’p_’开头代表输入参数变量;一般用’x_’开头代表输入输出或输出参数变量


规则10:查询数据时,尽量不使用SELECT *,而是给出明确的字段,但该规则不包括SELECT COUNT(*)语句


规则11:INSERT语句应该出字段列表


规则12:从表中同一笔记录中获取记录的字段值,须使用一SQL 语句得到,不允许分多条SQL 语句。


规则13:当一个PL/SQL 或SQL 语句中涉及到多个表时,始终使用别名来限定字段名,这使其它人阅读起来更方便,避免了含议模糊的引用,其中能够别名中清晰地判断出表名。


规则14:确保变量和参数在类型和长度与表数据列类型和长度相匹配。说明:如果与表数据列宽度不匹配,则当较宽或较大的数据传进来时会产生运行异常。


规则15:一句SQL如果只访问了单表,禁止使用表别名


规则16:运算符以及比较符左边或者右边只要不是链接的括弧,则空一格


规则17:任何SQL书写单行不得超过80字符(含左边的缩进)


规则18:无特殊情况,代码注释尽量使用英文;


规则19:所有命名规则中,必须优先遵守通用规则,列入通用规范中的规则必须强制遵守


规则20:任何数据库对象的命名,不得使用汉字;建议1:字符类型尽量定义为varchar类型而非char类型


规则21:任何命名长度不得超过30


规则22:用户对象命名应全部为小写,且不允许使用控制符号强制转换对象为小写字符


规则23:命名应使用富有意义的英文,禁止使用拼音首字母,一般情况下不建议使用拼音命名;


规范24:命名不得使用数据库保留字


规则25:同类业务的表,以相同的表示该类业务的英文开头


规则26:同类表,如果按照时间不同建立的表,后缀格式一般情况下应为’_YYYY[MM[DD]]’格式


规则27:字段命名应具有含义,能反映该字段存储的内容,如确实无法使用富有含义的字段名,则应增加字段备注。


规则28:同种用途的字段,在同一个业务中的所有表中,应保持有同样的字段类型和字段长度,并尽量保持一致的字段命名


规则29:主键名称应以”pk_”开头,后接表名


规则30:外键名应以”fk_”开头,后接表名


规则31:唯一索引应以”uk_”+”表名_”+”字段名”命名


规则32:普通索引应以”idx_”+”表名_”+“字段名”命名


规则33:bitmap索引应以”bidx_”+”表名_”+“字段名”命名


规则34:视图命名应以“v_”+“表名[_表名[_表名]]”命名


规则35:同义词命名要求和其所指向的对象同名


规则36:函数命名以”func_”开头,后接函数的功能


规则37:存储过程以“prc_”开头,后接功能描述


规则38:包以“pkg_”开头,后接功能描述


规则39:数据库链以“dl_”+“$SID_$USER”命名


规则40:触发器以“tri_”+表名+“_ins/del/upd”+”_before/after”命名


规则41:物化视图以“mv_”+“表名[_表名]”命名


规则42:临时表以“tmp_”开头,后接功能描述


规则43:如果是在上线/割接中被重命名的表,命名应是原表名+“_YYYYMMDD”


规则44:数据库用户名以字母开头,字母和数字混合且长度不超过8个字符,同时,密码必须包含小写字母,大写字母,数字,特殊字符四种组合且不少于8位


引用地址:http://blog.chinaunix.net/uid-20125950-id-3154366.html