最近使用mysql資料庫的時候遇到了多種數字的類型,主要有int,bigint,smallint和tinyint。其中比較迷惑的是int和smallint的差別。
使用整數數據的精確數字數據類型。
BIGINT
從-2^63 (-9223372036854775808) 到2^63-1 (9223372036854775807) 的整型數據(所有數字)。存儲大小為8 個字節。
PS bigint已經有長度了,在mysql建表中的length,只是用於顯示的位數
INT
從-2^31 (-2,147,483,648)到2^31 – 1 (2,147,483,647)的整型數據(所有數字)。存儲大小為4個字節。int 的SQL-92同義字為integer。
SMALLINT
從-2^15 (-32,768) 到2^15 – 1 (32,767) 的整型數據。存儲大小為2 個字節。
TINYINT
從0 到255 的整型數據。存儲大小為1 字節。
註釋
在支持整數值的地方支持bigint數據類型。但是,bigint用於某些特殊的情況,當整數值超過 int數據類型支持的範圍時,就可以採用bigint。在SQL Server中,int數據類型是主要的整數數據類型。
在數據類型優先次序表中,bigint位於smallmoney和int之間。
只有當參數表達式是bigint數據類型時,函數才返回bigint。SQL Server不會自動將其它整數數據類型(tinyint、smallint和 int)提升為bigint。
int(M) 在integer 數據類型中,M 表示最大顯示寬度。在int(M) 中,M 的值跟int(M) 所佔多少存儲空間並無任何關係。和數字位數也無關係int(3)、int(4)、int(8) 在磁盤上都是佔用4 btyes 的存儲空間。
Type | Storage | Minimum Value | Maximum Value |
---|---|---|---|
(Bytes) | (Signed/Unsigned) | (Signed/Unsigned) | |
TINYINT |
1 | -128 |
127 |
0 |
255 |
||
SMALLINT |
2 | -32768 |
32767 |
0 |
65535 |
||
MEDIUMINT |
3 | -8388608 |
8388607 |
0 |
16777215 |
||
INT |
4 | -2147483648 |
2147483647 |
0 |
4294967295 |
||
BIGINT |
8 | -9223372036854775808 |
9223372036854775807 |
0 |
18446744073709551615 |