MySQL使用规范_mysql使用入门
最近看到MySQL相关的内容,结合平时工作中出现的问题,整理了一些规范要点,内容偏基础,如果有错误的地方,欢迎批评指正。
主要内容包含以下几点:
- 命名规范
- 基础规范
- 字段设计规范
- sql设计规范
- 索引规范
命名规范
1、库名、表名,字段名必须使用小写字母,并采用下划线分割
2、库名、表名,字段名禁止超过32个字符
3、库名、表名,字段名必须见名知意,命名与业务相关联
4、库名、表名,字段名禁止使用MySQL关键字,比如index等等
5、临时库名、临时表名必须以tmp为前缀,并以日期为后缀,例如,tmp_test001_20200210
6、备份库名、表名必须以bak为前缀,并以日期为后缀,例如,bak_test001_20200210
7、所有存储相同数据的列名和列类型必须一致
基础规范
1、非特殊情况,建表一律采用Innodb引擎,默认使用utf8mb4字符集(兼容Emoji)
2、新建表需要添加表注释,所有字段都需要添加注释,注释必须说明字段含义,有枚举值必须说明清楚
3、禁止枚举类型,可以使用tinyint+代码映射代替
4、禁止在数据库中存储图片、文件等大数据
5、禁止在生产环境做数据库压力测试
6、列表查询必须要limit,并且不能超过1000
7、每张表数据量建议控制在500w以内
字段设计规范
1、优先选择符合存储需要的最小的数据类型
2、尽可能把所有列定义为not null 并且要有默认值,比如default ""
3、使用timestamp(4个字节)或者datetime类型(8字节)存储时间
4、对于非负型的数据(比如自增ID,整型IP)来说,要优先使用无符号整型来存储
sql设计规范
1、用in代替or,sql语句中in包含的值不应该过多,应少于500个
2、跨领域业务禁止使用join,单个领域严禁join次数超过2次
3、禁止使用子查询
4、禁止在mysql中进行复杂数学运算和函数运算,数学运算仅限于简单的加减乘除和位操作
5、select只获取必要的字段,禁止使用select *,
6、insert语句必须指定字段列表,禁止使用insert into table()
7、业务禁止使用存储过程,触发器,视图,自定义函数等
8、业务sql必须被索引,update、delete的where条件列,order by、group by、distinct 字段
9、严禁使用%前导查询,例如 “%abc”,无法利用到索引,严禁使用not like
10、避免使用负向查询,比如not in 、!=等等
11、where条件值需与字段类型一致
12、禁止使用order by rand()
索引规范
1、建议单表中索引数不超过5个
2、禁止单个索引中的字段数超过5个
3、表必须要有主键
4、唯一键的组成字段不能超过3个,并且字段都是整形时,可使用唯一键作为主键。其他情况下,建议使用自增列或发号器作主键
5、禁止冗余索引,禁止重复索引,禁止使用外键
6、索引名必须全部使用小写
ps:每天总结一点点,每天就进步一点点,积少成多。