可能做程式的人都知道,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.9
decimal(5
, 1) -
99.9
到 999.9
-9999.9
到 99999.9
decimal(6
, 1) -
999.9
到 9999.9
-99999.9
到 999999.9
decimal(6
, 2) -
99.99
到 999.99
-9999.99
到 99999.99
decimal(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、建立表結構
create
table
ta (a
float
,b decimal(10
,5));
2、插入資料
insert
into
ta (a,b)
values(1
,12345.123423);
實際插入的b列資料為:12345.12342
insert
into
ta (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);
show
create
table
ta;|
ta
|create
table
`ta` (
`a`
decimal(10
,5) default
null
,`b`
decimal(10
,5) default
null
) engine
=myisam
default
charset
=utf8 |
可見,在myslq5.0中,numeric和decimal資料型別是一致的,兩者的精度均準確為m位數字。
mysql tinlong MySQL資料型別詳解
引言 mysql中定義資料欄位的型別對你資料庫的優化是非常重要的。mysql支援多種型別,大致可以分為三類 數值 日期 時間和字串 字元 型別,如下腦圖所示 數值型別 型別大小範圍 有符號 範圍 無符號 用途 tinyint 1 位元組 128,127 0,255 小整數值 smallint 2 位...
資料讀取類
今天在聽講座的時候找到了乙個比較好的類,趕緊記下來 呼叫這個類也非常簡單,第一步是設定連線字串 connectionstrings clear add name pubsdata connectionstring data source sqlexpress attachdbfilename dat...
資料採集類
爬蟲,又稱蜘蛛,是從別的 抓取資源的一種方法,c net使用爬蟲的方法如下 protected string getpagehtml string url catch return pageinfo 按上述方法就可以在程式中獲取某url的頁面原始檔。但是有些 遮蔽了爬蟲,那就需要模擬瀏覽器獲取的方法...