文档主页
MySQL 5.7参考手册
相关文档 下载本手册
PDF(US Ltr) - 38.2Mb
PDF(A4) - 38.2Mb
PDF(RPM) - 37.6Mb
HTML下载(TGZ) - 10.2Mb
HTML下载(Zip) - 10.3Mb
HTML下载(RPM) - 9.0Mb手册
页) - 197.4Kb手册
页(Zip) - 305.9Kb
信息(Gzip) - 3.5Mb
信息(Zip) - 3.5Mb
摘自本手册

MySQL 5.7参考手册  /  数据类型  /数值类型

11.2数字类型

MySQL支持所有标准的SQL数字数据类型。这些类型包括确切的数值数据类型(INTEGERSMALLINTDECIMAL,和 NUMERIC),以及该近似数值数据类型(FLOATREAL,和 DOUBLE PRECISION)。关键字 INT是同义词 INTEGER,而关键字 DECFIXED是同义词 DECIMALMySQL DOUBLE作为DOUBLE PRECISION(非标准扩展)的同义词 除非启用SQL模式,否则MySQL也可以REAL 作为DOUBLE PRECISION(非标准变体) 的同义词REAL_AS_FLOAT

BIT数据类型存储位值,并且被支撑为MyISAMMEMORYInnoDB,和 NDB表。

有关在表达式求值过程中MySQL如何处理向列分配超范围值和溢出的信息,请参见 第11.2.6节“超出范围和溢出处理”

有关数字类型存储要求的信息,请参见 第11.8节“数据类型存储要求”

用于数字操作数计算结果的数据类型取决于操作数的类型和对其执行的操作。有关更多信息,请参见 第12.6.1节“算术运算符”


用户评论
  发布者 卡尔·菲舍尔 于2009年5月8日
MySQL Float和Real值似乎不能处理所有的IEEE标准浮点表示,例如NaN和+/- Inf。在将MySQL数据库与生成这些值的科学应用程序集成时,需要特殊设置以避免意外插入0值。
  由 Oliver Pereira 于2010年2月10日发布
使用MySQL.com搜索功能查找关于BOOL类型的文档,该页面是出现的最高级别的参考手册页面。但是,这个词甚至不会出现在页面上。

根据“10.1.1。数字类型概述”的页面,BOOL和BOOLEAN是TINYINT(1)的同义词。

我以为我应该在这个页面上包含这个事实,因为在搜索页面时会出现这个页面。(修复搜索功能将是一个更好的解决方案,但!)
2010年2月23日   由 stephen bond 发表
bool deafulting to tinyint is not strict enough. if you really want bool type you should use type "bit(1)" which will allow you to use exactly 1 and 0 and maybe save space or use type "enum('T','F')" which will not save space but make it a true binary flag.
  Posted by Miroslav Šustek on October 29, 2010
将ENUM('T','F')视为“真正的二进制”时要小心。

例如:
CREATE TABLE`bits`(
`val` ENUM('T','F')NOT NULL
);

mysql> INSERT INTO`bits`(`val`)VALUES('W'),('T'),('F');
Query OK,3 rows affected,1 warning(0.00 sec)
记录:3重复:0警告:1

mysql> SHOW WARNINGS;
+ --------- + ------ + -------------------------------- ---------- + 
| 级别| 代码| 留言|
+ --------- + ------ + -------------------------------- ---------- +
| 警告| 1265 | 数据在第1行的列“val”被截断
+ --------- + ------ + -------------------------------- ---------- +
1行(0.00秒)

mysql> SELECT COUNT(DISTINCT val)FROM bits;
+ --------------------- + 
| COUNT(DISTINCT val)|
+ --------------------- +
| 3 |
+ --------------------- +
1行(0.00秒)

那么,不应该有一个二进制类型只有两个不同的值?
(注意,它不是NULL)。

手册的说明(10.4.4。ENUM类型):
-----
如果你在ENUM中插入了一个无效的值(也就是说,一个不存在于允许列表中的字符串值),则将插入空字符串作为特殊的错误值。这个字符串可以通过这个字符串的数值为0的事实与“正常的”空字符串区分开来。

如果启用严格的SQL模式,则尝试插入无效的ENUM值将导致错误。
  由 Waheed Alshahnan 于2012年11月23日发布
使用tinyint(1)和UNION查看bug时有一个问题:#61131
注册 登录 您必须登录后才能发表评论。