数据类型

MySQL 数据类型主要分为三类:数值类型、字符串类型、日期和时间类型

数值类型

类型说明示例
TINYINT很小的整数,范围 -128127 或 0255 (UNSIGNED)TINYINT(3)
SMALLINT小整数,范围 -32,768~32,767SMALLINT(5)
MEDIUMINT中等整数,范围 -8,388,608~8,388,607MEDIUMINT(8)
INT / INTEGER普通整数,范围 -2,147,483,648~2,147,483,647INT(11)
BIGINT大整数,范围 -2^63 ~ 2^63-1BIGINT(20)
DECIMAL(M,D) / NUMERIC(M,D)定点小数,精确存储,常用于金额DECIMAL(10,2) → 99999999.99
FLOAT(M,D)单精度浮点数,近似存储FLOAT(7,4) → 999.9999
DOUBLE(M,D) / REAL双精度浮点数,近似存储DOUBLE(16,8)

字符串类型

类型说明示例
CHAR(n)固定长度字符串,最大 255CHAR(10)
VARCHAR(n)可变长度字符串,最大 65535(受行大小限制)VARCHAR(255)
TINYTEXT最多 255 字符适合存储短文本
TEXT最多 65,535 字符(64KB)博客正文
MEDIUMTEXT最多 16,777,215 字符(16MB)长文章
LONGTEXT最多 4,294,967,295 字符(4GB)大规模内容(如书籍)
ENUM(val1,val2,…)枚举类型,只能存其中一个值ENUM('male','female')
SET(val1,val2,…)集合类型,可同时存多个选项SET('a','b','c')

日期和时间类型

类型说明示例
DATE日期(YYYY-MM-DD),范围 1000-01-01 ~ 9999-12-31'2025-08-25'
DATETIME日期时间(YYYY-MM-DD HH:MM:SS),不受时区影响'2025-08-25 14:30:00'
TIMESTAMP时间戳(会随时区变化),范围 1970-01-01 ~ 2038-01-19'2025-08-25 14:30:00'
TIME时间(HH:MM:SS),范围 -838:59:59 ~ 838:59:59'12:30:00'
YEAR年份(YYYY),范围 1901~2155YEAR

使用建议

  • 整型主键 IDINTBIGINT,配合 AUTO_INCREMENT
  • 金额DECIMAL(10,2),避免浮点误差
  • 短文本(姓名、标题)VARCHAR(50/255)
  • 长文本(正文内容)TEXTMEDIUMTEXT
  • 时间 → 业务数据建议 DATETIME,日志记录推荐 TIMESTAMP