如何選擇數(shù)據(jù)類型
1.整數(shù)類型和浮點(diǎn)數(shù)類型
整數(shù)類型不能表示小數(shù),浮點(diǎn)數(shù)類型可以。TINYINT類型的取值范圍為0~255,BIGINT類型的取值范圍最大,最常用的整數(shù)類型是INT
浮點(diǎn)數(shù)類型包括FLOAT類型和DOUBLE類型。DOUBLE類型的精度比FLOAT類型高。如果需要精確到小數(shù)點(diǎn)后10位以上,應(yīng)該選擇DOUBLE類型。
2.浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型
當(dāng)插入值精度高于實(shí)際定義的精度時(shí),對(duì)于浮點(diǎn)數(shù),系統(tǒng)會(huì)自動(dòng)四舍五入,且不會(huì)報(bào)警,定點(diǎn)數(shù),系統(tǒng)會(huì)自動(dòng)截?cái)?,且?huì)出現(xiàn)警告。
在未指定精度的情況下,浮點(diǎn)數(shù)和定點(diǎn)有其默認(rèn)精度。FLOAT和DOUBLE型默認(rèn)會(huì)保存實(shí)際精度,這個(gè)精度與操作系統(tǒng)和硬件的精度有關(guān)。DECIMAL型默認(rèn)整數(shù)位為10,小數(shù)位為0,即默認(rèn)為整數(shù)。
在MySQL中,定點(diǎn)數(shù)精度比浮點(diǎn)數(shù)要高。而且,浮點(diǎn)數(shù)會(huì)出現(xiàn)誤差。如果對(duì)數(shù)據(jù)精度要求較高,應(yīng)選擇定點(diǎn)數(shù)。
3.CHAR和VARCHAR型
CHAR類型的長(zhǎng)度是固定的,而VARCHAR類型長(zhǎng)度在范圍內(nèi)可變。因此,VARCHAR類型占用的空間比CHAR類型小。而且,VARCHAR類型比CHAR類型靈活。對(duì)于長(zhǎng)度變化比較大的字符串類型,最好選擇VARCHAR類型。
但是,CHAR類型的處理速度比VARCHAR快,因此,對(duì)于長(zhǎng)度變化不大和查詢速度要求較高的字符串類型,最好選擇CHAR類型。
4.時(shí)間和日期類型
如果需要記錄日期和時(shí)間,可以選擇DATETIME類型和TIMESTAMP類型。DATETIME類型表示的時(shí)間范圍比TIMESTAMP類型大。因此,若需要時(shí)間范圍比較大,選擇DATATIME類型合適。TIMESTAMP類型的時(shí)間是根據(jù)時(shí)區(qū)來顯示的,如果需要顯示的時(shí)間與時(shí)區(qū)對(duì)應(yīng),應(yīng)該選擇TIMESTAMP類型。
5.ENUM類型和SET類型
ENUM類型最多有65535個(gè)成員,而SET類型最多包含64個(gè)成員。ENUM類型只能從成員中選擇一個(gè),而SET類型可以選擇多個(gè)(max64個(gè))。
因此,對(duì)于多個(gè)值選一個(gè)的,可以選擇ENUM類型,如:“性別”字段就可以定義成ENUM類型,因?yàn)橹挥小澳小?、“女”。?duì)于可以選取多個(gè)值的字段,可以選擇SET類型。如:“愛好”,因?yàn)榭赡苡卸喾N愛好。
6.TEXT類型和BLOB類型
TEXT類型只能存儲(chǔ)字符數(shù)據(jù)。而BLOB類型可以存儲(chǔ)二進(jìn)制數(shù)據(jù)。如果要存儲(chǔ)文章等純文本數(shù)據(jù),應(yīng)該選擇TEXT類型。如果需要存儲(chǔ)圖片等二進(jìn)制數(shù)據(jù),應(yīng)該選擇BLOB類型。
常見問題及解答
1.MySQL中什么數(shù)據(jù)類型可以存儲(chǔ)路徑?
CHAR、VARCHAR、TEXT等字符串類型均可,但如果路徑中使用 “\” 符號(hào),會(huì)被過濾,解決辦法:在路徑中用 “/” 或 “\\” 代替 “\” ? 。
2.MySQL中如何使用布爾類型?
在SQL標(biāo)準(zhǔn)中,存在BOOL和BOOLEAN類型。MySQL為了支持SQL標(biāo)準(zhǔn),也可以定義BOOL和BOOLEAN類型。但是,BOOL和BOOLEAN類型最后轉(zhuǎn)換成的是TINYINT(1)。在MySQL中,布爾類型等價(jià)于TINYINT(1)。
3.如果文章中同時(shí)存在文本和圖片,應(yīng)選擇哪種數(shù)據(jù)類型?
最好將圖片的url地址存在數(shù)據(jù)庫(kù)中,這樣就是純文本格式了,當(dāng)然,也可以選擇BLOB類型,但這樣查詢效率會(huì)很慢!
上個(gè)圖吧,喜歡玩螞蟻森林和螞蟻莊園

