別在細節上栽跟頭------------mysql 字段類型詳解

也許你平時不在意,在設計數據庫的時候,數字就設成int(10) 字符串就設成varchar(20)或者text

普通情況下是沒有問題的,但是若不理解字段類型和長度的含義,總有一天你會在這裏栽跟頭,

這篇文章,我將主要就int(以及int的擴展類型,如bigint等),varchar,text三種字段類型,一一詳解

首先來算筆賬

1字節(Byte)=8比特(bit),

就是說1字節能存儲的數據量是2^8即2進制位爲8位

如果是整形不包括負數那麼範圍應該是

00000000~11111111(2進制數)

換成10進制數就應該是0~255,如果有負數的話就是-128~127

int

從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型數據(所有數字)。存儲大小爲 4 個字節。int 的 SQL-92 同義字爲 integer。

bigint


從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數據(所有數字)。存儲大小爲 8 個字節。

smallint

從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型數據。存儲大小爲 2 個字節。

tinyint

從 0 到 255 的整型數據。存儲大小爲 1 字節。

FLOAT [(M, D)]
說明:小浮點數;單精度(精度小於D O U B L E) 允許的屬性:Z E R O F I L L
取值範圍:最小非零值爲±1.75494351E -38; 最大非零值爲±3 . 4 0 2 8 2 3 4 6 6 E + 3 8
缺省值:如果列可爲NULL,則爲NULL;如果列爲NOT NULL,則爲0 存儲需求:4 字節

 DOUBLE[(M, D)]
說明:大浮點數;雙精度(比FLOAT更精確) 允許的屬性:Z E R O F I L L
取值範圍:最小非零值爲±2 . 2 2 5 07 3 8 5 8 5 07 2 0 14 E -308; 最大非零值爲±1。7 9 7 6 9 3 13 -4 8 6 2 3 15 7 E + 3 0 8
缺省值:如果列可爲NULL,則爲NULL;如果列爲NOT NULL,則爲0 存儲需求:8 字

字符串類型

一個字符所需的存儲空間是1bit

 VARCHAR(M)
說明:0 到M 字節長的可變長字符串。M 應該爲1到255 之間的一個整數,或者自MySQL3.23 後爲0 到255 之間的一個整數。存儲時後跟的空格被去掉。存儲時,大於M 個字符的串剪斷爲M 個字符。 允許的屬性:B I N A RY 允許的長度:0 到M 字節
缺省值:如果列可爲NULL,則爲NULL;如果列爲NOT NULL,則爲“” 存儲需求:值的長度,加上1字節用來記錄長度
比較:不區分大小寫(如果具有B I N A RY 屬性,則區分大小寫)

TEXT
說明:常規大小的TEXT 值
允許的屬性:除通用屬性外無其他屬性
允許的長度:0 到6 5 5 3 5(0 到216-1)字節
缺省值:如果列可爲NULL,則爲NULL;如果列爲NOT NULL,則爲“” 存儲需求:值的長度加上用於記錄長度的2 個字節 比較:不區分大小寫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章