Consulte http://dev.mysql.com/doc/ refman/8.0/en/numeric-types.html
-
INT
é um inteiro com sinal de quatro bytes.
-
BIGINT
é um inteiro com sinal de oito bytes.
Cada um deles não aceita mais nem menos valores do que podem ser armazenados em seu respectivo número de bytes. Isso significa 2 valores em um
INT
e 2 valores em um BIGINT
. O 20 em
INT(20)
e BIGINT(20)
significa quase nada. É uma dica para a largura da tela. Não tem nada a ver com armazenamento, nem com o intervalo de valores que essa coluna aceitará. Praticamente, afeta apenas o
ZEROFILL
opção:CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;
+----------------------+
| bar |
+----------------------+
| 00000000000000001234 |
+----------------------+
É uma fonte comum de confusão para os usuários do MySQL verem
INT(20)
e suponha que seja um limite de tamanho, algo análogo a CHAR(20)
. Este não é o caso.