Viz https://dev.mysql.com/doc/ refman/8.0/en/numeric-types.html
-
INTje čtyřbajtové celé číslo se znaménkem. -
BIGINTje osmibajtové celé číslo se znaménkem.
Každý z nich nepřijímá více a méně hodnot, než lze uložit do jejich příslušného počtu bajtů. To znamená 2 hodnoty v INT a 2 hodnoty v BIGINT .
20 v INT(20) a BIGINT(20) skoro nic neznamená. Je to nápověda pro šířku displeje. Nemá to nic společného s úložištěm ani s rozsahem hodnot, který sloupec přijme.
Prakticky to ovlivňuje pouze ZEROFILL možnost:
CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;
+----------------------+
| bar |
+----------------------+
| 00000000000000001234 |
+----------------------+
Pro uživatele MySQL je běžným zdrojem zmatku, když vidí INT(20) a předpokládejme, že jde o limit velikosti, něco podobného jako CHAR(20) . Není tomu tak.