MySQL 数据类型主要分为三类:数值类型、字符串类型、日期和时间类型。
数值类型
| 类型 | 说明 | 示例 |
|---|
TINYINT | 很小的整数,范围 -128127 或 0255 (UNSIGNED) | TINYINT(3) |
SMALLINT | 小整数,范围 -32,768~32,767 | SMALLINT(5) |
MEDIUMINT | 中等整数,范围 -8,388,608~8,388,607 | MEDIUMINT(8) |
INT / INTEGER | 普通整数,范围 -2,147,483,648~2,147,483,647 | INT(11) |
BIGINT | 大整数,范围 -2^63 ~ 2^63-1 | BIGINT(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) | 固定长度字符串,最大 255 | CHAR(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~2155 | YEAR |
使用建议
- 整型主键 ID →
INT 或 BIGINT,配合 AUTO_INCREMENT
- 金额 →
DECIMAL(10,2),避免浮点误差
- 短文本(姓名、标题) →
VARCHAR(50/255)
- 长文本(正文内容) →
TEXT 或 MEDIUMTEXT
- 时间 → 业务数据建议
DATETIME,日志记录推荐 TIMESTAMP