mysql 数据类型 decimal_mysql decimal、numeric数据类型
可能做程序的人都知道,float類型是可以存浮點數(即小數類型),但是float有個壞處,當你給定的數據是整數的時候,那么它就以整數給你處理。這樣我們在存取貨幣值的時候自然遇到問題,我的default值為:0.00而實際存儲是0,同樣我存取貨幣為12.00,實際存儲是12.
幸好mysql提供了兩個數據類型:numeric和decimal,這兩種數據類型可以輕松解決上面的問題:
NUMERIC 和 DECIMAL 類型被 MySQL 以同樣的類型實現,這在 SQL92 標準中是允許的。他們用于保存對準確精度有重要要求的值,例如與金錢有關的數據。當以它們中的之一聲明一個列時,精度和數值范圍可以(通常是)被指定;例 如:
salary DECIMAL(5,2)
在這個例子中,5 (精度(precision)) 代表重要的十進制數字的數目,2 (數據范圍(scale)) 代表在小數點后的數字位數。在這種情況下,因此,salary 列可以存儲的值范圍是從 -99.99 到 99.99。(實際上 MySQL 在這個列中可以存儲的數值可以一直到 999.99,因為它沒有存儲正數的符號)。
譯者注:
M 與D 對DECIMAL(M, D) 取值范圍的影響
類型說明 取值范圍(MySQL < 3.23) 取值范圍(MySQL >= 3.23)
代碼
DECIMAL(4,1)-9.9到99.9-999.9到9999.9DECIMAL(5,1)-99.9到999.9-9999.9到99999.9DECIMAL(6,1)-999.9到9999.9-99999.9到999999.9DECIMAL(6,2)-99.99到999.99-9999.99到99999.99DECIMAL(6,3)-9.999到99.999-999.999到9999.999
# 在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范圍等于早期版本中的DECIMAL(M + 2, D) 的取值范圍。
還有一種數據類型也是比較棒的: 那就是LongBlob,這種數據類型可以直接把圖像文件存到數據庫中!
?
?
?
?
?
?
?
筆者,最近在研究mysql的decimal數據類型,現把數據實驗結果公布如下
數據庫版本:Server version: 5.0.45 Source distribution
1、創建表結構
createtableta?(afloat,bdecimal(10,5));
2、插入數據
insertintota?(a,b)values(1,12345.123423);
實際插入的b列數據為:12345.12342
insertintota?(a,b)values(1,123456.1234);
實際插入的b列數據為:99999.99999
結論:decimal數據類型,
1、當插入的整數部分的值超過了其表示范圍后就直接忽略了小數部分的值,并以最大值填充。
2、當整數部分合法,小數部分多余的位數,直接截斷。
二、numeric(M,D)
當看到numeric數字類型后,大部分都會看成了number,我也幾次都弄錯了。
numeric數字類型和decimal數字類型的一樣的
修改a列字段類型: alter table ta change a a numeric(10,5);
showcreatetableta;|ta|CREATETABLE`ta`?(
`a`decimal(10,5)defaultNULL,
`b`decimal(10,5)defaultNULL)?ENGINE=MyISAMDEFAULTCHARSET=utf8|
可見,在myslq5.0中,numeric和decimal數據類型是一致的,兩者的精度均準確為M位數字。
總結
以上是生活随笔為你收集整理的mysql 数据类型 decimal_mysql decimal、numeric数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sierra mysql_macOS H
- 下一篇: dubbo protocol port