整数类型(精确值)

类型 存储(字节) 有符号的最小值 最小值无符号 最大值有符号 最大值无符号
TINYINT 1 -128 0 127 255
SMALLINT 2 -32768 0 32767 65535
MEDIUMINT 3 -8388608 0 8388607 16777215
INT 4 -2147483648 0 2147483647 4294967295
BIGINT 8 -263 0 263-1 264-1

定点类型(精确值)

DECIMAL、NUMERIC

浮点类型(近似值)

类型名称 说明 存储
FLOAT 单精度浮点数 4 个字节
DOUBLE 双精度浮点数 8 个字节
DECIMAL (M, D),DEC 压缩的“严格”定点数 M+2 个字节

位值类型

BIT数据类型被用于存储比特值。一种类型 启用存储位值。 范围从 1 到 64。 BIT(M) M要指定位值, 可以使用符号。

类型名称 说明 存储需求
BIT(M) 位字段类型 大约 (M+7)/8 字节
BINARY(M) 固定长度二进制字符串 M 字节
VARBINARY (M) 可变长度二进制字符串 M+1 字节
TINYBLOB (M) 非常小的BLOB L+1 字节,在此,L<2^8
BLOB (M) 小 BLOB L+2 字节,在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字节,在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字节,在此,L<2^32


超出范围和溢出处理

  • 如果启用了严格的 SQL 模式,MySQL 会根据 SQL 标准拒绝超出范围的值并显示错误,插入失败。
  • 如果没有启用限制模式,MySQL 会将值剪辑到列数据类型范围的适当端点并存储结果值。当超出范围的值分配给整数列时,MySQL 存储表示列数据类型范围的相应端点的值。当为浮点或定点列分配的值超出指定(或默认)精度和小数位数所隐含的范围时,MySQL 存储表示该范围对应端点的值。