MySQL支持所有标准的SQL数值数据类型。这些类型包括精确数字数据类型(整数、SMALLINT、DECIMAL和numeric)以及近似数字数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC和FIXED是DECIMAL的同义词。MySQL将DOUBLE视为DOUBLE PRECISION(非标准扩展)的同义词。MySQL还将REAL视为双精度(非标准变体)的同义词,除非启用了REAL-AS-FLOAT SQL模式。
BIT数据类型bit存储值,并支持MyISAM、MEMORY、InnoDB和NDB表。
Numeric 数据类型:
对于整数数据类型,M指示最大显示宽度,最大显示宽度为255。
对于浮点和定点数据类型, M是可以存储的总位数。
从MySQL 8.0.17开始,对于整数数据类型,不建议使用display width属性,并且在将来的MySQL版本中将删除对它的支持。
如果为数字列指定ZEROFILL,MySQL会自动向该列添加UNSIGNED属性。
从MySQL 8.0.17开始,数字数据类型不推荐使用ZEROFILL属性,在未来的MySQL版本中将删除对它的支持。考虑使用另一种方法来产生此属性的效果。例如,应用程序可以使用LPAD()函数将焊盘编号归零到所需的宽度,或者将格式化的编号存储在CHAR列中。
允许UNSIGNED 属性的数值数据类型也允许SIGNED。但是,这些数据类型默认情况下是签名的,因此该 SIGNED属性无效。
从MySQL 8.0.17开始,UNSIGNED属性不适用于类型为FLOAT, DOUBLE和和DECIMAL(以及任何同义词)的列,并且 在将来的MySQL版本中将不再支持该属性 。考虑CHECK对此类列使用简单约束。
SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名。
SERIAL DEFAULT VALUE在整数列的定义中,是的NOT NULL AUTO_INCREMENT UNIQUE的别名。