Skip to content

Latest commit

 

History

History
123 lines (85 loc) · 2.63 KB

File metadata and controls

123 lines (85 loc) · 2.63 KB

整数类型

整数类型用于保存没有小数部分的数值,例如年龄、数量、状态码、编号等。MySQL 提供了多种整数类型,主要区别在于占用空间和可表示的数值范围。

常见整数类型如下:

  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • INT
  • BIGINT

通常遵循一个简单原则:能满足业务范围即可,不要盲目使用更大的类型。

TINYINT类型

TINYINT 占用 1 个字节,适合保存范围较小的整数。

常见场景:

  • 性别
  • 布尔状态
  • 很小范围的枚举值

示例:

CREATE TABLE user_status (
  id int NOT NULL AUTO_INCREMENT,
  status tinyint NOT NULL DEFAULT 0 COMMENT '0禁用,1启用',
  PRIMARY KEY (id)
);

如果字段永远不会出现负数,可以配合 UNSIGNED 使用,获得更大的正数范围。

SMALLINT类型

SMALLINT 占用 2 个字节,适合保存范围中等偏小的整数。

常见场景:

  • 年份编号
  • 库存数量较小的商品
  • 区域编号、分类编号

示例:

CREATE TABLE course (
  id int NOT NULL AUTO_INCREMENT,
  course_no smallint unsigned NOT NULL,
  PRIMARY KEY (id)
);

MEDIUMINT类型

MEDIUMINT 占用 3 个字节,介于 SMALLINTINT 之间。

它在很多业务里不如 INT 常见,但在一些对存储空间敏感、同时数据量又超过 SMALLINT 范围的场景里仍然有价值。

示例:

CREATE TABLE city_stat (
  id int NOT NULL AUTO_INCREMENT,
  population mediumint unsigned NOT NULL DEFAULT 0,
  PRIMARY KEY (id)
);

INT类型

INT 是最常用的整数类型,占用 4 个字节,适合绝大多数业务编号和计数字段。

常见场景:

  • 用户 ID
  • 订单 ID
  • 浏览次数
  • 商品数量

示例:

CREATE TABLE article (
  id int unsigned NOT NULL AUTO_INCREMENT,
  title varchar(100) NOT NULL,
  view_count int unsigned NOT NULL DEFAULT 0,
  PRIMARY KEY (id)
);

如果不确定用哪种整数类型,INT 通常是最稳妥的默认选择。

BIGINT类型

BIGINT 占用 8 个字节,适合非常大的整数范围。

常见场景:

  • 超大规模主键 ID
  • 雪花算法 ID
  • 金额分单位后的超大整数存储
  • 高并发日志流水号

示例:

CREATE TABLE order_log (
  id bigint unsigned NOT NULL AUTO_INCREMENT,
  order_no bigint unsigned NOT NULL,
  PRIMARY KEY (id)
);

当数据量可能达到数十亿级时,主键通常会优先考虑 BIGINT

小结

整数类型的核心差别在于“范围”和“空间”。范围够用即可,过大只会浪费存储;过小则可能溢出。业务里最常见的是 TINYINTINTBIGINT