可能做程序的人都知道,float类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数给你处理。这样我们在存取货币值的时候自然遇到问题,我的default值为:0.00而实际存储是0,同样我存取货币为12.00,实际存储是12.
幸好mysql提供了两个数据类型:numeric和decimal,这两种数据类型可以轻松解决上面的问题:
NUMERIC 和 DECIMAL 类型被 MySQL 以同样的类型实现,这在 SQL92 标准中是允许的。他们用于保存对准确精度有重要要求的值,例如与金钱有关的数据。当以它们中的之一声明一个列时,精度和数值范围可以(通常是)被指定;例 如:
salary DECIMAL(5,2)
在这个例子中,5 (精度(precision)) 代表重要的十进制数字的数目,2 (数据范围(scale)) 代表在小数点后的数字位数。在这种情况下,因此,salary 列可以存储的值范围是从 -99.99 到 99.99。(实际上 MySQL 在这个列中可以存储的数值可以一直到 999.99,因为它没有存储正数的符号)。
译者注:
M 与D 对DECIMAL(M, D) 取值范围的影响
类型说明 取值范围(MySQL < 3.23) 取值范围(MySQL >= 3.23)
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->DECIMAL(4, 1) -9.9 到 99.9 -999.9 到 9999.9
DECIMAL(5, 1) -99.9 到 999.9 -9999.9 到 99999.9
DECIMAL(6, 1) -999.9 到 9999.9 -99999.9 到 999999.9
DECIMAL(6, 2) -99.99 到 999.99 -9999.99 到 99999.99
DECIMAL(6, 3) -9.999 到 99.999 -999.999 到 9999.999
# 在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于早期版本中的DECIMAL(M + 2, D) 的取值范围。
还有一种数据类型也是比较棒的: 那就是LongBlob,这种数据类型可以直接把图像文件存到数据库中!
笔者,最近在研究mysql的decimal数据类型,现把数据实验结果公布如下
数据库版本:Server version: 5.0.45 Source distribution
1、创建表结构
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->create table ta (a float,b decimal(10,5));
2、插入数据
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->insert into ta (a,b) values(1,12345.123423);
实际插入的b列数据为:12345.12342
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->insert into ta (a,b) values(1,123456.1234);
实际插入的b列数据为:99999.99999
结论:decimal数据类型,
1、当插入的整数部分的值超过了其表示范围后就直接忽略了小数部分的值,并以最大值填充。
2、当整数部分合法,小数部分多余的位数,直接截断。
二、numeric(M,D)
当看到numeric数字类型后,大部分都会看成了number,我也几次都弄错了。
numeric数字类型和decimal数字类型的一样的
修改a列字段类型: alter table ta change a a numeric(10,5);
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->show create table ta;
| ta | CREATE TABLE `ta` (
`a` decimal(10,5) default NULL,
`b` decimal(10,5) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
可见,在myslq5.0中,numeric和decimal数据类型是一致的,两者的精度均准确为M位数字。
分享到:
相关推荐
Java 和 MySQL 数据类型之间的对比是理解数据库操作和应用程序开发中数据处理的关键。这两种语言的数据类型在功能和使用上都有所不同,尽管它们都用于存储和处理数据,但各自有着特定的适用场景和特点。 首先,Java...
MySQL 数据类型是数据库设计的基础,理解不同类型的作用和特性对于创建高效、精确的数据库至关重要。本文将详细介绍MySQL中的数据类型,主要包括数值类型、字符串类型和时间日期类型。 1、数值类型 MySQL 中的数值...
MySQL中数据类型的选择对于数据库设计至关重要,它直接关系到数据存储的有效性和查询的效率。MySQL支持多种数据类型,可以分为几大类:数值型、日期时间型、字符型以及其他数据类型等。 数值型数据类型主要包括:...
### MySQL 数据类型详解 在MySQL数据库中,合理选择数据类型对于优化存储空间、提高查询效率以及确保数据准确性具有重要作用。本文将围绕给定文件提供的信息,深入探讨MySQL中的各种数据类型,包括它们的特性、用途...
MySQL和Oracle是两个广泛使用的数据库系统,它们各自具有不同的数据类型来支持各种数据类型的存储。这里我们将深入探讨MySQL与Oracle数据类型之间的对应关系,以及它们在Java编程语言中的映射。 1. MySQL数据类型:...
在本文中,我们将深入探讨四个流行的数据库管理系统——MS-SQL、Oracle、MySQL和Informix各自支持的主要数据类型。 MS-SQL(Microsoft SQL Server)提供了多种数据类型,以满足各种数据存储需求: 1. **bit**:...
MySQL 数据类型是数据库管理系统中用来定义列属性的关键元素,它决定了可以存储在列中的数据种类。MySQL 支持多种数据类型,包括数值类型、字符串类型、日期和时间类型以及二进制类型。这些数据类型的选择直接影响到...
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。 BIT数据类型保存位字段...
NUMERIC与DECIMAL同义,如果字段类型定义为NUMERIC,则将自动转成DECIMAL。 对于声明语法DECIMAL(M,D),自变量的值范围如下: M是最大位数(精度),范围是1到65。可不指定,默认值是10。 D是小数点右边的位数
MySQL 和 Oracle 是两种广泛使用的数据库管理系统,它们各自有一套不同的数据类型。本篇文章将详细介绍 MySQL、Oracle 和 Java 之间对应的数据类型,并讨论其在实际应用中的用法。 1. **MySQL 数据类型** - `...
常见的字段类型有 NUMERIC 和 DECIMAL,这两个类型在 MySQL 中实现为同样的类型,并且在 SQL92 标准中受到支持。 NUMERIC 和 DECIMAL 类型被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。当...
- MySQL支持严格数据类型如integer、smallint、decimal和numeric,以及近似数值类型如float、real和double。 - 扩展类型包括tinyint、mediumint、bigint,分别用于存储不同长度的整数,bit类型则用于存储位数据。 ...
### MySQL 数据库字段数据类型详解 #### 整型数据类型 **Tinyint** - **描述**:Tinyint 是一种非常小的整数类型,支持有符号和无符号两种形式。 - **有符号范围**:-128 至 127。 - **无符号范围**:0 至 255。 ...
MySQL数据库系统支持多种数据类型,这些数据类型用于定义表中的列,以存储各种不同类型的值。以下是对MySQL基本数据类型的详细说明: 1. 数值类型: - TINYINT:占用1字节,可存储整数,有符号范围是-128到127,无...
MySQL 数据类型是数据库管理系统中非常基础且重要的概念,它们决定了数据在存储和处理时的格式。MySQL 提供了丰富的数据类型,以满足不同场景下的需求。在这个“mysql数据类型共2页.pdf.zip”压缩包中,很显然,我们...
本篇文章将详细比较主流数据库——Oracle、MySQL、DB2和MS SQL Server之间的数据类型差异。 1. **整数类型** - MySQL提供了多种整数类型,如tinyint、smallint、mediumint、int、integer、bigint,其中tinyint适合...
在设计和管理MySQL数据库时,了解其数据类型和建库策略至关重要。 首先,MySQL提供了多种数据类型,这些数据类型大致可以分为以下几类: 1. 整数类:包括TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和BIGINT。...
首先,MySQL支持多种数值数据类型,包括整数类型和浮点类型。整数类型包括TINYINT、SMALLINT、MEDIUMINT、INTEGER(INT)、BIGINT。这些类型在存储和范围上有所不同,如TINYINT占用1字节,适合存储小整数,而BIGINT...
MySQL 数据类型和建库策略是数据库设计中的关键环节,它直接影响到数据的存储效率和准确性。下面我们将深入探讨这些知识点。 首先,数字类型是数据库中常见的数据类型,分为整数类、小数类和数字类。整数类包括...
- **严格数据类型** 包括 INTEGER, SMALLINT, DECIMAL, 和 NUMERIC。 - **近似数值数据类型** 包括 FLOAT, REAL, 和 DOUBLE PRECISION。MySQL 中,REAL 相当于 FLOAT。 MySQL 特有的扩展包括: - **TINYINT**:...