MySQL 数据类型
整数、小数、字符串、日期时间等核心类型怎么选。
Key Points选对类型能省空间、提速度:定长用 CHAR、变长用 VARCHAR、金额用 DECIMAL。
数值类型
| 类型 | 范围/说明 | 用途 |
|---|---|---|
| TINYINT | -128~127 / 0~255 | 布尔、小枚举 |
| INT | 约 ±21 亿 | 自增主键、计数 |
| BIGINT | 约 ±9e18 | 超大计数、雪花 ID |
| DECIMAL(10,2) | 精确小数 | 金额(绝不用 FLOAT!) |
字符串类型
| 类型 | 特点 | 用途 |
|---|---|---|
| CHAR(n) | 定长,不足补空格 | 手机号、MD5、状态码 |
| VARCHAR(n) | 变长,按需存 | 用户名、标题 |
| TEXT | 长文本 | 正文、备注 |
日期时间
SQL
DATE -- 2026-01-15 仅日期
TIME -- 14:30:00 仅时间
DATETIME -- 2026-01-15 14:30:00 日期+时间
TIMESTAMP -- 同 DATETIME,但受时区影响、范围更小Always use DECIMAL for money, never FLOAT/DOUBLE — floating point is imprecise (
0.1 + 0.2 <> 0.3). TIMESTAMP ends in 2038; use DATETIME for far-future dates.数值类型
| 类型 | 范围/说明 | 用途 |
|---|---|---|
| TINYINT | -128~127 / 0~255 | 布尔、小枚举 |
| INT | 约 ±21 亿 | 自增主键、计数 |
| BIGINT | 约 ±9e18 | 超大计数、雪花 ID |
| DECIMAL(10,2) | 精确小数 | 金额(绝不用 FLOAT!) |
字符串类型
| 类型 | 特点 | 用途 |
|---|---|---|
| CHAR(n) | 定长,不足补空格 | 手机号、MD5、状态码 |
| VARCHAR(n) | 变长,按需存 | 用户名、标题 |
| TEXT | 长文本 | 正文、备注 |
日期时间
SQL
DATE -- 2026-01-15 仅日期
TIME -- 14:30:00 仅时间
DATETIME -- 2026-01-15 14:30:00 日期+时间
TIMESTAMP -- 同 DATETIME,但受时区影响、范围更小金额永远用 DECIMAL,不要用 FLOAT / DOUBLE——浮点有精度误差,
0.1 + 0.2 <> 0.3。TIMESTAMP 范围只到 2038 年,存远期时间请用 DATETIME。