一、整數類型:5種
包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT
須要考慮存儲空間和數據可靠性平衡的問題
sql
二、浮點數和定點數類型
浮點數類型包括FLOAT、DOUBLE、REAL,不精確;spa
SET sql_mode = 「REAL_AS_FLOAT」;
其中FLOAT佔用字節數少,取值範圍小,DOUBLE佔用字節多,取值範圍大;
code
定點數類型(DECIMAL),是精確的數據類型
1.它是把十進制數的整數部分和小數部分拆開,分別轉換成十六進制數,進行存儲。這樣,全部的數值,就均可以精準表達了,不會存在由於沒法表達而損失精度的問題。
2.MySQL 用 DECIMAL(M,D)的方式表示高精度小數。其中,M 表示整數部分加小數部分,一共有多少位,M<=65。D 表示小數部分位數,D對象
簡單小結浮點數和定點數的特色:浮點類型取值範圍大,可是不精準,適用於須要取值範圍大,又能夠容忍微小偏差的科學計算場景(好比計算化學、分子建模、流體動力學等);定點數類型取值範圍相對小,可是精準,沒有偏差,適合於對精度要求極高的場景(好比涉及金額計算的場景)。blog
三、文本類型
包括TEXT、CHAR、VARCHAR、ENUM、SET,區別以下:字符串
其中TEXT 類型也有 4 種,它們的區別就是最大長度不一樣:it
注意:
1.TEXT 也有一個問題:因爲實際存儲的長度不肯定,MySQL 不容許 TEXT 類型的字段作主鍵,遇到這種狀況,你只能採用 CHAR(M),或者 VARCHAR(M)。
2.在項目中,只要不是主鍵字段,就能夠按照數據可能的最大長度,選擇這幾種 TEXT 類型中的的一種,做爲存儲字符串的數據類型。class
四、日期與時間類型
包括:YEAR、TIME、DATE、DATETIME、TIMESTAMP,
1.用得最多的日期時間類型是 DATETIME,由於雖然DATETIME 類型佔用的存儲空間最多,可是它表達的時間最爲完整,取值範圍也最大。
效率
關於MySQL定義表字段類型時的建議:數據類型
不過,凡事都是有兩面的,可靠性好,並不意味着高效,好比,TEXT 雖然使用方便,可是效率不如 CHAR(M) 和 VARCHAR(M)。