国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL數據類別DECIMAL用法

2024-07-24 12:32:44
字體:
來源:轉載
供稿:網友
         當我們需要存儲小數,并且有精度要求,比如存儲金額時,通常會考慮使用DECIMAL字段類型,可能大部分同學只是對DECIMAL類型略有了解,其中的細節還不甚清楚,本篇文章將從零開始,為你講述DECIMAL字段類型的使用場景及方法。
 
1.DECIMAL類型簡介
      DECIMAL從MySQL 5.1引入,列的聲明語法是DECIMAL(M,D)。NUMERIC與DECIMAL同義,如果字段類型定義為NUMERIC,則將自動轉成DECIMAL。
 
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_tb/G
*************************** 1. row ***************************
       Table: decimal_tb
Create Table: CREATE TABLE `decimal_tb` (
  `col1` decimal(10,0) DEFAULT NULL,
  `col2` decimal(5,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 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 1
 
mysql> 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不大于M
mysql> alter table decimal_tb add column col3 decimal(6,6);
Query OK, 0 rows affected (0.12 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
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類型并且根據業務需要選擇合適的精度,這樣我們的工作將很容易開展下去。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云林县| 太谷县| 榆林市| 虞城县| 博客| 开远市| 如东县| 山东省| 灌云县| 磴口县| 元氏县| 青海省| 沅陵县| 穆棱市| 黄大仙区| 闵行区| 简阳市| 黄浦区| 双流县| 安西县| 普陀区| 苍梧县| 河曲县| 永吉县| 宜丰县| 浦东新区| 东阳市| 进贤县| 辉县市| 桐柏县| 来凤县| 湖南省| 通河县| 虎林市| 江华| 红河县| 庆元县| 双峰县| 尼木县| 浦江县| 襄城县|