bigint和bigint之间的区别(20)

Bha*_*rat 2 mysql performance

我知道有符号数据类型保持负数和正数无和无符号仅保持正整数.

但是两者之间的区别是什么.

bigint unsignedbigint(20) unsigned

tof*_*der 5

BIGINT UNSIGNED 是一个八字节无符号整数.

BIGINT中的20(20)几乎没有任何意义.这是显示宽度的提示,它与存储无关.实际上,它只影响ZEROFILL选项:

CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;

+----------------------+
| bar                  |
+----------------------+
| 00000000000000001234 |
+----------------------+
Run Code Online (Sandbox Code Playgroud)

对于MySQL用户来说,看到BIGINT(20)并假设它是一个大小限制,类似于CHAR(20),这是混淆的常见原因.