Viz http://dev.mysql.com/doc/ refman/8.0/en/numeric-types.html
-
INT
je čtyřbajtové celé číslo se znaménkem. -
BIGINT
je 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.