【从日常大家使用情况进行总结】
一、数据库表名、字段名设计规范
1、库名、表名、字段名统一大写,并下划线分割。
2、库名、表名、字段名禁止超过32个字符。
库名、表名、字段名支持最多64个字符,但为了统一规范、易于辨识以及减少传输量,禁止超过32个字符。
3、库名、表名、字段名、索引名等所有名称仅允许由字母、数字或下划线组成,禁止使用其他特殊字符。
所有名称中禁止使用汉语拼音,应使用有意义的英文单词(或缩写)代替。无英文翻译的单词除外。
4、禁止使用系统保留字命名。
5、常用的字段命名和类型如下:
类名 |
命名 |
字段类型 |
---|---|---|
主键 | ID | BIGINT(20) |
创建时间(可选) | CREATE_DATE | datetime NOT NULL COMMENT '创建时间' |
更新时间(可选) | UPDATE_DATE | datetime NOT NULL COMMENT '更新时间' |
XX标识(可选) | XX_TAG | tinyint NOT NULL DEFAULT '0' COMMENT '删除标识:0未删除, 1已删除' |
创建账号 | CREATE_ACCOUNT | 记录的是登录账号,不是ID |
更新账号 | UPDATE_ACCOUNT | 记录的是登录账号,不是ID |
二、数据库字段类型设计规范
1、优先选择符合存储需要的最小的数据类型。
2 、避免使用TEXT、BLOB数据类型。
3 、避免使用ENUM数据类型。
4 、尽可能把所有列定义为NOT NULL。
5 、使用TIMESTAMP或DATETIME类型存储时间。
6 、对于财务相关的金额类数据,必须使用decimal类型。
7 、对于char和varchar的用法
根据字符串长度确定,凡是固定长度的字符串或者类似固定长度的字符串一律用char;
数据是否经常更改导致碎片,可能经常变动而产生存储碎片的小字符串一律用char;
理解varchar的存储空间和内存空间的区别,合理指定varchar的长度;
https://blog.csdn.net/qq_36544760/article/details/82711569
8、tinyint smallint int mediunint bigint 等数字类型后面括号中的数字,不表示长度,表示的是显示宽度,这点与 varchar、char 后面的数字含义是不同的
tinyint(1) 和 tinyint(3) 没什么区别,占用字节都是一位,存储范围都是一样的
tinyint(3) zerofill ,当插入的数据少于3位的时候,左边自动补零,这才是限制显示长度
int(1) 和 tinyint(1) ,够用的情况下,优先选择tinyint(1),因为占字节少、节省空间。
tinyint一个字节 smallint 两个字节 MEDIUMINT三个字节 int 4个字节 BIGINT 8个字节
三、SQL开发规范
1、避免数据类型的隐式转换
例如:where条件后的字段类型和传入的值类型一致。
2、数值型比字符串类型效率高,查询更快、占用空间更小,故能用数值型的就不要用字符型;
3、单表索引数,正常应不超过5个
应结合业务逻辑,对查询频率较高或组合频率较高的字段添加索引
4、禁止冗余索引
5、禁止重复索引
6、不在低基数列上建立索引
7、用IN或者UNION ALL代替OR
8、禁止使用SELECCT *
9、减少同数据库交互的次数
10、避免使用JOIN 关联太多的表
11、避免使用子查询,可以把子查询优化为join操作
12、充分利用表上已存在的索引
13、禁止对查询字段做任何运算,极易引发锁表
14、谨慎使用子查询或嵌套查询
15、所有存储相同数据的列名和列类型必须一致;
16、功能相同的函数或操作应统一为同一操作。
- <>和NOT=应统一为!=
- !>和!<应统一为<=和>=
- JOIN中的USING应统一为ON
资料: