MySQL的整數型別
型別 |
佔用的儲存空間(單位) |
無符號的取值範圍 |
有符合的取值範圍 |
定義 |
---|
TINYINT |
1 |
0 ~ 2⁸-1 |
-2⁷ ~ 2⁷-1 |
非常小的整數 |
SMALLINT |
2 |
0 ~ 2¹⁶-1 |
-2¹⁶ ~ 2¹⁶-1 |
小的整數 |
MEDIUMINT |
3 |
0 ~ 2²⁴-1 |
-2²⁴ ~ 2²⁴-1 |
中等整數 |
INT |
4 |
0 ~ 2³²-1 |
-2³² ~ 2³²-1 |
標準的整數 |
BIGINT |
8 |
0 ~ 2⁶⁴-1 |
-2⁶⁴ ~ 2⁶⁴-1 |
大整數 |
MySQL的浮點數型別
型別 |
佔用的儲存空間(單位) |
絕對值最小非0值 |
絕對值最大非0值 |
定義 |
---|
FLAOT |
4 |
±1.175494351E-38 |
±3.402823466E+38 |
單精度浮點數 |
DOUBLE |
8 |
±2.2250738585072014E-308 |
±1.7976931348623157E+308 |
雙精度浮點數 |
以單精度浮點數型別FLOAT型別為例,它的四個位元組的組成結構如下圖:
設定最大位數和小數位數
在定義浮點數型別時,還可以在FLOAT或者DOUBLE後面跟上兩個引數,如下
FLOAT(M, D)
DOUBLE(M, D)
- M表示該小數最多需要的十進位制的有效數字個數
- D表示該小數的小數點後的十進位制數字個數
型別 |
取值範圍 |
---|
FLOAT(4, 0) |
-9999 ~ 9999 |
FLOAT(4, 2) |
-99.96 ~ 99.99 |
FLOAT(4, 1) |
-999.9 ~ 999.9 |
FLOAT(5, 1) |
-9999.9 ~ 9999.9 |
FLOAT(6, 1) |
-99999.9 ~ 99999.9 |
- 在D相同的情況下,M越大,該型別的取值範圍越大;在M相同的情況下,D越大,該型別的取值範圍越小。
- M的取值範圍是1~255,D的取值範圍是0~30,而且D的值必須不大於M。M和D都是可選的,如果我們省略了它們,那它們的值按照機器支援的最大值來儲存。
MySQL的定點數型別
- 因為用浮點數表示小數可能會有不精確的情況,在一些情況下我們必須保證小數是精確的,所以MySQL提出一種稱之為定點數的資料型別,它也是儲存小數的一種方式。
型別 |
佔用的儲存空間(單位:位元組) |
取值範圍 |
---|
DECLMAL |
取決於M和D |
取決於M和D |
儲存空間
以DECLMAL(12, 4)為例
- 首先確定小數點左邊的整數最多需要儲存的十進位制位數是12位,小數點右邊的整數需要儲存的十進位制位數是4位,如圖所示:
- 從小數點位置出發,每個整數每隔9個十進位制位劃分為1組,效果就是這樣:
- 針對每個組中的十進位制數字,將其轉換為二進位制數字進行儲存,根據組中包含的十進位制數字位數不同,所需的儲存空間大小也不同,具體見下表:
組中包含的十進位制位數 |
佔用的儲存空間 單位(位元組) |
---|
1或2 |
1 |
3或4 |
2 |
5或6 |
3 |
7或8 |
4 |
- M的範圍是1 ~ 65,D的範圍是0 ~ 30,且D的值不能超過M。
本作品採用《CC 協議》,轉載必須註明作者和本文連結