githubEdit

🔢Tipos numéricos

Tipos numéricos inteiros

O MySQL, de acordo com a documentaçãoarrow-up-right, suportam os padrões SQL INTEGER (INT é um sinônimo para INTEGER) e SMALLINT e oferecem, ainda os tipos TINYINT, MEDIUMINT e BIGINT, cujas características são descritas na tabela abaixo, adaptada da documentação oficial. Nota-se que os valores mínimos para o tipo numéricos UNSIGNED – sem sinal, ou seja, positivos – tem como valor mínimo 0.

Tipo
Tamanho (em bytes)
Valores mínimo e máximo signed
Valores mínimo e máximo unsigned

TINYINT

1

-128 a 127

0 a 255

SMALLINT

2

-32768 a 32767

0 a 65535

MEDIUMINT

3

-8388608 a 8388607

0 a 16777215

INT ou INTEGER

4

-2147483648 a 2147483647

0 a 4294967295

BIGINT

8

-2^63 a 2^63 - 1

0 a 2^64 - 1

Existem também os tipos BOOL e o sinônimo BOOLEAN, que são armazenados como zero, representando o valor falso, e qualquer valor diferente pode ser considerado verdadeiro.

circle-exclamation

Além dos tipos apresentados acima, temos também o tipo BIT, compatíveis com engines de armazenamento MyISAMarrow-up-right, MEMORYarrow-up-right, InnoDBarrow-up-right e NDBarrow-up-right, segundo a documentação do MySQL; colunas deste tipo armazenam valores binários, no qual podemos passar como argumento um número de 1 (que, por sinal, é o valor padrão) a 64, que representa o tamanho.

circle-info

Curiosidade

Eu estava arrumando isso aqui e me bateu uma curiosidade: se existe um tipo BIT, não seria mais coerente, até por economia de armazenamento, utilizar este tipo em vez do tipo TINYINT para representar os valores binários verdadeiro/falso?

Encontrei essa discussão no Stack Overflowarrow-up-right e penso que é algo interessante a compartilhar com os também curiosos. Lá, eu encontrei uma resposta que resume um pouco essa pergunta: "O tamanho mínimo de armazenamento de uma coluna do tipo BIT é 1 byte, mesmo que só precise de 1 bit".

Recomendo a leitura/participação no tópico.

Propriedades numéricas ZEROFILL (ZF) e UNSIGNED (UN)

A propriedade numérica ZEROFILL, no MySQL, preenche uma coluna com zeros à esquerda do número cujo dado do tipo inteiro tem um tamanho N especificado -- INT(N) --, seguindo a palavra reservada INT.

Drawing
circle-exclamation

Importante pontuar que o atributo ZEROFILL, uma vez utilizado, implica o uso automático de outra propriedade: UNSIGNED.

Drawing

A propriedade UNSIGNED, segundo a documentaçãoarrow-up-right, "pode ser usada para permitir apenas números não negativos numa coluna ou quando você precisa de um conjunto muito maior de números para uma coluna", uma vez que, como mostra a tabela 1, um inteiro SIGNED – propriedade padrão – consegue armazenar números entre -2147483648 e 2147483647, enquanto, com a propriedade UNSIGNED, esse intervalo vai de 0 a 4294967295.

Tipos numéricos de ponto fixo e ponto flutuante

No MySQL, temos um tipo numérico de ponto fixo, com valores exatos, representado pelo tipo DECIMAL, que tem como sinônimos os tipos DEC e FIXED. Há, ainda, o tipo NUMERIC, que no MySQL funciona da mesma maneira que o tipo DECIMAL, de acordo com a documentaçãoarrow-up-right, e "esses tipos são usados quanto é importante preservar a precisão exata" do dado a ser armazenado.

Drawing

Os tipos FLOAT e DOUBLE correspondem a dados numéricos aproximados, que podem ser de precisão simples ou dupla. Para o tipo de precisão simples, FLOAT, conforme a documentaçãoarrow-up-right do MySQL, opcionalmente, é possível definir a precisão em bits (p) na sequência da palavra-chave: FLOAT(p), seguindo o padrão SQL. Para efeitos práticos, isso permite que uma coluna do tipo FLOAT tenha dupla precisão, ou seja, funcione como uma coluna do tipo DOUBLE.

Drawing

Referências

Last updated