在使用MySQL創(chuàng)建數(shù)據(jù)表時,經(jīng)常會遇到如何為字段選擇合適的數(shù)據(jù)類型的問題,接下來我們一起分析字符串、數(shù)值、日期數(shù)據(jù)類型的選擇。
1、CHAR與VARCHAR
CHAR和VARCHAR類型,都用來存儲字符串,但它們被存儲和檢索的方式不同。它們的最大長度以及是否保留尾部空格也不同。CHAR屬于固定長度的字符類型,而VARCHAR屬于可變長度的字符類型。
下表將各種字符串值存儲到 CHAR(4)和VARCHAR(4) 列后的結(jié)果,從而說明了CHAR和VARCHAR之間的區(qū)別。并且在查詢數(shù)據(jù)時CHAR列會刪除尾部的空格。
CHAR與VARCHAR
建議:
在存儲定長字符時推薦使用CHAR,在存儲列是不定長時字符推薦使用合適長的VARCHAR。
在使用CHAR和VARCHAR時,后面跟的數(shù)字為滿足需要的最小值。
2、BLOB和TEXT類型
BLOB是一個二進(jìn)制大對象,TEXT是一個的文本大對象。BLOB和 TEXT分別包括TINYBLOB,BLOB, MEDIUMBLOB,LONGBLOB和TINYTEXT,TEXT, MEDIUMTEXT,LONGTEXT四種不同的類型。它們之間的區(qū)別主要是存儲文本長度和存儲字節(jié)個數(shù)的不同。
建議:
對于存在TEXT或BLOB列的表,查詢數(shù)據(jù)是應(yīng)避免查詢這些字段。
如果可以的話應(yīng)該把BLOB或TEXT列分離到單獨的表中,以提升數(shù)據(jù)處理性能。
3、定點類型與浮點類型
定點類型,DECIMAL類型的存儲精確的數(shù)值數(shù)據(jù)。當(dāng)對精確度要求很高時,例如金額數(shù)據(jù),應(yīng)使用定點類型。MySQL DECIMAL以二進(jìn)制格式存儲值。
浮點類型,F(xiàn)LOAT和DOUBLE類型代表近似值數(shù)據(jù)。FLOAT單精度需要四個字節(jié)存儲,DOUBLE雙精度需要八個字節(jié)存儲。
4、日期和時間數(shù)據(jù)類型
MySQL提供常用的日期和時間數(shù)據(jù)類型有 DATE, TIME, DATETIME, TIMESTAMP,和 YEAR。每個時間類型都有一個有效值范圍,以及一個“ 零 ”值。
從下表可以看出每種類型的“ 零 ”值的格式。
“零”值的格式
-
字符串
+關(guān)注
關(guān)注
1文章
577瀏覽量
20485 -
MySQL
+關(guān)注
關(guān)注
1文章
801瀏覽量
26441
發(fā)布評論請先 登錄
相關(guān)推薦
評論