MySQL DECIMAL數據類型用于在數據庫中存儲精确的數值。對于保持精确精度的列,我們通常使用DECIMAL數據類型,例如會計系統中的貨币數據。
要定義數據類型為DECIMAL的列,使用以下語法:
column_name DECIMAL(P,D);
在上面的語法中:
DECIMAL(P,D)表示該列最多可以存儲帶D位小數的P位數。小數列的實際範圍取決于精度和小數位數。
除了DECIMAL關鍵字外,還可以使用DEC、FIXED或NUMERIC,因為它們是DECIMAL的同義詞。
與INT數據類型一樣,DECIMAL類型也具有UNSIGNED和ZEROFILL屬性。如果我們使用UNSIGNED屬性,則定義為DECIMAL UNSIGNED的列将不接受負值。
在使用ZEROFILL的情況下,MySQL将顯示值填充0,直到列定義指定的顯示寬度。另外,如果對DECIMAL列使用ZEROFILL,MySQL會自動向列中添加UNSIGNED屬性。
下面的示例使用DECIMAL數據類型定義amount列。
amount DECIMAL(6,2);
在本例中,amount列可以存儲6位數字(2位小數);因此,amount列的範圍是從9999.99到-9999.99。
MySQL允許我們使用以下語法:
column_name DECIMAL(P);
這相當于:
column_name DECIMAL(P,0);
在本例中,列不包含小數部分或小數點。
此外,我們甚至可以使用以下語法。
column_name DECIMAL;
在這種情況下,P的默認值是10。
DECIMAL存儲MySQL分别為整數部分和小數部分分配存儲空間。MySQL使用二進制格式存儲十進制值。它把9個數字壓縮成4個字節。
對于每個部分,存儲每9位數字需要4個字節。剩餘數字所需的存儲如下表所示:
剩下的數字 |
字節數 |
0 |
0 |
1–2 |
1 |
3–4 |
2 |
5–6 |
3 |
7–9 |
4 |
例如,DECIMAL(19,9)的小數部分為9位,整數部分為19-9=10位。小數部分需要4個字節。整數部分的前9位需要4個字節,剩餘的1位需要1個字節。DECIMAL(19,9)列總共需要9個字節。
DECIMAL數據類型示例首先,創建一個名為materials的新表,其中包含三列:id、description和cost。
CREATE TABLE materials (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(255),
cost DECIMAL(19 , 4 ) NOT NULL
);
第二,在materials表中插入數據。
INSERT INTO materials(description,cost)
VALUES('Bicycle', 500.34),('Seat',10.23),('Break',5.21);
第三,從materials表中查詢數據。
SELECT
*
FROM
materials;
第四,更改cost列以包含ZEROFILL屬性。
ALTER TABLE materials
MODIFY cost DECIMAL(19,4) zerofill;
再次查詢materials表。
SELECT
*
FROM
materials;
如您所見,我們在輸出值中填充了許多零。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!