对数据库的使用遵循基本的规范,跟遵循程序开发规范一样,可以降低应用开发的复杂度,提高项目内成员的沟通效率。
1.建库规范
a. 数据库名尽量与应用名称一致;
b.字符集使用 utf-8;
c.排序规则使用 utf8_general_ci;
2.建表规范
a.表名用业务名称_表的作用命名;只能使用小写字母、下划线或者数字;禁止以下划线或者数字开头;禁止两个下划线之间只出现数字;禁用保留字;表名禁止使用复数名词。
b.编码与数据库保持一致使用utf-8;
c.含小数的数值型字段使用decimal类型,减少使用float和double类型,因为float 和 double 存在精度损失;
d.字符型使用varchar,非定长的字符型避免使用char类型,减少对空格的处理和影响;
e.每个表都保留自增id和插入时间,最后更新时间三个字段;
3.建索引规范
a.索引的命名:主键索引用 pk_表名_字段名;唯一索引用 uk_表名_字段名;普通索引用 idx_表名_字段名;
b.业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引,可以提高检索速度,并且能替代前台进行自动数据校验;
c.多表关联查询的字段上需要建立索引,并且多表关联字段类型保持一致;
4.SQL语句书写规范
a.count语句,count()和count(字段名)的区别:count() 会统计值为 NULL 的行,而 count(列名) 不会统计此列为 NULL 的行,所以count(*)和count(字段名)需要根据情况选择使用;
b.select * 最好不用,而用select 字段名列表 执行查询,能提高查询效率,并且表中增加字段后对原有程序不会有影响。
c.当一列的值全为 NULL 时,count(字段) 的返回结果为 0,但 sum(字段) 的返回结果为 NULL,为了得到正确的sum结果,使用select if(isnull(sum(字段)), 0, sum(字段)) from 表即可;
d.数据删除和修改一定要加条件,并且相同的条件先用select语句查询出结果,查看是否是自己需要的记录,再用delete和update进行更新。