在数据库(如 MySQL、PostgreSQL、Oracle 等)里,Column(列)类型的选择核心原则是:能准确表达数据含义 + 占用空间最小 + 便于查询和计算。下面按常见场景给你一个实用指南。
| 类型 | 适用场景 |
|---|---|
TINYINT |
状态、布尔(0/1)、小范围 |
SMALLINT |
数量少(如班级人数) |
INT |
用户ID、订单ID(默认首选) |
BIGINT |
超高并发ID、时间戳 |
✅ 原则:不确定就用 INT,超大量用 BIGINT
| 类型 | 说明 |
|---|---|
DECIMAL(10,2) |
金额(必须用它!) |
FLOAT |
不精确,科学计算 |
DOUBLE |
不精确,范围更大 |
⚠️ 钱永远用 DECIMAL,不要用 FLOAT
| 类型 | 使用场景 |
|---|---|
CHAR(n) |
固定长度(如手机号、MD5) |
VARCHAR(n) |
变长文本(名字、地址) |
TEXT |
长文本(文章、备注) |
✅ 建议:
VARCHAR(20)TEXT| 类型 | 场景 |
|---|---|
DATE |
生日、日期 |
TIME |
时间段 |
DATETIME |
创建时间(常用) |
TIMESTAMP |
自动更新时间 |
✅ 推荐:
DATETIMETIMESTAMPTINYINT(1) 或 BOOLEANBOOLEAN| 类型 | 场景 |
|---|---|
BLOB |
图片、文件(不推荐放数据库) |
| 存路径 | ✅ 更优方案 |
✅ 小比大好
✅ 精确比快好(金额)
✅ 简单比复杂好
✅ 能不加索引的列就别加
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(50),
age TINYINT,
money DECIMAL(10,2),
created_at DATETIME
);
如果你说的是 某一种数据库(MySQL / PG / ClickHouse) 或 某一张具体表,可以直接把结构发我,我帮你逐列优化。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。