天天看點

MySQL 中 bigint、int、mediumint、smallint、tinyint 有符号和無符号的取值範圍

想要了解取值範圍首先需要知道的是 bit 和 Byte 的概念

二進制數系統中,位通常簡寫為 "b",也稱為比特,每個二進制數字 0 或 1 就是一個位(bit)。位是表示資訊的最小機關,其中 8 bit 就稱為一個位元組(Byte)。

位元組(Byte)是用于計量存儲容量的一種計量機關,是計算機中表示存儲空間最基本的容量機關,位元組通常簡寫為 "B"。

資料存儲是以“位元組”(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

64

-263 ~ 263-1

0 ~ 2*263-1