Amygo
作者Amygo2019-05-09 17:27
DBA, 分布式事务数据库

分布式事务数据库 —-MySQL 数据库开发规范

字数 1836阅读 1805评论 0赞 1

分布式事务数据库

---MySQL 数据库开发规范

目录如下
(1)数据类型;
(2)表名称与字段名称设计规则;
(3)字符集;
(4)字符串函数--3.1-3.5 ;
(5)字母大小写转换函数 ;
(6)数学函数 ;
(7)日期操作函数 ;
(8)类型转换函数;
(9) 特殊函数 ;
(10)聚合函数 ;
(11)简化查询语句;
(12)SELECT子句的使用规范;
(13)WHERE条件子句

每日更新一节~感兴趣的可以持续关注我~


(1)数据类型

1.1 数据类型分类

a) 数值类型 -- TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、 DECIMAL
b) 时间类型 -- DATE、DATETIME、TIMESTAMP
c) 字符串类型 -- CHAR、VARCHAR、TEXT
d) 特有类型 -- ENUM、SET

1.2 特别说明

  VARCHAR(N) 或 CHAR(N)中 N 的含义

MySQL 中两类字符串 VARCHAR(N) 或 CHAR(N)定义时候填写的长度 N,不是字节数的意思 ,而是字符数的含义。

  浮点数

同财务有关的浮点数必须使用精确存储的 DECIMAL 数值类型。为减少浮点类型 FLOAT 和DOUBLE 的精度不够而可能造成数值计算存在偏差,故非财务相关的浮点数字段也采用DECIMAL 数值类型存储,禁止使用 FLOAL 和 DOUBLE 类型。例如:weight DECIMAL(10,4) NOT NULL DEFAULT 0。

1.3 数据类型范围
s8kppb4d9ng

s8kppb4d9ng

9ocozc5dxhc
9ocozc5dxhc

3tj7hj50nb2
3tj7hj50nb2

**1.4 详细说明
**
1) 类似于状态,且有限类别的字段,推荐使用可比较明显表示出实际意义的字符串,而不应该使用 INT 之类的数字来代替,故推荐使用枚举类型 ENUM 和集合类型 SET;
2) 使用 UTF8 时,因其是变长的字符集,故固定和动态长度的字符串都应用 VARCHAR;
3) 仅仅当字符数量可能超过 20000 个的时候,可以使用 TEXT/MEDIUMTEXT 类型来存放字符类数据。推荐所有使用 TEXT/MEDIUMTEXT 类型的字段和原表进行分拆,与原表主键单独组成另外一个表进行存放;
4) 需要精确时间(年月日时分秒)的字段可以使用 DATETIME 或 TIMESTAMP,但请注意各自能表达的范围,以及是否需要用到 TIMESTAMP 的特性,尽量使用 TIMESTAMP类型替代 DATETIME 以减少数据存储空间的占用;需要毫秒、微妙时,使用TIMESTAMP (3)或 TIMESTAMP (6),以及 DATETIME(3)和 DATETIME(6)(注:社区
版 5.6 开始 DATATIME 也支持 CURRENT_TIMESTAMP.,且支持任意数量与组合);
5) 所有只需要精确到天的字段全部使用 DATE 类型,而不应该使用 TIMESTAMP 或者DATETIME 类型;
6) 自增序列特性的字段只能使用 INT 或者 BIGINT,强烈推荐明确标识为无符号类型(关键词:UNSIGNED),除非确实会出现负数,仅当该字段的数值会超过 42 亿,才使用 BIGINT 类型,并且自增字段必须作为主键或主键的一部分;
7) INT(N)中 N 的含义
MySQL 中各类整形也可包含长度,该长度的含义和 Oracle 的 NUMBER 类型的长度含义不同,N 值的大小完全不影响数值的存储范围,只影响有 ZEROFILL 时显示的长度。
8) 空字符串的含义
MySQL 中字符串存在三种容易混淆的值:空字符串''、空值 NULL 和 NULL 字符串'NULL',需要注意判断。和 Oracle 的最大区别为 Oracle 不区分空字符串''和空值 NULL。
1.1.5 分片字段数据类型选择
禁止选择大字段类型,以及非精确浮点型,空间类型的字段作为分片字段的数据类型。
禁止作为分片字段的类型见下列表格:
ztinrmpg9m8

ztinrmpg9m8

ayrs5a843tp
ayrs5a843tp

避免分片字段使用二进制类型 binary 和 varbinay。
避免分片字段使用二进制校对规则。可在 MySQL 数据库执行 SQL 语句,查找二进制的校对规则:select * from information_schema.collations where collation_name like '%bin';

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广