在数据库设计中,“Column 列用什么类型好”没有统一答案,必须根据业务含义、数据范围、精度要求、查询方式来定。下面我按常见场景给你一个实用选型指南。
| 类型 | 范围 | 适用场景 |
|---|---|---|
| TINYINT | -128~127 | 状态、枚举(如 0/1) |
| SMALLINT | ±3万 | 小范围计数 |
| INT | ±21亿 | 用户ID、订单ID |
| BIGINT | 极大 | 分布式ID、时间戳 |
✅ 建议:
BIGINT(防溢出)TINYINT| 类型 | 说明 |
|---|---|
| DECIMAL(M,D) | 精确,适合金额 |
| FLOAT / DOUBLE | 近似,不适合钱 |
✅ 金额一律用 DECIMAL(18,2)
| 类型 | 场景 |
|---|---|
| CHAR(n) | 固定长度(如 MD5、性别) |
| VARCHAR(n) | 大多数文本 |
✅ 用户名/手机号:VARCHAR(64)
✅ 手机号:VARCHAR(20)(别用 INT)
| 类型 | 场景 |
|---|---|
| TEXT | 文章、备注 |
| JSON | 结构化扩展字段(MySQL 5.7+) |
| 类型 | 说明 |
|---|---|
| DATETIME | 年月日时分秒 |
| TIMESTAMP | 自动时区,范围小 |
| DATE | 只存日期 |
✅ 创建时间:
DATETIME DEFAULT CURRENT_TIMESTAMP
TINYINT(1)BOOLEAN| 场景 | 类型 |
|---|---|
| 自增ID | BIGINT |
| UUID | VARCHAR(36) |
| 雪花ID | BIGINT |
❌ 用 VARCHAR 存金额
❌ 用 INT 存手机号
❌ 用 FLOAT 算钱
❌ 所有字段都 VARCHAR(255)
能小不小,能定不定,钱用 decimal,时间用 datetime,ID 用 bigint
如果你愿意,可以告诉我:
我可以直接帮你设计表结构。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。