我想知道 BigInt
、MediumInt
和 Int
之间的区别是什么……很明显,它们允许更大的数字;但是,我可以制作一个 Int(20)
或一个 BigInt(20)
,这看起来并不一定与大小有关。
一些洞察力会很棒,只是有点好奇。我用MySQL有一段时间了,在选择类型的时候尝试应用业务需求,但是一直没搞懂这方面。
最佳答案
见 http://dev.mysql.com/doc/refman/8.0/en/numeric-types.html
INT
是一个四字节有符号整数。BIGINT
是一个八字节有符号整数。
它们每个接受的值都不能超过它们各自的字节数。这意味着 INT
中有 232 个值,BIGINT
中有 264 个值。
INT(20)
和 BIGINT(20)
中的 20 几乎没有任何意义。这是显示宽度的提示。它与存储无关,也与列将接受的值范围无关。
实际上,它只影响 ZEROFILL
选项:
CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;
+----------------------+
| bar |
+----------------------+
| 00000000000000001234 |
+----------------------+
对于 MySQL 用户来说,看到 INT(20)
并假设它是一个大小限制,类似于 CHAR(20)
是一个常见的混淆来源。事实并非如此。
关于mysql - MySQL : BigInt(20) vs Int(20) 中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3135804/