跳到主要内容

数据类型

根据需求,来定义具体的数据类型

  • 数值类型
  • 字符串类型
  • 日期类型
  • 二进制类型
  • 布尔类型
  • 枚举类型
类型分类数据类型描述存储空间场景
数值类型INT/INTEGER存储整数,范围通常为 -2^31 到 2^31-14 字节用户年龄、订单数量
BIGINT更大范围的整数(-2^63 到 2^63-1)8 字节唯一ID(如自增主键)
FLOAT单精度浮点数,近似数值4 字节科学计算、非精确小数
DOUBLE双精度浮点数,精度高于 FLOAT8 字节高精度科学计算
DECIMAL/NUMERIC精确小数,适合金融计算(指定精度和小数位)可变(取决于精度)价格(如 DECIMAL(10,2) 表示 10位总长度,2位小数)
字符串类型CHAR(n)定长字符串,长度固定,不足补空格固定为 n 字节(最大 255)国家代码(如 "CN"、"US")
VARCHAR(n)变长字符串,按实际长度存储,需指定最大长度实际长度 + 1-2 字节(最大 65535)用户名、地址
TEXT长文本数据,无固定长度限制可变(通常较大)文章内容、评论
日期时间类型DATE仅存储日期(年-月-日)3 字节出生日期、订单日期
TIME仅存储时间(时:分:秒)3 字节会议开始时间
DATETIME存储日期和时间(年-月-日 时:分:秒)8 字节用户注册时间
TIMESTAMP时间戳(与时区相关,自动更新)4 字节记录修改时间
二进制类型BLOB存储二进制大对象(如图片、音频)可变(最大 4GB)用户头像、文件上传
BINARY(n)定长二进制数据固定为 n 字节加密后的短二进制数据
布尔类型BOOLEAN/BOOL存储逻辑值(TRUE/FALSE)1 字节是否启用、订单是否完成
JSON 类型JSON存储结构化 JSON 数据(现代数据库支持)可变API 响应数据、配置信息
枚举类型ENUM预定义字符串集合,字段值必须为其中之一(最多65535个值)状态字段、性别

存储数据注意​

  • 存储优化:尽量选择最小够用的类型(例如用SMALLINT代替INT存储小范围数值)。
  • 数据一致性:枚举类型可替代自由文本字段,减少输入错误

枚举类型理解​

枚举类型(enum)是一种特殊的数据类型,用于存储预定义的字符串值列表

  • 有限值约束:枚举字段的值必须是预定义的枚举值之一,这增强了数据一致性,减少了无效或非法值的输入。
  • 存储高效:枚举类型使用内部索引代替字符串存储,节省了存储空间。
  • 查询性能优越:与字符串类型相比,枚举类型的比较和排序更高效。
  • 语义清晰:字段值的含义更加直观,提高了代码的可读性和可维护性
  • 存储方式:枚举类型的数据存储为整数形式,每个枚举值对应一个整数值

枚举类型场景​

枚举类型应用于需要固定状态或分类的场景,例如:

  • 订单状态管理:如“待支付”、“已发货”、“已完成”等状态。
  • 用户角色管理:如“管理员”、“普通用户”、“访客”等角色。
  • 状态跟踪:如设备的“在线”、“离线”、“维护中”等状态。

枚举类型的局限性​

  • 灵活性差:枚举类型的值一旦定义后难以修改,可能导致数据不一致性。
  • 排序问题:枚举类型的排序依赖于定义顺序,可能导致逻辑混乱