返回顶部
首页 > 资讯 > 数据库 >MySQL数据类型DECIMAL用法
  • 166
分享到

MySQL数据类型DECIMAL用法

2024-04-02 19:04:59 166人浏览 八月长安
摘要

前言:  当我们需要存储小数,并且有精度要求,比如存储金额时,通常会考虑使用DECIMAL字段类型,可能大部分同学只是对DECIMAL类型略有了解,其中的细节还不甚清楚,本篇文章将从零开始,为你讲述DECI

前言: 

当我们需要存储小数,并且有精度要求,比如存储金额时,通常会考虑使用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_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

mysql> 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: 0

mysql> 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: 0

mysql> 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类型并且根据业务需要选择合适的精度,这样我们的工作将很容易开展下去。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据类型DECIMAL用法

本文链接: https://lsjlt.com/news/46643.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL数据类型DECIMAL用法
    前言:  当我们需要存储小数,并且有精度要求,比如存储金额时,通常会考虑使用DECIMAL字段类型,可能大部分同学只是对DECIMAL类型略有了解,其中的细节还不甚清楚,本篇文章将从零开始,为你讲述DECI...
    99+
    2024-04-02
  • MySQL数据类型DECIMAL使用心得
    本篇文章给大家主要讲的是关于MySQL数据类型DECIMAL使用心得的内容,感兴趣的话就一起来看看这篇文章吧,相信看完MySQL数据类型DECIMAL使用心得对大家多少有点参考价值吧。1.DECIMAL类型...
    99+
    2024-04-02
  • MySQL数据库的数据类型decimal详解
    在MySQL数据库中,decimal数据类型用于存储精确的小数值。它比其他浮点类型(如float和double)更适合用于存储货币金...
    99+
    2023-09-14
    MySQL
  • 深入分析MySQL数据类型 DECIMAL
    前言: 当我们需要存储小数,并且有精度要求,比如存储金额时,通常会考虑使用DECIMAL字段类型,可能大部分同学只是对DECIMAL类型略有了解,其中的细节还不甚清楚,本篇文章将从零开始,为你讲述DECIMAL字段...
    99+
    2022-05-24
    MySQL 数据类型 MySQL 数据类型 DECIMAL
  • mysql中decimal是什么数据类型
    decimal 是 mysql 中用于存储定点小数的高精度数据类型。其特点包括:精度(由 (m, d) 指定)、范围、精度不丢失、存储空间。它常用于需要高精度货币计算的场景,如银行系统、...
    99+
    2024-04-26
    mysql
  • mysql数据库中Decimal类型怎么使用
    今天小编给大家分享一下mysql数据库中Decimal类型怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1 背景数字...
    99+
    2023-06-29
  • mysql decimal数据类型转换的实现
    最近在工作遇到数据库中存的数据类型是: decimal(14,4) 遇到的问题是: 当我使用python 读取到内存中时,总是带着 decimal字符, 再写入其它mysql表中时,数据类型为int型,导致数据入库...
    99+
    2022-05-24
    mysql decimal数据类型转换 MySQL数据类型DECIMAL
  • 详细解释MySQL中DECIMAL数据类型的使用
    MySQL定点数类型DECIMAL用法详解 在数据库中,经常需要处理精确的数值,例如货币金额或者科学计算等。为了保证计算准确性,MySQL提供了DECIMAL类型,用于存储精确的定点数...
    99+
    2024-02-24
    mysql 用法 decimal
  • 数据库中Decimal类型怎么使用
    数据库中的Decimal类型是一种精确的十进制数类型,用于存储需要保留小数位数的数值。在大多数数据库管理系统中,Decimal类型通...
    99+
    2023-08-14
    数据库 Decimal
  • MySQL中decimal类型用法的简单介绍
    MySQL中支持浮点数的类型有FLOAT、DOUBLE和DECIMAL类型,DECIMAL 类型不同于FLOAT和DOUBLE,DECIMAL 实际是以串存放的。DECIMAL 可能的最大取值范围与DOUB...
    99+
    2024-04-02
  • mysql中decimal数据类型小数位填充问题详解
    前言 在开发过程中,我们往往会用到decimal数据类型。因为decimal是MySQL中存在的精准数据类型。 MySQL中的数据类型有:float,double等非精准数据类型和decimal这种精准。 区别:fl...
    99+
    2022-05-24
    mysql decimal小数位填充 mysql 小数位填充
  • GO将mysql 中 decimal 数据类型映射到 protobuf的操作方法
    目录protobuf中 float与double1、如何在rpc中优雅取出dcemial类型2、在rpc中 proto我们定义如下2.1、proto - double2.2、proto - float3、在go-zero...
    99+
    2024-04-02
  • GO将mysql 中 decimal 数据类型映射到 protobuf的操作方法
    目录protobuf中 float与double1、如何在rpc中优雅取出dcemial类型2、在rpc中 proto我们定义如下2.1、proto - double2.2、prot...
    99+
    2024-04-02
  • SQL decimal类型的用法是什么
    SQL中的decimal类型用于存储精确的十进制数值。它可以指定数字的总位数和小数位数,以便在存储和计算过程中保持精确性。decim...
    99+
    2023-10-18
    SQL
  • mysql中decimal类型怎么赋值
    在MySQL中,Decimal类型可以使用以下语法进行赋值: CREATE TABLE table_name ( colum...
    99+
    2024-04-09
    mysql
  • mysql中decimal指的是什么类型
    这篇文章将为大家详细讲解有关mysql中decimal指的是什么类型,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。decimal是MySQL中存在的精准数据类型,语法格式...
    99+
    2024-04-02
  • mysql的decimal类型如何给长度
    MySQL的DECIMAL数据类型是用于存储精确的小数值的。在创建DECIMAL类型的列时,可以指定两个参数:精度(precisio...
    99+
    2024-04-09
    mysql
  • SQL中的real、float、decimal、numeric数据类型区别
    概述: 浮点数据类型包括real型、float型、decimal型和numeric型。浮点数据类型用于存储十进制小数。 在SQL Server 中浮点数值的数据采用上舍入(Round up)的方式进行存储,所谓上舍入也就是,要舍...
    99+
    2021-05-09
    SQL中的real float decimal numeric数据类型区别
  • PHP中怎么将Decimal类型转为整数类型
    PHP中,我们经常需要将一个Decimal类型转为整数类型,但是这并不像我们想象中的那么简单。因为Decimal类型刚刚好像浮点类型,因此会出现小数位取舍不精准的问题。本文将介绍如何在PHP中将Decimal类型转为整数类型。一、Decim...
    99+
    2023-05-14
    php
  • PHP中如何将Decimal类型转为整数类型
    今天小编给大家分享一下PHP中如何将Decimal类型转为整数类型的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、Deci...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作