mysql - MySQL : BigInt(20) vs Int(20) 中的类型

标签 mysql types

我想知道 BigIntMediumIntInt 之间的区别是什么……很明显,它们允许更大的数字;但是,我可以制作一个 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/

相关文章:

haskell - 鸭子在 haskell 中输入 sum

java - 通用搞砸了不相关的集合

MySQL 将总金额与支出、收入、储蓄(3 个不同的表格)中的所有金额进行比较,以每月的百分比表示

mysql - 如何在 Perl 中为从 MySQL 获取的每条记录创建一个唯一值?

MySQL 在同一列中按 ASC/DESC 混合排序

C++ 中的 Python 样式变量

list - 带有元组的 Haskell 类型

asynchronous - 异步方法中的类型不匹配

mysql - 在 IBrokers 包上保存时间戳

MySQL 嵌套查询 UPDATE 和 SELECT