mysql 尽量不要使用 联合主键_MySQL 使用规范

本文介绍了MySQL的使用规范,包括命名规范、SQL语句规范、表设计、索引优化、字段类型选择以及避免使用联合主键等。强调了避免使用NULL、使用InnoDB引擎、设置DEFAULT值、避免浮点类型、合理使用枚举和集合类型、控制单表字段数量等最佳实践。
摘要由CSDN通过智能技术生成

MySQL 使用规范

以下规范适用在线交易(OLTP)系统的数据库。数据仓库与分析系统也可以参考。

命名规范

表名、字段名、索引名使用小写字母、数字,采用下划线分割

表名采用模块名3个缩小字符_前缀,之后顺序为表名,最后_分表后缀

表名、字段名不超过 32 个字符

存储实体数据的表,名称使用名词,单数

索引名称采用 idx_ 前缀,之后顺序跟随索引的字段名,字段名直接以下划线分割

不使用保留字

存储实体表间多对多对应关系的表,名称建议采用 noun_verb_noun 这样的模式。例如: member_like_property、property_has_tag。

SQL 语句中,

保留字使用全大写

字符串使用单引号(')

sql

-- 正确

SELECT id, title FROM xiaoqu WHERE id = 1

SELECT id, title FROM xiaoqu WHERE areacode = '000100010001'

-- 错误

select ID, title from XiaoQu where id = 1

SELECT id, title FROM xiaoqu WHERE areacode = "000100010001"

表的设计

MySQL 存储引擎使用 InnoDB

不用纠结,没有特殊原因的情况下,作为 OLTP 的 MySQL 使用 InnoDB 引擎。

字符集使用 UTF-8

Charset 为 utf8;Collation 为 utf8_general_ci。

平衡是门艺术

效率优先,提升性能

没有绝对的对与错

适当牺牲范式,加入冗余

会增加代码复杂度

正确使用时间类型

MySQL 应当正确设置 time_zone。

精确到秒的时间采用 TIMESTAMP

精确到日期使用 DATE

一般不使用 DATETIME 类型

每个表都含有ins_time、edt_time

不允许使用字符串类型存储时间

字段定义为 NOT NULL

真的需要 NULL 值吗?如果不确定,就将字段设置为 NOT NULL。

避免使用NULL字段

很难进行查询优化 NULL列加索引,需要额外空间 含NULL复合索引无效

字段设置 DEFAULT 值

设置为 NOT NULL 的字段,需要设置一个缺省值。

优先使用ENUM或SET

字符串 可能值已知且有限 ENUM占用1字节,转为数值运算 SET视节点定,最多8字节 比较时需要加‘ 单引号(即使是数值)

用好数值类型

原则:适用就好,越小越好

TINYINT< SMALLINT < MEDIUMINT < INT < BIGINT

1 Byte/2 Bytes/3 Bytes/4 Bytes/8 Bytes

FLOAT(4B

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值