mysqldecimal
資料型別用於在資料庫中儲存精確的數值。我們經常將decimal
資料型別用於保留準確精確度的列,例如會計系統中的貨幣資料。
要定義資料型別為decimal
的列,請使用以下語法:
? 1
column_name
decimal
(p,d);
在上面的語法中:
decimal(p,d)
表示列可以儲存d
位小數的p
位數。十進位制列的實際範圍取決於精度和刻度。
與int資料型別一樣,decimal
型別也具有unsigned
和zerofill
屬性。 如果使用unsigned
屬性,則decimal unsigned
的列將不接受負值。
如果使用zerofill
,mysql將把顯示值填充到0
以顯示由列定義指定的寬度。 另外,如果我們對decimal
列使用zero fill
,mysql將自動將unsigned
屬性新增到列。
以下示例使用decimal
資料型別定義的乙個叫作amount
的列。
? 1
amount
decimal
(6,2);
在此示例中,amount
列最多可以儲存6
位數字,小數字數為2
位; 因此,amount
列的範圍是從-9999.99
到9999.99
。
mysql允許使用以下語法:
? 1
column_name
decimal
(p);
這相當於:
? 1
column_name
decimal
(p,0);
在這種情況下,列不包含小數部分或小數點。
此外,我們甚至可以使用以下語法。
? 1
column_name
decimal
;
在這種情況下,p
的預設值為10
。
mysql分別為整數和小數部分分配儲存空間。 mysql使用二進位制格式儲存decimal
值。它將9
位數字包裝成4
個位元組。
對於每個部分,需要4
個位元組來儲存9
位數的每個倍數。剩餘數字所需的儲存如下表所示:
剩餘數字位0
01–2
13–4
25–6
37-94
例如,decimal(19,9)
對於小數部分具有9
位數字,對於整數部分具有19
位=10
位數字,小數部分需要4
個位元組。 整數部分對於前9
位數字需要4
個位元組,1
個剩餘位元組需要1
個位元組。decimal(19,9)
列總共需要9
個位元組。
經常使用decimal
資料型別的貨幣資料,如**,工資,賬戶餘額等。如果要設計乙個處理貨幣資料的資料庫,則可參考以下語法 -
? 1
amount
decimal
(19,2);
但是,如果您要遵守公認會計原則(gaap)規則,則貨幣欄必須至少包含4
位小數,以確保捨入值不超過$0.01
。 在這種情況下,應該定義具有4
位小數的列,如下所示:
? 1
amount
decimal
(19,4);
首先,建立乙個名為test_order
的新錶,其中包含三列:id
,description
和cost
。
? 1
2
3
4
5
create
table
test_order (
id
int
auto_increment
primary
key
,
description
varchar
(255),
cost
decimal
(19,4)
not
null
);
第二步,將資料插入test_order表。
? 1
2
insert
into
test_order(description,cost)
values
(
'bicycle'
, 500.34),(
'seat'
,10.23),(
'break'
,5.21);
第三步,從test_order表查詢資料。
? 1
select
*
from
test_order
第四步,更改cost
列以包含zerofill
屬性。
? 1
2
alter
table
test_order
modify
cost
decimal
(19,4) zerofill;
第五步,再次查詢test_order表。
? 1
select
*
from
test_order
如上所見,在輸出值中填充了許多零。
因為zerofill,當我們插入負值會報錯:
? 1
2
3
4
5
6
7
insert
into
test_order(description,cost)
values
(
'test'
, -100.11);
[sql]
insert
into
test_order(description,cost)
values
(
'test'
, -100.11)
[err] 1264 -
out
of
range value
for
column
'cost'
at
row 1
其它插入測試結論:
當數值在其取值範圍之內,小數字多了,則四捨五入後直接截斷多出的小數字。
若數值在其取值範圍之外,則直接報out of range value錯誤。
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...