MySQL数据类型
当我们要创建表的时候,就要根据业务需求,选择合适的数据类型。
Categories:
表是由不同数据类型的列组成的,然后填充了一行一行的数据。当我们要创建表的时候,就要根据业务需求,选择合适的数据类型。
整数类型
类型名称 | 存储空间 | 范围 |
---|---|---|
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 的博客写的很好