MySQL数据库SQL开发手册
- 格式:docx
- 大小:101.43 KB
- 文档页数:22
MySQL数据库SQL开发手册
目录
一、编写目的 (4)
(一)简介 (4)
(二)范围 (4)
(三)术语和定义 (4)
二、创建规范 (5)
(一)通用 (5)
(二)兼容性规约 (5)
(三)建表规约 (6)
(四)主键规约 (7)
(五)索引规约 (7)
三、开发规范 (9)
(一)通用 (9)
(二)Insert (9)
(三)Delete (10)
(四)Update (10)
(五)Select (10)
(六)From (11)
(七)Where (11)
(八)Group by (11)
(九)Having (12)
(十)Order by (12)
(十一)Limit (12)
四、优化规范 (13)
(一)通用 (13)
(二)Insert (14)
(三)Update (14)
(四)Delete (14)
(五)Join (14)
(六)or (14)
(七)Group by (15)
(八)Order by (15)
(九)Limit (15)
(十)子查询 (16)
五、附录 (17)
(一) A 保留字 (17)
一、编写目的
(一) 简介
针对关系型数据库MySQL的相关特性,拟定的相关开发过程的规范,其旨在通过该规范的约束和建议,使开发人员可以在他们所编写的代码中保持统一正确的风格,提供代码的可读性以及减少出现错误的几率。
(二) 范围
本规范仅适用于环境MySQL数据库以及其对应的SQL脚本语言。(三) 术语和定义
本规范采用以下的术语描述:
★强制:必须遵从使用的原则。
★规则:如无特殊情况,应该遵守的原则。
★推荐:建议遵守的原则。
★参考:开发人员可以参考了解的原则。
二、创建规范
(一) 通用
1. 【强制】表必须有主键
2. 【强制】禁用外键
3. 【强制】禁用视图
4. 【强制】禁用分区表
5. 【强制】禁用使用MyISAM引擎
6. 【规则】日志类表:
a) 不入库,存成文件;
b) 入库,明确生命周期,保留业务必须数据,定期清理。
7. 【推荐】库名与应用名称尽量一致,长度控制在15个字符以内。
8. 【参考】合适的字符存储长度,不但节约数据库表空间、节约索引存储,更
重要的是提升检索速度。
正例:人的年龄用unsigned tinyint(范围0-255,人的寿命不会超过255 岁);海龟就必须是smallint,但如果是太阳的年龄,就必须是int;
如果是所有恒星的年龄都加起来,那么就必须使用bigint。
(二) 兼容性规约
1. 【强制】禁用触发器、存储过程、自定义函数、EVENTS
2. 【规则】禁止使用hint
3. 【强制】禁用数据库保留字,如desc、range、match、delayed 等,详见
附录A 保留字
4. 【强制】禁止使用字段属性default current_timestamp on update
current_timestamp,该功能直接在程序中实现。
5. 【强制】禁止使用encryption、key_block_size、avg_row_length、max_rows、
min_rows等表的属性
(三) 建表规约
1. 【强制】所有业务表必须使用Innodb引擎
2. 【强制】字符集和应用层必须保持一致UTF8
3. 【强制】必须显式指定engine和charset
4. 【强制】表和字段应该有必要的注释
5. 【强制】创建表时,必须创建主键
6. 【强制】不同表之间的相同字段或者关联字段,字段类型要保持一致
7. 【强制】临时表、备份表、历史表要使用后缀tmp、bak、his字段标明,并
提供数据生命周期
8. 【强制】表达是与否概念的字段,必须使用is_xxx 的方式命名,数据类
型是unsigned tinyint( 1 表示是,0 表示否)。
说明:任何字段如果为非负数,必须是unsigned。
9. 【强制】表名、字段名必须使用小写字母或数字,长度限制在15个字符以
内;禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。
正例:getter_admin,task_config,level3_name
反例:GetterAdmin,taskConfig,level_3_name
10. 【强制】小数类型为decimal,禁止使用float 和double。
说明:float 和double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不正确的结果。如果存储的数据范围超过decimal 的范围,建议将数据拆成整数和小数分开存储。
11. 【强制】表必备三字段:id, xxx_create, xxx_modified。
说明:其中id 为主键,类型为unsigned bigint,xxx_create, xxx_modified的类型均为datetime 类型,分别记录该条数据的创建时间、修改时间。
12. 【强制】如果存储的字符串长度几乎相等,使用CHAR 定长字符串类型。
13. 【强制】varchar 是可变长字符串,不预先分配存储空间,长度不要超过255,
如果存储长度大于此值,建议不入库直接存成文件
14. 【规则】禁止在数据库中使用大字段(blob/text)