MySQL整数类型(TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT)
数值型数据类型主要用来存储数字,MySQL 提供了多种数值数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,其所需要的存储空间也会越大。
MySQL 主要提供的整数类型有 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT。
整数类型的属性字段可以添加 AUTO_INCREMENT 自增约束条件。下表列出了 MySQL 中的整数类型。
从表1中可以看到,不同类型整数存储所需的字节数是不同的,占用字节数最小的是 TINYINT 类型,占用字节最大的是 BIGINT 类型,相应的占用字节越多的类型所能表示的数值范围越大。
根据占用字节数可以求出每一种数据类型的取值范围,例如:
其他类型的整数的取值范围计算方法相同,如表2所示。
【示例】创建表 tmp1,其中字段 x、y、z、m、n 数据类型依次为 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,SQL 语句如下:
MySQL 主要提供的整数类型有 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT。
整数类型的属性字段可以添加 AUTO_INCREMENT 自增约束条件。下表列出了 MySQL 中的整数类型。
类型名称 | 说明 | 存储需求 |
---|---|---|
TINYINT | 很小的整数 | 1字节 |
SMALLINT | 小的整数 | 2字节 |
MEDIUMINT | 中等大小的整数 | 3字节 |
INT (INTEGER) | 普通大小的整数 | 4字节 |
BIGINT | 大整数 | 8字节 |
从表1中可以看到,不同类型整数存储所需的字节数是不同的,占用字节数最小的是 TINYINT 类型,占用字节最大的是 BIGINT 类型,相应的占用字节越多的类型所能表示的数值范围越大。
根据占用字节数可以求出每一种数据类型的取值范围,例如:
- TINYINT 需要1字节(8 bits)来存储,那么 TINYINT 无符号数的最大值为 28-1(255);
- TINYINT 有符号数的最大值为 27-1(127)。
其他类型的整数的取值范围计算方法相同,如表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 | | +-------+-----------+------+-----+---------+-------+不同的整数类型有不同的取值范围,并且需要不同的存储空间,因此应该根据实际需要选择最合适的类型,这样有利于提高查询的效率和节省存储空间。