MySQL 中 bigint、int、mediumint、smallint、tinyint 有符号和无符号的取值范围
想要了解取值范围首先需要知道的是 bit 和 Byte 的概念
bit :位
二进制数系统中,位通常简写为 "b",也称为比特,每个二进制数字 0 或 1 就是一个位(bit)。位是表示信息的最小单位,其中 8 bit 就称为一个字节(Byte)。
Byte :字节
字节(Byte)是用于计量存储容量的一种计量单位,是计算机中表示存储空间最基本的容量单位,字节通常简写为 "B"。
bit 与 Byte
数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个 0 或 1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。
取值范围
tinyint、smallint、mediumint、int、bigint 分别占用 1、2、3、4、8字节,使用 8、16、24、32、64 位存储空间。它们的有符号可以存储的值的范围从 -2N-1 到 2N-1-1,其中 N 是存储空间的位数。
无符号是设置了 unsigned 属性,表示不允许负值,这大致可以使正数的上限提高一倍。
类型 | 字节 | 位 | 有符号范围 | 无符号范围 |
tinyint | 1 | 8 | -128 ~ 127 | 0 ~ 255 |
smallint | 2 | 16 | -215 ~ 215-1 | 0 ~ 2*215-1 |
mediumint | 3 | 24 | -223 ~ 223-1 | 0 ~ 2*223-1 |
int | 4 | 32 | -231 ~ 231-1 | 0 ~ 2*231-1 |
bigint | 8 | 64 | -263 ~ 263-1 | 0 ~ 2*263-1 |