mysql提供TINYint、SMALLINT、MEDIUMINT、INT和BIGINT五种整数类型,分别占用1至8字节存储空间,适用于不同范围的数值存储;应根据实际数据范围选择合适类型以节省空间并提升性能。

MySQL 中的整数类型用于存储没有小数部分的数值,适用于表示数量、ID、计数等场景。根据数据范围和是否需要有符号的不同,MySQL 提供了多种整数类型,合理选择可以节省存储空间并提高性能。
TINYINT
TINYINT 是最小的整数类型,占用 1 个字节(8 位)。
• 有符号范围:-128 到 127
• 无符号范围:0 到 255
适合存储状态标志、布尔值(常用 TINYINT(1) 表示布尔,虽然 MySQL 没有原生 Boolean 类型)等小范围数值。
SMALLINT
SMALLINT 占用 2 个字节(16 位)。
• 有符号范围:-32,768 到 32,767
• 无符号范围:0 到 65,535
可用于存储较小的数据集编号、年份(如 1900–2099)、或中等范围的计数器。
MEDIUMINT
MEDIUMINT 占用 3 个字节(24 位)。
• 有符号范围:-8,388,608 到 8,388,607
• 无符号范围:0 到 16,777,215
适合中等规模的数据量,比如中小型系统的用户 ID 或订单量。
INT(或 Integer)
INT 是最常用的整数类型,占用 4 个字节(32 位)。
• 有符号范围:-2,147,483,648 到 2,147,483,647
• 无符号范围:0 到 4,294,967,295
适用于大多数主键、计数器和一般整数字段。AUTO_INCREMENT 常配合 INT 使用。
BIGINT
BIGINT 占用 8 个字节(64 位),能存储非常大的整数。
• 有符号范围:-2^63 到 2^63 – 1
• 无符号范围:0 到 2^64 – 1
用于超大编号,如分布式系统中的唯一 ID(如雪花算法生成的 ID)、大额交易记录、高并发计数器等。
定义整数类型时可加显示宽度,如 INT(10),但这只是显示格式提示(常与 ZEROFILL 配合),不影响实际存储范围或精度。是否使用 UNSIGNED 可根据业务决定,比如 ID 通常设为无符号以扩大正数范围。
基本上就这些。选型时优先考虑数据实际范围,避免过度使用 BIGINT 浪费空间。整数类型性能高,是数据库设计中的基础支撑。不复杂但容易忽略细节。


