数值类型

整数和小数各有好几种宽度,原则是够用就好:能用 INT 别上 BIGINT,金额绝不用 FLOAT。下面按占用空间和适用范围排张表,照着挑基本不会错。

数值类型要点

数值类型示例

						CREATE TABLE product (
						    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
						    stock SMALLINT UNSIGNED NOT NULL DEFAULT 0,
						    price DECIMAL(10,2) NOT NULL,
						    rating FLOAT
						);

数值类型对照

类型 占用空间 有符号范围 无符号范围 适用场景
TINYINT 1 字节 -128 到 127 0 到 255 状态标志、年龄
SMALLINT 2 字节 -32768 到 32767 0 到 65535 端口、数量
MEDIUMINT 3 字节 -8388608 到 8388607 0 到 16777215 中等计数
INT 4 字节 约正负 21 亿 0 到 42 亿 主键、计数
BIGINT 8 字节 极大整数 更大 订单号、海量 id
FLOAT 4 字节 单精度浮点 同左 一般小数
DOUBLE 8 字节 双精度浮点 同左 高精度小数
DECIMAL(M,D) M+2 字节 精确小数 精确小数 金额
避坑提醒:金额字段用 FLOAT 会丢精度,0.1 加 0.2 都不等于 0.3,财务系统一律 DECIMAL。
数值类型 · MySQL 数据类型 知识卡片
卡片 03 / 09 · MySQL 数据类型(1080×1440 速查卡片)

MySQL 数据类型知识点