mysql类型有哪些:分两大类快速选用

mysql类型有哪些,整体分为数值类型、字符串类型、日期时间类型、二进制类型、枚举集合类型五大类,数值类型负责存储数字,字符串类型存放文本,日期时间类型记录时间,二进制类型保存文件字节流,枚举集合类型限定可选值;小表、低并发业务优先选占用字节更小的类型,大数据量、统计分析场景优先选支持高精度、大存储容量的类型,该分类体系适配MySQL5.7、MySQL8.0主流版本,不适用于MariaDB、OceanBase等兼容分支里新增的独有数据类型。

mysql类型之数值类型

数值类型细分整数型、浮点型、定点型三类,整数型包含TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,存储字节依次递增,TINYINT占1字节,常用来存储状态标识,INT占4字节,是业务主键、普通数字字段的常用选择,BIGINT占8字节,适合自增主键、超大计数场景。浮点型有FLOAT、DOUBLE,存储近似小数,计算过程会产生精度偏差,不适合金额核算。定点型为DECIMAL,以字符串形式存储小数,精度可控,财务金额、订单价款字段大多选用这个类型。

类型占用字节适用场景
TINYINT1状态标记、有限选项数字
INT4普通ID、数量统计
BIGINT8高增长自增主键
DECIMAL可变金额、需要精确计算的小数

选整数类型时可以搭配UNSIGNED属性,取消负数范围,正数上限翻倍,比如TINYINTUNSIGNED取值上限提升到255,适合只存正数的字段。

mysql类型之字符串类型

字符串类型包含CHAR、VARCHAR、TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT,CHAR为定长字符串,长度固定,查询速度较快,适合手机号、身份证号这类长度固定的数据,长度不足时会自动补空格。VARCHAR为变长字符串,按实际内容占用存储空间,节省磁盘,是名称、备注这类长短不固定文本的主流选择。TEXT系列属于大文本类型,不支持设置默认值,索引使用限制较多,一般存放长篇文章、富文本内容,不适合高频检索字段。

CHAR不要随意设置过大长度。

mysql类型之日期时间类型

日期时间类型有DATE、TIME、DATETIME、TIMESTAMP、YEAR,DATE只保存年月日,TIME保存时分秒,DATETIME可存储从1000-01-01到9999-12-31的完整时间,不受时区影响,TIMESTAMP会自动转换时区,取值范围更小,到2038年存在溢出问题,新业务一般优先DATETIME。YEAR只存储年份,占用空间小,只需要记录年份信息时可以使用。

mysql类型之二进制、枚举集合类型

二进制类型包含BINARY、VARBINARY、BLOB系列,用来存储原始二进制数据,比如图片、文件字节流,BINARY对应定长二进制,VARBINARY对应变长二进制,BLOB对应大容量二进制数据,生产环境通常不会直接把完整文件存入数据库,大多只存文件路径。ENUM是枚举类型,预先定义好固定可选值,只能填入列表内内容,SSET集合类型允许一条记录同时选中多个预设值,适合标签、多选项标记场景,枚举和集合修改选项列表需要变更表结构,后期调整成本偏高。

字段类型选错会带来存储浪费、查询变慢、数据溢出等问题,比如把短文本设置成LONGTEXT,会增加IO开销,把金额设置成DOUBLE,对账时容易出现差额。

你设计表结构时,优先预估字段存储的数据范围,选择满足需求前提下占用字节最少的类型,索引字段尽量避开TEXT、BLOB这类限制较多的类型,能大幅降低数据库的资源消耗。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于mysql类型有哪些的文章欢迎访问:百科