目录

Mysql列类型

Mysql的数据列类型

列类型

数值类型

类型 存储空间 解释
TINYINT 8 位 非常小的整数值范围,通常用于表示非常小的数值。
SMALLINT 16 位 较小的整数值范围。
MEDIUMINT 24 位 中等大小的整数值范围。
INT 32 位 常规大小的整数值范围。
BIGINT 64 位 非常大的整数值范围,适合处理超大数值。

浮点数与高精度小数类型

类型 占用空间 解释
FLOAT 4 字节 单精度浮点数,占用 4 字节,精度约为 7 位十进制数。
DOUBLE 8 字节 双精度浮点数,占用 8 字节,精度约为 15 位十进制数。
DECIMAL 取决于定义的精度和范围 DECIMAL 类型的存储空间取决于定义的小数位数和整数位数,每 4-9 位需要 4 字节

DECIMAL 类型的占用空间详细说明

  • DECIMAL(M, D) 类型中,M 表示数字的总位数(整数位数加小数位数),D 表示小数位数。

  • DECIMAL 类型的存储空间按以下规则计算:

    • 每 9 位数字(整数和小数位)占用 4 字节。
      • 若剩余数字少于 9 位:
        • 1-2 位占 1 字节
        • 3-4 位占 2 字节
        • 5-6 位占 3 字节
        • 7-9 位占 4 字节

例子:

  • DECIMAL(5, 2):总共 5 位数字,其中 2 位是小数位。因此,占用 3 字节。

  • DECIMAL(18, 9):总共 18 位数字,其中 9 位是小数位。因此,占用 8 字节。

字符串类型

类型 解释
CHAR 定长字符串,适合存储固定长度的字符串,如MD5值等。末尾空格会被删除。
VARCHAR 变长字符串,适合存储长度可变的字符串,节省存储空间。末尾空格会被保留。
BLOB 二进制大对象,存储大量二进制数据。
TEXT 大文本数据类型,存储大量字符数据。

时间和日期类型

类型 存储空间 解释
DATETIME 8 字节 保存从1001年到9999年的日期时间,精度为秒,与时区无关。
TIMESTAMP 4 字节 保存从1970年到2038年的UNIX时间戳,精度为秒,与时区相关。

优化选择建议

  • 数据类型选择:通常更小的类型更好,因为它们占用更少的存储空间,并且处理速度更快。
  • 避免NULL:尽量避免使用可为NULL的列,因为它会使索引优化更复杂。
  • 定长与变长字符串:根据数据的长度特性选择CHAR或VARCHAR,定长字符串适合长度固定的数据,变长字符串适合长度可变的数据。
  • 选择合适的表示符:整数类型通常是标识列的最佳选择,避免使用随机字符串作为标识符