mysql左对齐原则_MySQL 设计与开发规范

本文详细介绍了MySQL数据库的设计与开发规范,包括SQL书写规范、存储过程书写规范、对象命名规范等,旨在提高代码可读性、降低维护成本。规范涵盖了关键字大小写、SQL语句格式、存储过程中的变量命名、索引创建、视图和触发器使用等多个方面,以提升数据库性能和代码质量。
摘要由CSDN通过智能技术生成

MySQL 设计与开发规范

1 目的

本规范的主要目的是希望规范数据库设计与开发,尽量避免由于数据库设计与开发不当而产生的麻烦;同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好保证。

2 适用范围

本规划的适用人员范围包括涉及数据库设计与开发的相关技术人员。

3 术语约定

本规范采用以下术语描述:

★规则:也称为强规范是编程时必须强制遵守的原则

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

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

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

4 规范及建议

4.1 书写规范

4.1.1 SQL书写规范

规则1: 数据库代码中,关键字大写,其他内容小写;

示例:

如下代码不符合规范:(关键字未大写)

select last_name ,job_id

from employees;

如下代码符合规范:

SELECT last_name, job_id

FROM employees;

规则2:程序块应采用缩进风格书写,保证代码可读,风格一致,缩进格数统一为4格;

规则3:代码中需要空位时,统一采用英文空格键输入,不允许用TAB键 产生空位;

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

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

示例:

如下代码不符合规范(分行书写时,其余行未和第一行左对齐)

SELECT last_name,

job_id

FROM employees;

如下代码也不符合规范(分行时,不是从关键字分行)

SELECT last_name,

job_id FROM employees;

如下代码符合规范

SELECT last_name, job_id

FROM employees;

如下代码符合规范

SELECT last_name,

first_name,

job_id

FROM employees;

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

示例

如下语句不符合规范(SELECT操作未给出字段)

SELECT *

FROM employees;

如下语句符合规范

SELECT last_name, first_name

FROM employees;

规则6:INSERT语句应该给出字段列表;

示例

如下语句不符合规范(INSERT操作未给出字段名称)

INSERT INTO employees

VALUES

(

'GUO',

'DAVID',

100

);

如下语句符合规范

INSERT INTO employees

(

last_name,

first_name,

job_id

)

VALUES

(

'GUO',

'DAVID',

100

);

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

示例

如下语句不符合规范(从同一个表中取出记录,分成两条语句分别扫描)

UPDATE employees_new

SET last_name=

(

SELECT last_name

FROM employees

WHERE job_id = 100

)

WHERE job_id = 100;

UPDATE employees_new

SET first_name =

(

SELECT first_name

FROM employees

WHERE job_id = 100

)

WHERE job_id = 100;

如下语句符合规范

UPDATE employees_new

SET first_name =

(

SELECT last_name

FROM employees

WHERE job_id = 100

),

last_name =

(

SELECT first_name

FROM employees

WHERE job_id = 100

)

WHERE job_id = 100;

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

示例

如下代码不符合规范(逗号后面没有空格)

SELECT last_name,job_id

FROM employees;

如下代码符合规则

SELECT last_name, job_id

FROM employees;

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

示例

如下代码不符合规范(未在谓词部分进行分行)

SELECT last_name, job_id FROM employees WHERE job_id = 1;

如下代码符合规范

SELECT last_name, job_id

FROM employees

WHERE job_id = 1;

规则10:运算符以及比较符左边或者右边只要不是括号,则空一格;

示例

如下代码不符合规范(运算符没有空格)

SELECT CURRENT_DATE+INTERVAL 1 DAY

FROM dual;

如下代码符合规范

SLEECT CURRENT_DATE + (INTERVAL 1 DAY)

FROM dual;

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

示例

如下代码不符合规范(运算优先级关系易混淆)

SELECT a*b/c+d*e

FROM dual;

如下代码符合规范

SELECT ((a * b) / c) + (d * e)

FROM dual;

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

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

示例:

如下代码不符合建议(字段未和INSERT语句空格)

INSERT INTO sm_user

(

user_id,   --用户ID,主键

user_name, --用户名

login_name --登录名

)

VALUES

(

p_user_id,

p_user_name,

p_login_name

);

如下代码符合建议

INSERT INTO sm_user

(

user_id,   --用户ID,主键

user_name, --用户名

login_name --登录名

)

VALUES

(

p_user_id,

p_user_name,

p_login_name

);

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

示例

如下代码不符合建议(字段未和括号分行)

INSERT INTO sm_duty_bak(duty_id, duty_name, created_by, creation_date,

last_updated_by, last_update_date, disable_date)

SELECT duty_id, duty_name, created_by, creation_date,

last_updated_by, last_update_date, disable_date

FROM sm_duty

WHERE duty_id=88;

如下代码符合建议

INSERT INTO sm_duty_bak

(

duty_id, duty_name, created_by, creation_date,

last_updated_by, last_update_date, disable_date

)

SELECT

duty_id, duty_name, created_by, creation_date,

last_updated_by, last_update_date, disable_date

FROM sm_duty

WHERE duty_id = 88;

说明:

1.SELECT 语句中每行的字段应与INSERT 语句对应。

2.INSERT 语句中换行的字段名应缩进并与上一行的第一个字段名对齐。

3.SELECT 语句中换行的字段名应缩进并与上一行的第一个字段名对齐。

4.1.2 存储过程书写规范

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

示例

如下代码不符合规范(将两行定义书写在同一行)

SET v_count = 1; SET v_creation_date = CURRENT_DATE;

如下代码符合规范

SET v_count = 1;

SET v_creation_date = CURRENT_DATE;

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

示例

如下代码不符合规范(变量定义和程序段之间无空行)

SET v_duty_id = 1;

IF (v_disabled_date >  v_current_date) THEN

SELECT duty_name

into v_duty_name

FROM sm_duty

WHERE duty_id = :duty_id;

END IF;

如下代码符合规范

SET v_duty_id = 1;

IF (v_disabled_date >  v_current_date) THEN

SELECT duty_name

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值