Armazenamento de int no MySQL

  MySQL

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).