首页 > 编程笔记

MySQL整数类型(TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT)

数值型数据类型主要用来存储数字,MySQL 提供了多种数值数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,其所需要的存储空间也会越大。

MySQL 主要提供的整数类型有 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT。

整数类型的属性字段可以添加 AUTO_INCREMENT 自增约束条件。下表列出了 MySQL 中的整数类型。

表1:MySQL 中的整数类型
类型名称 说明 存储需求
TINYINT 很小的整数 1字节
SMALLINT 小的整数 2字节
MEDIUMINT 中等大小的整数 3字节
INT (INTEGER) 普通大小的整数 4字节
BIGINT 大整数 8字节

从表1中可以看到,不同类型整数存储所需的字节数是不同的,占用字节数最小的是 TINYINT 类型,占用字节最大的是 BIGINT 类型,相应的占用字节越多的类型所能表示的数值范围越大。

根据占用字节数可以求出每一种数据类型的取值范围,例如:
其他类型的整数的取值范围计算方法相同,如表2所示。

表2:不同整数类型的取值范围
数据类型 有符号 无符号
TINYINT -128~127 0~255
SMALLINT -32768~32767 0~65535
MEDIUMINT -8388608~8388607 0~16777215
INT (INTEGER) -2147483648~2147483647 0~4294967295
BIGINT -9223372036854775808~9223372036854775807 0~18446744073709551615

【示例】创建表 tmp1,其中字段 x、y、z、m、n 数据类型依次为 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,SQL 语句如下:
CREATE TABLE tmp1 ( x TINYINT, y SMALLINT, z MEDIUMINT, m INT, n BIGINT );
执行成功之后,使用 DESC 查看表结构,结果如下:
mysql> DESC tmp1;
+-------+-----------+------+-----+---------+-------+
| Field | Type      | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| x     | tinyint   | YES  |     | NULL    |       |
| y     | smallint  | YES  |     | NULL    |       |
| z     | mediumint | YES  |     | NULL    |       |
| m     | int       | YES  |     | NULL    |       |
| n     | bigint    | YES  |     | NULL    |       |
+-------+-----------+------+-----+---------+-------+
不同的整数类型有不同的取值范围,并且需要不同的存储空间,因此应该根据实际需要选择最合适的类型,这样有利于提高查询的效率和节省存储空间。

推荐阅读