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

如何根據(jù)電路需求選擇合適村田電感型號(hào)?
如何選擇合適的PLD型號(hào)
如何選擇合適的量水堰計(jì)型號(hào)與規(guī)格

適用于MySQL的ODBC驅(qū)動(dòng)程序:可與多個(gè)第三方工具兼容的數(shù)據(jù)連接器
MySQL數(shù)據(jù)庫的安裝

請(qǐng)問ADS1299使用Test Signals ,獲取到的數(shù)據(jù)類型是什么?
選擇數(shù)據(jù)采集器時(shí)需要考慮的因素
西門子博途新數(shù)據(jù)類型之:SINT(8位整數(shù))

AIC23采集到的數(shù)據(jù)是應(yīng)該用什么數(shù)據(jù)類型來接收?int還是unsigned int?
labview數(shù)據(jù)類型的取值范圍是多少
常見的遙感數(shù)據(jù)類型有哪些
技術(shù)干貨驛站 ▏深入理解C語言:基本數(shù)據(jù)類型和變量

評(píng)論