以下是MySQL中TINYINT/INT/BIGINT的典型应用场景及实例说明:
一、TINYINT(1字节)
1.状态标识
-- 用户激活状态(0未激活/1已激活)
ALTER TABLE users ADD is_active TINYINT(1) DEFAULT 0;
适用于布尔值存储和状态码标记。
2.评分系统
-- 五星好评系统(1-5分)
ALTER TABLE product_reviews ADD rating TINYINT UNSIGNED CHECK (rating BETWEEN 1 AND 5);
适合小范围整数存储。
二、INT(4字节)
1.主键设计
-- 用户表主键(自增ID)
CREATE TABLE users (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY
);
满足大多数业务场景的ID需求。
2.计数器场景
-- 文章阅读量统计
ALTER TABLE articles ADD view_count INT UNSIGNED DEFAULT 0;
适合中等规模的计数场景。
三、BIGINT(8字节)
1.分布式ID
-- 订单表雪花ID
CREATE TABLE orders (id BIGINT UNSIGNED PRIMARY KEY COMMENT '雪花算法生成'
);
支持高并发分布式系统。
2.金融流水号
-- 交易流水记录
ALTER TABLE transactions ADD serial_no BIGINT UNSIGNED UNIQUE;
避免大数值溢出问题。
选择建议:
优先选择能满足需求的最小类型。
无符号类型可扩大正数范围。
主键字段需预留扩展空间。