Mysql——》int(1)和 int(10)区别

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

文章名称

  • 1、UNSIGNED:无符号
  • 2、ZEROFILL:填充零
  • 3、长度
  • 4、总结

不同类型的最大存储范围是不一样的。

类型 单位(字节) 有符号取值范围 无符号取值范围
tinyint 1 -128 ~ 127 0 ~ 255
smallint 2 -32768 ~ 32767 0 ~ 65535
mediumint 3 -8388608 ~ 8388607 0 ~ 16777215
int 4 -2147483648 ~ 2147483647 0 ~ 4294967295
integer 4 -2147483648 ~ 2147483647 0 ~ 4294967295
bigint 8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615

1、UNSIGNED:无符号

表示不允许负值

Q:有符号 VS 无符号?
A:
相同:

  1. 相同的存储空间
  2. 相同的性能

不同:

  1. 不同的存储范围

2、ZEROFILL:填充零

如果数据宽度小于指定长度,则在数字前面填充零'0'
当使用zerofill 时,默认会自动加unsigned(无符号)属性。

3、长度

数值类型设置的长度并不影响该数值字段的取值范围,只是规定了用来显示字符的个数
长度只有在设置 ZEROFILL 即 “填充零” 后才有所意义。
比如 int(3) 存储 1 ,填充零时会填充为 001。

CREATE TABLE `test` (
  `num` int(3) DEFAULT NULL,
  `num_zerofill` int(3) unsigned zerofill DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试';


INSERT INTO  `test` (`num`, `num_zerofill`) VALUES (1, 1);
INSERT INTO  `test` (`num`, `num_zerofill`) VALUES (2, 2);
INSERT INTO  `test` (`num`, `num_zerofill`) VALUES (3, 3);
INSERT INTO  `test` (`num`, `num_zerofill`) VALUES (4, 4);
INSERT INTO  `test` (`num`, `num_zerofill`) VALUES (5, 5);

Mysql——》int(1)和 int(10)区别_第1张图片

4、总结

1.int后面的数字,不影响int本身支持的大小,int(1)、int(2)…int(10)没什么区别。
2.int后面的数字,配合zerofill一起使用才有效。
3.int(3) + zerofill实现了不足3位补0的现象,对于001,底层存储的还是1,只是在展示的会补0。

你可能感兴趣的:(Mysql,mysql,android,数据库)