MySQL數(shù)據(jù)類型中DECIMAL的用法實(shí)例詳解
MySQL數(shù)據(jù)類型中DECIMAL的用法實(shí)例詳解
在MySQL數(shù)據(jù)類型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它們都有各自的作用,下面我們就主要來(lái)介紹一下MySQL數(shù)據(jù)類型中的DECIMAL類型的作用和用法。
一般賦予浮點(diǎn)列的值被四舍五入到這個(gè)列所指定的十進(jìn)制數(shù)。如果在一個(gè)FLOAT(8, 1)的列中存儲(chǔ)1. 2 3 4 5 6,則結(jié)果為1. 2。如果將相同的值存入FLOAT(8, 4) 的列中,則結(jié)果為1. 2 3 4 6。
這表示應(yīng)該定義具有足夠位數(shù)的浮點(diǎn)列以便得到盡可能精確的值。如果想精確到千分之一,那就不要定義使該類型僅有兩位小數(shù)。
浮點(diǎn)值的這種處理在MySQL3.23 中有例外,F(xiàn)LOAT(4) 和FLOAT(8) 的性能有所變化。這兩種類型現(xiàn)在為單精度( 4 字節(jié))和雙精度( 8 字節(jié))的類型,在其值按給出的形式存放(只受硬件的限制)這一點(diǎn)上說(shuō),這兩種類型是真浮點(diǎn)類型。
DECIMAL 類型不同于FLOAT和DECIMAL,其中DECIMAL 實(shí)際是以串存放的。DECIMAL 可能的最大取值范圍與DOUBLE 一樣,但是其有效的取值范圍由M 和D 的值決定。如果改變M 而固定D,則其取值范圍將隨M 的變大而變大。表2 - 7的前三行說(shuō)明了這一點(diǎn)。如果固定M 而改變D,則其取值范圍將隨D 的變大而變?。ǖ仍黾樱?。表2 - 7的后三行說(shuō)明了這一點(diǎn)。
給定的DECIMAL 類型的取值范圍取決于MySQL數(shù)據(jù)類型的版本。對(duì)于MySQL3.23 以前的版本,DECIMAL(M, D) 列的每個(gè)值占用M 字節(jié),而符號(hào)(如果需要)和小數(shù)點(diǎn)包括在M 字節(jié)中。因此,類型為DECIMAL(5, 2) 的列,其取值范圍為-9.99 到9 9 . 9 9,因?yàn)樗鼈兏采w了所有可能的5 個(gè)字符的值。
正如MySQL3.23 一樣,DECIMAL 值是根據(jù)ANSI 規(guī)范進(jìn)行處理的, ANSI 規(guī)范規(guī)定DECIMAL(M, D) 必須能夠表示M 位數(shù)字及D 位小數(shù)的任何值。
例如, DECIMAL(5, 2) 必須能夠表示從-999.99 到999.99 的所有值。而且必須存儲(chǔ)符號(hào)和小數(shù)點(diǎn),因此自MySQL3.23以來(lái)DECIMAL 值占M + 2 個(gè)字節(jié)。對(duì)于DECIMAL(5, 2),“最長(zhǎng)”的值(- 9 9 9 . 9 9)需要7個(gè)字節(jié)。
在正取值范圍的一端,不需要正號(hào),因此MySQL數(shù)據(jù)類型利用它擴(kuò)充了取值范圍,使其超過(guò)了ANSI 所規(guī)范所要求的取值范圍。如DECIMAL(5, 2) 的最大值為9 9 9 9 . 9 9,因?yàn)橛? 個(gè)字節(jié)可用。
簡(jiǎn)而言之,在MySQL3.23 及以后的版本中,DECIMAL(M, D) 的取值范圍等于更早版本中的DECIMAL(M + 2, D) 的取值范圍。在MySQL數(shù)據(jù)類型的所有版本中,如果某個(gè)DECIMAL 列的D 為0,則不存儲(chǔ)小數(shù)點(diǎn)。這樣做的結(jié)果是擴(kuò)充了列的取值范圍,因?yàn)檫^(guò)去用來(lái)存儲(chǔ)小數(shù)點(diǎn)的字節(jié)現(xiàn)在可用來(lái)存放其他數(shù)字了。
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
mysql啟用skip-name-resolve模式時(shí)出現(xiàn)Warning的處理辦法
在優(yōu)化MYSQL配置時(shí),加入 skip-name-resolve ,在重新啟動(dòng)MYSQL時(shí)檢查啟動(dòng)日志,發(fā)現(xiàn)有警告信息2012-07-07MySQL中CURRENT_TIMESTAMP時(shí)間戳的使用詳解
這篇文章主要給大家介紹了關(guān)于MySQL中CURRENT_TIMESTAMP時(shí)間戳的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03Mysql存儲(chǔ)引擎MyISAM的常見(jiàn)問(wèn)題(表?yè)p壞、無(wú)法訪問(wèn)、磁盤空間不足)
這篇文章主要介紹了Mysql存儲(chǔ)引擎MyISAM的常見(jiàn)問(wèn)題,針對(duì)表?yè)p壞、無(wú)法訪問(wèn)、磁盤空間不足等問(wèn)題進(jìn)行解決,感興趣的小伙伴們可以參考一下2016-05-05MySQL數(shù)據(jù)庫(kù)輸入密碼后閃退問(wèn)題的解決方法
這篇文章主要為大家詳細(xì)介紹了MySQL數(shù)據(jù)庫(kù)輸入密碼后閃退的問(wèn)題及解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10mysql 讓一個(gè)存儲(chǔ)過(guò)程定時(shí)作業(yè)的代碼
以下例子主要是實(shí)現(xiàn)簡(jiǎn)單的mysq 定時(shí)作業(yè),需要的朋友可以參考下。2011-05-05詳解MySQL數(shù)據(jù)庫(kù)設(shè)置主從同步的方法
最近一直在研究mysql的主從同步問(wèn)題,現(xiàn)在網(wǎng)上也有很多資料,現(xiàn)在感覺(jué)寫(xiě)的都很好(當(dāng)初感覺(jué)寫(xiě)的很差,是因?yàn)樽约旱念I(lǐng)悟較差),于是想跟大家分享一下自己配置的整個(gè)過(guò)程和經(jīng)驗(yàn)。有需要的朋友歐美可以參考借鑒,感興趣的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11ubuntu?22.04安裝mysql?8.0步驟與避坑指南
MySQL最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在WEB應(yīng)用方面MySQL是最好的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)用軟件之一,這篇文章主要給大家介紹了關(guān)于ubuntu?22.04安裝mysql?8.0步驟與避坑指南的相關(guān)資料,需要的朋友可以參考下2023-12-12