概览

Mysql 支持以下数据类型

  • 数字类型
  • 串类型(字符和字节)
  • 日期和时间
  • 空间
  • JSON

数字类型

整数类型 Interger

类型存储大小 bytes其他别名
TinyInt1bool, boolean = tinyint(1)
SmallInt2
MediumInt3
Int4
BigInt8

int(M) 表示显示宽度, 最大显示宽度为(255), M 与存储空间的大小无关. 空间大小由具体类型决定.

如果具体数值达不到宽度, 左边就会用0值补齐至 M 位.

浮点 ( Floating-Point )

类型存储补充范围
Float4 bytes单精度
Double8 bytes双精度

Float(p) p 表示小数点后的精度位数

Float(M, D) Mysql 语法: M表示总显示位数, D表示小数点后个数 – 由Mysql自己做约分处理. Mysql 8.0 后废弃该语法.

定点 ( Fixed-Point )

用于需要准备保存字段数据, 如金钱相关字段.

Decimal(M, D) 其中, M 表示字段中有效数据个数, D 表示小数点后个数

Decimal(5,2) 的精度为 -999.99 - 999.99

位 ( Bit-Value )

BIT(M) 用于存储位值, M范围(1-64), 当存储的数值小于 M, 会进行左边补0

example

1
2
3
4
mysql> CREATE TABLE t (b BIT(8));
mysql> INSERT INTO t SET b = b'11111111';
mysql> INSERT INTO t SET b = b'1010';
mysql> INSERT INTO t SET b = b'0101';
1
2
3
4
5
6
7
8
mysql> SELECT b+0, BIN(b), OCT(b), HEX(b) FROM t;
+------+----------+--------+--------+
| b+0  | BIN(b)   | OCT(b) | HEX(b) |
+------+----------+--------+--------+
|  255 | 11111111 | 377    | FF     |
|   10 | 1010     | 12     | A      |
|    5 | 101      | 5      | 5      |
+------+----------+--------+--------+

参考

Mysql 8.0 官方文档