web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 好玩
  5. seo教程
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站

数据库decimal数据类型是什么意思?如何使用

556 ℃
           

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。

DECIMAL使用实战

下面我们将创建测试表来验证DECIMAL字段类型的使用:
# 创建具有DECIMAL字段的表 验证decimal默认是decimal(10,0)mysql> create table decimal_tb(col1 decimal,col2 decimal(5,2)); Query OK, 0rows affected(0.04sec) 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 1row inset(0.00sec) # 插入数据测试 # 结论:超出存储范围会报错,小数位不足会自动补0,首位数字为0自动忽略,小数位超出会截断 并按四舍五入处理。 mysql> insert intodecimal_tb(col1,col2) values(100,100); Query OK, 1row affected(0.05sec) mysql> insert intodecimal_tb(col2) values(1.23); Query OK, 1row affected(0.01sec) mysql> insert intodecimal_tb(col2) values(10.2); Query OK, 1row affected(0.01sec) mysql> insert intodecimal_tb(col2) values(09.9); Query OK, 1row affected(0.01sec) mysql> select* fromdecimal_tb; +——+——–+ | col1 | col2 | +——+——–+ | 100| 100.00| | NULL | 1.23| | NULL | 10.20| | NULL | 9.90| +——+——–+ 4rows inset(0.00sec) mysql> insert intodecimal_tb(col2) values(9999); ERROR 1264(22003): Out of range valueforcolumn ‘col2’at row 1mysql> insert intodecimal_tb(col2) values(12.233); Query OK, 1row affected, 1warning (0.01sec) mysql> show warnings; +——-+——+——————————————-+ | Level | Code | Message | +——-+——+——————————————-+ | Note | 1265| Data truncated forcolumn ‘col2’at row 1| +——-+——+——————————————-+ 1row inset(0.00sec) mysql> insert intodecimal_tb(col2) values(12.2300); Query OK, 1row affected(0.01sec) # 变量范围测试 # 结论:M范围是1到65,D范围是0到30,且D不大于M mysql> alter table decimal_tb addcolumn col3 decimal(6,6); Query OK, 0rows affected(0.12sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table decimal_tb addcolumn 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 addcolumn col4 decimal(65,2); Query OK, 0rows affected(0.11sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table decimal_tb addcolumn col4 decimal(66,2); ERROR 1426(42000): Too-big precision 66specified for’col4’. Maximum is65.mysql> alter table decimal_tb addcolumn col5 decimal(60,30); Query OK, 0rows affected(0.13sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table decimal_tb addcolumn col6 decimal(60,31); ERROR 1425(42000): Too big scale 31specified forcolumn ‘col6’. Maximum is30.

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参数手动指定,并按需分配。

一款免费开源的 JavaScript 数据库——PouchDB

oracle如何对数据库判断表是否存在并删除

nodejs如何配置mysql数据库

NoSQL数据库的特点(NoSQL简介)

MySQL应该如何建数据表?

标签: decimal数据类型, 数据库

上面是“数据库decimal数据类型是什么意思?如何使用”的全面内容,想了解更多关于 后端开发 内容,请继续关注web建站教程。

当前网址:https://ipkd.cn/webs_12018.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

当前位置: 网站首页 > 后端开发
本文共计2875个字,预计阅读时长20分钟
生活小工具,收录了80多款小工具
上一篇: 推荐一款免费开源的屏幕录制软件——OBS Studio
下一篇: 推荐一个高质量的图片素材网站——Unsplash
x 打工人ai神器