数值类型简介 (Overview of Numeric Types)(此文为转载)
2010-03-30 12:15
387 查看
M表示最大显示宽度(maximum display width),最大显示宽度的合法值不超过255。显示宽度与存储尺寸、取值范围无关,这在第11.2节"Numeric Types"中有说明。
如果您在数值型属性列中指定了
ZEROFILL属性,MySQL自动为此列添加
UNSIGNED属性。
SERIAL是
BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名。
整数属性列定义中的
SERIAL DEFAULT VALUE是
NOT NULL AUTO_INCREMENT UNIQUE的别名。
警告: 如果您在做减法运算时其中一个操作数是
UNSIGNED类型,那么结算结果也是无符号的
BIT[(M)]
位域类型。
M表示每个值的比特数,从1到64,缺省为1。
这个数据类型是为 MyISAM 加入到 MySQL 5.0.3 的,并在 5.0.5 扩展到了 MEMORY、InnoDB 和 BDB。在 5.0.3 之前,BIT
只是TINYINT(1) 的同义词。
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
非常小的整数。有符号型的范围从-128到127,无符号型的范围从0到255。
BOOL,
BOOLEAN
这些类型是 TINYINT(1) 的同义词,值为 0 就认为是 false,非 0 值认为是 true。
将来会引入完全的布尔类型处理和标准 SQL 保持一致。
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
小整数。有符号型的范围是-32768到32767,无符号型的范围是0到65535。
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
中型大小的整数。有符号型的范围是-8388608到8388607,无符号型的范围是0到16777215。
INT[(M)] [UNSIGNED] [ZEROFILL]
正常大小的整数,有符号型的范围是-2147483648到2147483647,无符号型的范围是0到4294967295。
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
这个类型是 INT 的同义词。
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
大整数,有符号型的范围是
-9223372036854775808到
9223372036854775807,无符号型的范围是
0到
18446744073709551615。
关于 BIGINT 属性列,以下事情你必须清楚:
所有算术都是用有符号的 BIGINT 或 DOUBLE 值做计算的,所以不要使用大于
9223372036854775807 (63位)的大整数,除非用在位运算函数中。否则,计算结果的最后几位数可能错误,因为从 BIGINT 向 DOUBLE 转化时会产生舍入误差。
MySQL 在以下情形中使用 BIGINT:
在 BIGINT 属性列中使用整数(而不是浮点数)来存储大的无符号值时。
在 MIN(col_name) 或 MAX(col_name) 函数中,col_name 引用了 BIGINT 属性列。
当使用运算符(+ - * 等等)时两个操作数都是整数。
通过存入一个字符串,总能够在 BIGINT 属性列中存入一个精确的整数值。这种情况下,MySQL 进行字符串向数字的转化,转化过程不会引入双精度中间表示。
- + * 运算符在两个操作数都是整数值时使用 BIGINT 做运算。这意味着当两个大整数相乘(或者从返回整型值的函数取得结果)时,如果结果大于
9223372036854775807 就可能会得到意想不到的后果。
FLOAT[()] [UNSIGNED] [ZEROFILL][/code]M,[code]D
小型(单精度)浮点数。允许值包括
-3.402823466E+38到
-1.175494351E-38,
0,以及
1.175494351E-38到
3.402823466E+38。这些都是理论极限,基于 IEEE 标准。真实范围可能要小一些,取决于硬件和操作系统。
M是总的小数位数,D 是小数点之后的位数。如果省略了 M 和 D,值将会按照硬件的允许的范围存储。单精度浮点数具有大约 7 位有效数字。
如果指定了 UNSIGNED,负数值将不被接受。
使用
FLOAT可能会造成意想不到的问题,因为在 MySQL 中所有的计算都是用双精度数完成。参看 A.5.7 节 "Solving Problems with No Matching Rows"。
DOUBLE[()] [UNSIGNED] [ZEROFILL][/code]M,[code]D
正常大小(双精度)浮点数。允许值包括
-1.7976931348623157E+308到
-2.2250738585072014E-308,0,和
2.2250738585072014E-308到
1.7976931348623157E+308。这些都是理论极限,基于 IEEE 标准。真实范围可能要小一些,取决于硬件和操作系统。
M是总的小数位数,D 是小数点之后的位数。如果省略了 M 和 D,值将会按照硬件的允许的范围存储。双精度浮点数具有大约 15 位有效数字。
如果指定了 UNSIGNED,负数值将不被接受。
DOUBLE PRECISION[()] [UNSIGNED] [ZEROFILL][/code],M,[code]D
REAL[()] [UNSIGNED] [ZEROFILL][/code]M,[code]D
这些类型是 DOUBLE 的同义词,但例外:如果启用了
REAL_AS_FLOAT SQL模式,REAL 将是FLOAT 的同义词而非 DOUBLE 的同义词。
FLOAT(p) [UNSIGNED] [ZEROFILL]
浮点数。p 代表精度(比特数),但在 MySQL 中 p 仅仅用来判定使用 FLOAT 还是 DOUBLE 来存储这个数据类型。如果 p 是从 0 到 24,那么数据类型就变成了不带 M 和 D 的 FLOAT 型;如果 p 是从 25 到 53,那么数据类型就变成了不带 M 和 D 的 DOUBLE 型。这个属性列的取值范围,相应地和本节前面描述的单精度 FLOAT 型、双精度 DOUBLE型一样。
提供
FLOAT(语法是为了 ODBC 的兼容性。p)
DECIMAL[(])] [UNSIGNED] [ZEROFILL][/code]M[,[code]D
MySQL 5.0.3 及向上版本:
包装了的”精确“的定点数。M 是总的小数位数(精度),D 是小数点之后的位数(规模)。小数点和负数的负号"-" 不计入 M。如果 D 是 0,就没有小数部分。M 的最大值是 65 (从 5.0.3 到 5.0.5 是 64),D 的最大值是 30。M 的缺省值是 10,D 的缺省值是 0。
如果指定了 UNSIGNED,负数值将不被接受。
DECIMAL属性列的所有基本计算 (
+, -, *, /) 都采用 65 位精度值。
在 MySQL 5.0.3 之前:
没有包装的定点数。它的行为就像 CHAR;“没有包装”的意思是这个数是当作一个字符串存储的,用一个字符代表值得一个十进制位。M 是总的小数位数,D 是小数点之后的位数。小数点和负数的负号"-" 不计入 M,尽管为它们保留了空间。如果 D 是 0,就没有小数部分。DECIMAL值的最大范围和 DOUBLE 相同,但给定一个DECIMAL属性列,它的实际范围可能会受到所选的 M 和 D 的限制。M 的缺省值是 10,D 的缺省值是 0。
如果指定了 UNSIGNED,负数值将不被接受。
DEC[(])] [UNSIGNED] [ZEROFILL][/code],M[,[code]D
NUMERIC[(])] [UNSIGNED] [ZEROFILL][/code],M[,[code]D
FIXED[(])] [UNSIGNED] [ZEROFILL][/code]M[,[code]D
这些类型是 DECIMAL 的同义词,其中 FIXED 类型是为了和其他数据库系统兼容。
相关文章推荐
- 第四章 类型 数值 变量 Chapter 4 - Types,Valuse,and Variables
- ([Oracle][ODBC]Numeric value out of range.)Biztalk项目中Oracle适配器,目标字段有date类型时报错
- An overview of table properties [转载]
- scala入门2(简介与基础语法2--数值类型)
- python基本数值类型简介
- Teradata Join类型(Types of Teradata Joins)
- Types of Layers (层的类型)
- (转载)mysql decimal、numeric数据类型
- 基于二进制程序的类型推导--TIE: Principled Reverse Engineering of Types in Binary Programs
- elasticsearch 6.0.0及之后移除了一个索引允许映射多个类型的操作(Removal of mapping types)
- python<一> python 简介及数值类型
- mysql numberic types ---- mysql 数值类型详解
- The target assembly contains no service types. You may need to adjust the Code Access Security policy of this assembly." 目标程序集不包含服务类型。可能需要调整此程序集的代码访问安全策略。
- 数值极限类 大笑一般来说,数值类型的极值是一个与平台相关的特性。c++标准程序库通过template numeric_limits提供这些极值,取代传统C语言所采用的预处numeric_limits
- 窗口类的类型(Types of Window Classes)
- XML简介Schema之 XSD 日期及时间数据类型 VS XSD 数值数据类型
- 【转载】A Brief Overview of Deep Learning
- 2大类型的设备驱动程序(2 main types of device driver)
- 弱类型变量原理探究(转载 http://www.csdn.net/article/2014-09-15/2821685-exploring-of-the-php)
- Overview of Form Control Types [AX 2012]