MySQL中的數據類型詳解

值類型

mysql整數類型

類型 占用的儲存空間 (單位) 無符號的取值范圍 有符合的取值范圍 定義
TINYINT 1 0 ~ 2?-1 -2? ~ 2?-1 非常小的整數
SMALLINT 2 0 ~ 21?-1 -21? ~ 21?-1 小的整數
MEDIUMINT 3 0 ~ 22?-1 -22? ~ 22?-1 中等整數
INT 4 0 ~ 232-1 -232 ~ 232-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 類型為例,它的四個字節的組成結構如下圖:

MySQL中的數據類型詳解

設置最大位數和小數位數

在定義浮點數類型時,還可以在 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 位,如圖所示:

MySQL中的數據類型詳解

從小數點位置出發,每個整數每隔 9 個十進制位劃分為 1 組,效果就是這樣:

MySQL中的數據類型詳解

針對每個組中的十進制數字,將其轉換為二進制數字進行存儲,根據組中包含的十進制數字位數不同,所需的存儲空間大小也不同,具體見下表:

組中包含的十進制位數 占用的儲存空間 單位 (字節)
1 或 2 1
3 或 4 2
5 或 6 3
7 或 8 4

M 的范圍是 1 ~ 65,D 的范圍是 0 ~ 30,且 D 的值不能超過 M。

推薦教程:《MySQL教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享