Olhando um velho caderno de notas, entre várias folhas, encontrei essa anotação sobre armazenamento de int em MySQL.

Neste post, vou reproduzir minhas anotações. Estão a seguir:

2 ˆ (storage em bytes * 8) - 1
  • Onde 8 é o número de bits para formar um byte
  • Onde storage em bytes pode ser encontrado nesta tabela na coluna Storage

Aplicando o valor 4 da coluna storage relativo ao int, ficaria como:

2 ˆ (4 * 8) - 1

Existem 2 representações do valor gerado: signed e unsigned.

Signed, onde o resultado assume um intervalo de -2147483648 a 2147483647, ou seja, valores negativo ou positivo.

O lado positivo tem um número a menos, se comparado com negativo, como o zero é contado como número válido no intervalo, ele é descontado do lado positivo.

Unsigned, onde o resultado assume um intervalo de 0 a 4294967295, sendo sempre positivo.

A diferença básica é a área de cobertura do intervalo. Se a sequência que precisa usar números negativos pode usar o signed, se ela não usa números negativos então o unsigned, que por não conter números negativos o intervalo de positivos é maior.

Especificando int como int(x), sendo x o limite de digitos. Quando se usa int(5) o valor esperado de digitos é 5, resultando em algo como: 54321 (valor de exemplo, contendo 5 digitos).