Вижте http://dev.mysql.com/doc/ refman/8.0/en/numeric-types.html
-
INT
е четирибайтово цяло число със знак. -
BIGINT
е осембайтово цяло число със знак.
Всеки от тях приема не повече и не по-малко стойности, отколкото могат да бъдат съхранени в съответния брой байтове. Това означава 2 стойности в INT
и 2 стойности в BIGINT
.
20-те в INT(20)
и BIGINT(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)
. Това не е така.