MySQL数据类型

当我们要创建表的时候,就要根据业务需求,选择合适的数据类型。

表是由不同数据类型的列组成的,然后填充了一行一行的数据。当我们要创建表的时候,就要根据业务需求,选择合适的数据类型。

整数类型

类型名称 存储空间 范围
tinyint 1 字节 -128 到 127 或者 0 到 255
int 4 字节 -2147483648 到 2147483647 或者 0 到 4294967295
bigint 8 字节 -9223372036854775808 到 9223372036854775807 或者 0 到 18446744073709551615

其实还有个 2 字节的 smallint 但是不常用

设计表时

  • 对于状态\类型字段使用 tinyint
  • 记录id, 主键id等使用 bigint
  • 其他用int
符号?

这里注意, MySQL是存在有/无符号整型之分的, Java默认有符号

当涉及到负数表示时, 为了兼容, Java中必须使用Long

因为Java的int范围和MySQL不同分别是-2147483648 到 2147483647, 和 0 到 4294967295(无符号)

所以在设计表时, 整数的符号也要考虑

像自增 ID,肯定是无符号的,所以我们会在定义的时候将其设置为 unsigned

显示宽度?
CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `int10` int(10) NOT NULL,
  `int11` int(11) NOT NULL,
  `int` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

经常设计表的同学知道, int(10) 和 int(11) 指的是显示宽度的不同, 这里不涉及精度的问题, 多余的位用0填充

就是视觉规定而已

了解 ALEX 的博客写的很好