国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

深入分析MySQL數據類型 DECIMAL

瀏覽:128日期:2023-10-12 07:07:26

前言:

當我們需要存儲小數,并且有精度要求,比如存儲金額時,通常會考慮使用DECIMAL字段類型,可能大部分同學只是對DECIMAL類型略有了解,其中的細節還不甚清楚,本篇文章將從零開始,為你講述DECIMAL字段類型的使用場景及方法。

1.DECIMAL類型簡介

DECIMAL從MySQL 5.1引入,列的聲明語法是DECIMAL(M,D)。NUMERIC與DECIMAL同義,如果字段類型定義為NUMERIC,則將自動轉成DECIMAL。

對于聲明語法DECIMAL(M,D),自變量的值范圍如下:

M是最大位數(精度),范圍是1到65。可不指定,默認值是10。 D是小數點右邊的位數(小數位)。范圍是0到30,并且不能大于M,可不指定,默認值是0。

例如字段 salary DECIMAL(5,2),能夠存儲具有五位數字和兩位小數的任何值,因此可以存儲在salary列中的值的范圍是從-999.99到999.99。

2.DECIMAL使用實戰

下面我們將創建測試表來驗證DECIMAL字段類型的使用:

# 創建具有DECIMAL字段的表 驗證decimal默認是decimal(10,0)mysql> create table decimal_tb (col1 decimal,col2 decimal(5,2));Query OK, 0 rows affected (0.04 sec)mysql> show create table decimal_tbG*************************** 1. row *************************** Table: decimal_tbCreate Table: CREATE TABLE `decimal_tb` ( `col1` decimal(10,0) DEFAULT NULL, `col2` decimal(5,2) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)# 插入數據測試# 結論:超出存儲范圍會報錯,小數位不足會自動補0,首位數字為0自動忽略,小數位超出會截斷 并按四舍五入處理。mysql> insert into decimal_tb (col1,col2) values (100,100);Query OK, 1 row affected (0.05 sec)mysql> insert into decimal_tb (col2) values (1.23);Query OK, 1 row affected (0.01 sec)mysql> insert into decimal_tb (col2) values (10.2);Query OK, 1 row affected (0.01 sec)mysql> insert into decimal_tb (col2) values (09.9);Query OK, 1 row affected (0.01 sec)mysql> select * from decimal_tb;+------+--------+| col1 | col2 |+------+--------+| 100 | 100.00 || NULL | 1.23 || NULL | 10.20 || NULL | 9.90 |+------+--------+4 rows in set (0.00 sec)mysql> insert into decimal_tb (col2) values (9999);ERROR 1264 (22003): Out of range value for column ’col2’ at row 1mysql> insert into decimal_tb (col2) values (12.233); Query OK, 1 row affected, 1 warning (0.01 sec)mysql> show warnings;+-------+------+-------------------------------------------+| Level | Code | Message |+-------+------+-------------------------------------------+| Note | 1265 | Data truncated for column ’col2’ at row 1 |+-------+------+-------------------------------------------+1 row in set (0.00 sec)mysql> insert into decimal_tb (col2) values (12.2300);Query OK, 1 row affected (0.01 sec)# 變量范圍測試# 結論:M范圍是1到65,D范圍是0到30,且D不大于Mmysql> alter table decimal_tb add column col3 decimal(6,6);Query OK, 0 rows affected (0.12 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> alter table decimal_tb add column col4 decimal(6,7); ERROR 1427 (42000): For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column ’col4’).mysql> alter table decimal_tb add column col4 decimal(65,2);Query OK, 0 rows affected (0.11 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> alter table decimal_tb add column col4 decimal(66,2);ERROR 1426 (42000): Too-big precision 66 specified for ’col4’. Maximum is 65.mysql> alter table decimal_tb add column col5 decimal(60,30); Query OK, 0 rows affected (0.13 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> alter table decimal_tb add column col6 decimal(60,31);ERROR 1425 (42000): Too big scale 31 specified for column ’col6’. Maximum is 30.

3.DECIMAL使用總結

上面的內容從實戰出發,介紹了DECIMAL類型的使用方法及注意事項,你可能也知道float、double這些浮點數類型,這兩個同樣可以存儲小數,但這里不過多介紹,只是提醒大家float、double類型無法確保精度,很容易產生誤差,特別是在求和計算的時候,所有當存儲小數,特別是涉及金額時推薦使用DECIMAL類型。這里總結下使用DECIMAL應該注意的事項:

DECIMAL(M,D)中,M范圍是1到65,D范圍是0到30。 M默認為10,D默認為0,D不大于M。 DECIMAL(5,2)可存儲范圍是從-999.99到999.99,超出存儲范圍會報錯。 存儲數值時,小數位不足會自動補0,首位數字為0自動忽略。 小數位超出會截斷,產生告警,并按四舍五入處理。 使用DECIMAL字段時,建議M,D參數手動指定,并按需分配。

總結:

本文比較簡單實用,通讀下來,你大概會明白DECIMAL字段的使用場景及注意事項,其實對于常見的字段類型,我們只需要了解其使用場景及注意事項即可,當我們建表時,能夠快速選出合適的字段類型才是我們的目的,比如當我們需要存儲小數時,能夠使用DECIMAL類型并且根據業務需要選擇合適的精度,這樣我們的工作將很容易開展下去。

以上就是深入分析MySQL數據類型 DECIMAL的詳細內容,更多關于MySQL數據類型 DECIMAL的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 欧美a级在线观看 | 碰碰碰人人澡人人爱摸 | 步兵精品手机在线观看 | 国产精品永久免费视频观看 | 国产亚洲女在线精品 | 成人免费观看一区二区 | 亚洲精品久久久午夜伊人 | 国产一级成人毛片 | 在线视频精品一区 | 亚洲线精品久久一区二区三区 | 国产日韩线路一线路二 | 欧美特黄一区二区三区 | 97国产精品视频观看一 | 国产高清晰在线播放 | 孕妇孕妇aaaaa级毛片视频 | 成人国产精品毛片 | 欧美成人精品大片免费流量 | 全国最大色成免费网站 | 色久在线 | 免费高清毛片在线播放视频 | 亚洲黄色在线播放 | 网禁呦萝资源网站在线观看 | 日韩欧美印度一级毛片 | 亚洲欧美人妖另类激情综合区 | 一级性片 | 在线观看人成网站深夜免费 | 99热久久精品免费精品 | 欧美国产高清 | 精品精品国产自在久久高清 | 碰碰久久| 俄罗斯aa毛片极品 | 色夜视频 | 国产高清自拍视频 | 高清一区二区 | 欧美巨乳在线 | 波多野结衣在线免费视频 | 欧美视频精品一区二区三区 | 国产大陆精品另类xxxx | 在线国产高清 | 一级片在线观看 | 日韩毛毛片 |