文章目录
MySQL支持多个类别的SQL数据类型:数字类型、日期和时间类型、字符串(字符和字节)类型、空间类型和JSON数据类型。
数据类型的描述有下面几个规约:
- 整数类型:M表示最大显示宽度。对于浮点和定点类型,M是可以存储的总位数(精度)。对于字符串类型,M是最大长度。M的最大允许值取决于数据类型。
- D适用于浮点和定点类型,表示小数点后的数字位数(小数点位数)。最大值最大为30,但不能大于 M-2。
- fsp适用于TIME、DATETIME和TIMESTAMP类型,表示小数秒精度,也就是秒的小数点后的数字位数。fsp 值(如果给定)必须在 0 到 6 的范围内。值为 0 表示没有小数部分。如果省略,则默认精度为 0。(这与标准SQL默认值6不同,以便与以前的MySQL版本兼容。
- 方括号([])表示类型定义的可选部分。
1.数值类型
MySQL支持所有标准的SQL数值数据类型。这些类型包括确切的数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC)以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。关键字 INT 是 INTEGER 的同义词,关键字 DEC 和 FIXED 是 DECIMAL 的同义词。MySQL将DOUBLE视为DOUBLE PRECISION(非标准扩展)的同义词。MySQL还将REAL视为DOUBLE PRECISION(非标准变体)的同义词,除非启用了REAL_AS_FLOAT SQL模式。
BIT 数据类型存储位值,并且 MyISAM、MEMORY、InnoDB 和 NDB 表支持该数据类型。
对于整数类型,M表示最大显示宽度。最大值为255。显示宽度与类型可以存储的值范围无关。
对于浮点和定点数据类型,M是可以可以存储的总位数。
下表中:[]为可选项,UNSIGNED为无符号,ZEROFILL为填充0。
类型 | 存储(字节) | 解释 |
---|---|---|
BIT[(M)] | 位值类型。M表示每个值的位数,从1到64。<br> 如果省略M,默认值为1。 | |
TINYINT[(M)] [UNSIGNED] [ZEROFILL] | 1 | 一个很小的整数。无符号范围:0到255。有符号范围:-128到127。TINYINT(1)表示布尔值。 |
BOOL, BOOLEAN | 布尔值。这些类型和TINYINT(1)是同义。0为false,非0为true。 | |
SMALLINT[(M)] [UNSIGNED] [ZEROFILL] | 2 | 小整数。无符号范围:0到65535。有符号范围:-32768到32767。 |
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] | 3 | 中等整数。无符号范围:0到16777215。有符号范围:-8388608到8388607。 |
INT[(M)] [UNSIGNED] [ZEROFILL] | 4 | 整数。无符号范围:0到4294967295。有符号范围:-2147483648到2147483647。 |
INTEGER[(M)] [UNSIGNED] [ZEROFILL] | 同INT | |
BIGINT[(M)] [UNSIGNED] [ZEROFILL] | 8 | 大整数。无符号范围:0到18446744073709551615。有符号范围:-9223372036854775808到9223372036854775807。 |
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] | M+2 | 压缩的"精确"定点数。M是总位数(精度,不包含小数点和符号),D是小数点之后的位数。D为0,则没有小数点或小数部分。M最大为65,D最大为30。M默认10,D默认0。 |
DEC | 同DECIMAL。 | |
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] | 4 | 一个小的(单精度)浮点数。范围:-3.402823466E+38到-1.175494351E-38、0、1.175494351E-38到3.402823466E+38。符合IEEE标准。实际范围略小,取决于硬件和操作系统。M是总位数、D是小数点后的位数。省略M和D,则值将存储到硬件允许的限制。大约7位小数。 |
FLOAT§ [UNSIGNED] [ZEROFILL] | 浮点数。P表示以位为单位的精度。MySQL仅使用该值来确定是使用FLOAT还是DOUBLE作为结果。P从0到24,则用FLOAT,没有M或D值。如果P从25到32,则数据类型用DOUBLE,没有M或D值。 | |
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] | 8 | 正常的浮点数(双精度)。值范围:-1.7976931348623157E+308到-2.2250738585072014E-308、0、2.2250738585072014E-308到1.7976931348623157E+308。符合IEEE标准。实际范围略小,取决于硬件和操作系统。M是总位数、D是小数点后的位数。省略M和D,则值将存储到硬件允许的限制。大约15位小数。 |