更新時(shí)間:2021-01-20 17:06:41 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1302次
MySQL數(shù)據(jù)庫表中的每一列都必須具有名稱和數(shù)據(jù)類型。SQL開發(fā)人員必須在創(chuàng)建SQL表時(shí)決定表中的每個(gè)列將要存儲(chǔ)的數(shù)據(jù)的類型。數(shù)據(jù)類型是一個(gè)標(biāo)簽,是可用的SQL了解每個(gè)列的期望存儲(chǔ)什么類型的數(shù)據(jù)的指南,它也標(biāo)識了SQL如何與存儲(chǔ)的數(shù)據(jù)進(jìn)行交互。MySQL數(shù)據(jù)庫支持所有標(biāo)準(zhǔn)SQL數(shù)值數(shù)據(jù)類型,涉及到了常見的5種MySQL數(shù)據(jù)類型。
1、整數(shù)類型,
包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,分別表示1字節(jié)、2字節(jié)、3字節(jié)、4字節(jié)、8字節(jié)整數(shù)。任何整數(shù)類型都可以加上UNSIGNED屬性,表示數(shù)據(jù)是無符號的,即非負(fù)整數(shù)。
長度:整數(shù)類型可以被指定長度,例如:INT(11)表示長度為11的INT類型。長度在大多數(shù)場景是沒有意義的,它不會(huì)限制值的合法范圍,只會(huì)影響顯示字符的個(gè)數(shù),而且需要和UNSIGNED ZEROFILL屬性配合使用才有意義。
例子,假定類型設(shè)定為INT(5),屬性為UNSIGNED ZEROFILL,如果用戶插入的數(shù)據(jù)為12的話,那么數(shù)據(jù)庫實(shí)際存儲(chǔ)數(shù)據(jù)為00012。
包括FLOAT、DOUBLE、DECIMAL。
DECIMAL可以用于存儲(chǔ)比BIGINT還大的整型,能存儲(chǔ)精確的小數(shù)。
而FLOAT和DOUBLE是有取值范圍的,并支持使用標(biāo)準(zhǔn)的浮點(diǎn)進(jìn)行近似計(jì)算。
計(jì)算時(shí)FLOAT和DOUBLE相比DECIMAL效率更高一些,DECIMAL你可以理解成是用字符串進(jìn)行處理。
包括VARCHAR、CHAR、TEXT、BLOB
VARCHAR用于存儲(chǔ)可變長字符串,它比定長類型更節(jié)省空間。
VARCHAR使用額外1或2個(gè)字節(jié)存儲(chǔ)字符串長度。列長度小于255字節(jié)時(shí),使用1字節(jié)表示,否則使用2字節(jié)表示。
VARCHAR存儲(chǔ)的內(nèi)容超出設(shè)置的長度時(shí),內(nèi)容會(huì)被截?cái)唷?/p>
CHAR是定長的,根據(jù)定義的字符串長度分配足夠的空間。
CHAR會(huì)根據(jù)需要使用空格進(jìn)行填充方便比較。
CHAR適合存儲(chǔ)很短的字符串,或者所有值都接近同一個(gè)長度。
CHAR存儲(chǔ)的內(nèi)容超出設(shè)置的長度時(shí),內(nèi)容同樣會(huì)被截?cái)唷?/p>
使用策略:
對于經(jīng)常變更的數(shù)據(jù)來說,CHAR比VARCHAR更好,因?yàn)镃HAR不容易產(chǎn)生碎片。
對于非常短的列,CHAR比VARCHAR在存儲(chǔ)空間上更有效率。
使用時(shí)要注意只分配需要的空間,更長的列排序時(shí)會(huì)消耗更多內(nèi)存。
盡量避免使用TEXT/BLOB類型,查詢時(shí)會(huì)使用臨時(shí)表,導(dǎo)致嚴(yán)重的性能開銷。
把不重復(fù)的數(shù)據(jù)存儲(chǔ)為一個(gè)預(yù)定義的集合。
有時(shí)可以使用ENUM代替常用的字符串類型。
ENUM存儲(chǔ)非常緊湊,會(huì)把列表值壓縮到一個(gè)或兩個(gè)字節(jié)。
ENUM在內(nèi)部存儲(chǔ)時(shí),其實(shí)存的是整數(shù)。
盡量避免使用數(shù)字作為ENUM枚舉的常量,因?yàn)槿菀谆靵y。
排序是按照內(nèi)部存儲(chǔ)的整數(shù)
5、日期和時(shí)間類型,盡量使用timestamp,空間效率高于datetime,
用整數(shù)保存時(shí)間戳通常不方便處理。
如果需要存儲(chǔ)微妙,可以使用bigint存儲(chǔ)。
看到這里,這道真題是不是就比較容易回答了。
跟其它形式的數(shù)據(jù)類型相似,5種mysql數(shù)據(jù)類型也是比較常見的數(shù)據(jù)類型,整數(shù)類型,實(shí)數(shù)類型,字符串類型,枚舉類型,日期和時(shí)間類型5種,像前三種都是我們耳熟能詳?shù)?。?dāng)然以上提到的5種數(shù)據(jù)類型是比較常見的,mysql數(shù)據(jù)類型還有很多,在本站的MySQL教程中,對每種數(shù)據(jù)類型都有詳細(xì)的實(shí)例論證,感興趣的小伙伴可以前去觀看學(xué)習(xí)。

初級 202925

初級 203221

初級 202629

初級 203743