MySQL資料型別中DECIMAL的作用和用法

2021-06-17 15:00:56 字數 1383 閱讀 6297

在mysql資料型別中,例如int,float,double,char,decimal等,它們都有各自的作用,下面我們就主要來介紹一下mysql資料型別中的decimal型別的作用和用法。

一般賦予浮點列的值被四捨五入到這個列所指定的十進位制數。如果在乙個float(8, 1)的列中儲存1. 2 3 4 5 6,則結果為1. 2。如果將相同的值存入float(8, 4) 的列中,則結果為1. 2 3 4 6。

這表示應該定義具有足夠位數的浮點列以便得到盡可能精確的值。如果想精確到千分之一,那就不要定義使該型別僅有兩位小數。

浮點值的這種處理在mysql3.23 中有例外,float(4) 和float(8) 的效能有所變化。這兩種型別現在為單精度( 4 位元組)和雙精度( 8 位元組)的型別,在其值按給出的形式存放(只受硬體的限制)這一點上說,這兩種型別是真浮點型別。

decimal 型別不同於float和decimal,其中decimal 實際是以串存放的。decimal 可能的最大取值範圍與double 一樣,但是其有效的取值範圍由m 和d 的值決定。如果改變m 而固定d,則其取值範圍將隨m 的變大而變大。表2 - 7的前三行說明了這一點。如果固定m 而改變d,則其取值範圍將隨d 的變大而變小(但精度增加)。表2 - 7的後三行說明了這一點。

給定的decimal 型別的取值範圍取決於mysql資料型別的版本。對於mysql3.23 以前的版本,decimal(m, d) 列的每個值占用m 位元組,而符號(如果需要)和小數點包括在m 位元組中。因此,型別為decimal(5, 2) 的列,其取值範圍為-9.99 到9 9 . 9 9,因為它們覆蓋了所有可能的5 個字元的值。

正如mysql3.23 一樣,decimal 值是根據ansi 規範進行處理的, ansi 規範規定decimal(m, d) 必須能夠表示m 位數字及d 位小數的任何值。

例如, decimal(5, 2) 必須能夠表示從-999.99 到999.99 的所有值。而且必須儲存符號和小數點,因此自mysql3.23以來decimal 值佔m + 2 個位元組。對於decimal(5, 2),「最長」的值(- 9 9 9 . 9 9)需要7個位元組。

在正取值範圍的一端,不需要正號,因此mysql資料型別利用它擴充了取值範圍,使其超過了ansi 所規範所要求的取值範圍。如decimal(5, 2) 的最大值為9 9 9 9 . 9 9,因為有7 個位元組可用。

簡而言之,在mysql3.23 及以後的版本中,decimal(m, d) 的取值範圍等於更早版本中的decimal(m + 2, d) 的取值範圍。在mysql資料型別的所有版本中,如果某個decimal 列的d 為0,則不儲存小數點。這樣做的結果是擴充了列的取值範圍,因為過去用來儲存小數點的位元組現在可用來存放其他數字了。

mysql資料型別用法 mysql資料型別和用法

歡迎進入linux社群論壇,與200萬技術人員互動交流 進入 mysql支援多種列型別 數值型別 日期 時間型別和字串 字元 型別。本章首先對這些列型別進行了概述,然後更加詳細地描述了各種列的型別,以及列型別儲存需求的總結。概述很簡單。關於具體列型別 歡迎進入linux社群論壇,與200萬技術人員互...

mysql 資料型別 真假 MySQL 資料型別

mysql基礎 資料型別 整型型別 根據所儲存的整數數值取值範圍不同,可分為以下五類 1 tinyint佔1個位元組 2 smallint佔2個位元組 3 mediumint 佔3個位元組 4 int佔4個位元組 5 bigint佔8個位元組 根據每種型別所佔的位元組數可確定其無符號整數和有符號整數...

mysql 郵箱 資料型別 mysql 資料型別

1 整型mysql資料型別含義 有符號 tinyint m 1個位元組 範圍 128 127 smallint m 2個位元組 範圍 32768 32767 mediumint m 3個位元組 範圍 8388608 8388607 int m 4個位元組 範圍 2147483648 21474836...