別在細節上栽跟頭--mysql字段類型詳解 mysql字段類型intvarchartext 也許你平時不在意,在設計數據庫的時候,數字就設成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 個字節 比較:不區分大小寫