MySQL 支持的数字类型如下表所示

对于所有数字类型

  1. 如果你为一个数字型的列指定为ZEROFILL,那么 MySQL 会自动添加一个UNSIGNED属性给该列。
  2. 数字类型默认是有符号(SIGNED)的
  3. 所有的数字类型都可以有AUTO_INCREMENT的属性,当你向一个有AUTO_INCREMENT Not Null属性的列插入数值NULL或者0时,系统会把列赋值为下一个序列数字,通常这个序列数字为当前列最大的数字+1
  4. 如果你向一个有AUTO_INCREMENT的属性添加了非 NULL 的数据A,下次插入NULL在该列时,插入的数据会是A+1

对于所有小数类型

  1. 当你指定 Unsigned给某个整型列时,它的正数有效表示范围就扩大了。比如Int的有效范围是-21474836482147483647,而 Int Unsigned则是 04294967295。但是,如果你给一个小数赋予一个Unsigned属性,它只是不能表示负数,但是正数的最大表示范围不会增加。

对于所有整型

  1. SERIAL DEFAULT VALUE在一个整数列定义中,是NOT NULL AUTO_INCREMENT UNIQUE的别名
  2. MySQL 支持为整型指定一个显示宽度(M),例如Int(4)表示指定了一个有4位宽度的整型,这个显示宽度仅仅用作给要展示数据的程序一个参考的显示宽度而已。这个显示宽度不会限制该列数据的表示范围,也不会限制数字的最大长度,如果配合ZEROFILL一起使用,则可以让不足宽度的数据左补0.

特别说明

  1. 使用 BigInt 时需要注意的事情:
    • SERIALBIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名。
    • 所有算术运算,它们可接受的操作数最大都是有符号的 BigIntDouble,所以你不能使用超过9223372036854775807 (63 bits) 的unsigned big int.
    • 你可以用字符串的形式来把一个 BigInt写到数据表,MySQL 会自动执行一个转换。
    • 如果两个 BigInt 相乘,结果如果大于 9223372036854775807 (63 bits) 时,会得到意想不到的结果
  2. 要赋值给 Bit,可以使用’b’作为前缀,如b'10010'