O que é TINYINT no MySQL? Intervalo, uso UNSIGNED e exemplos práticos

1. O que é TINYINT no MySQL?

No MySQL, TINYINT é um tipo de dado usado para armazenar inteiros muito pequenos. TINYINT consome 1 byte (8 bits) de memória e pode armazenar valores de -128 a 127 quando assinado, ou de 0 a 255 quando não assinado. TINYINT é usado principalmente para gerenciar de forma eficiente valores numéricos pequenos e flags booleanas.

Recursos do TINYINT

  • Eficiência de memória : Como o TINYINT usa apenas 1 byte, ele economiza mais memória em comparação com outros tipos inteiros, como INT ou BIGINT.
  • Opções signed e unsigned : Um TINYINT assinado pode lidar com valores negativos, enquanto a opção unsigned expande o intervalo máximo positivo.

Exemplo de Uso do TINYINT

No exemplo a seguir, uma tabela é criada usando o tipo TINYINT para gerenciar valores numéricos pequenos e flags.

CREATE TABLE user_status (
    user_id INT PRIMARY KEY,
    is_active TINYINT(1) NOT NULL DEFAULT 0
);

Neste exemplo, a coluna is_active é definida como TINYINT(1) e é usada para controlar se um usuário está ativo. Um valor 0 indica “inativo”, e 1 indica “ativo”.

2. Casos de Uso Práticos para TINYINT

TINYINT é um tipo de dado ideal para gerenciar pequenos inteiros e valores booleanos. É amplamente usado para maximizar o desempenho do banco de dados e reduzir o consumo de armazenamento.

Usando TINYINT como Valor Booleano

Como o MySQL não possui um tipo BOOLEAN dedicado, TINYINT(1) é comumente usado como substituto para gerenciar valores booleanos. Geralmente, 0 representa “false” e 1 representa “true”. Essa abordagem facilita o gerenciamento de flags.

UPDATE user_status SET is_active = NOT is_active WHERE user_id = 1;

Neste exemplo, o valor de is_active para o usuário especificado é alternado. Isso permite a troca simples de valores booleanos.

Gerenciando Pequenos Valores Numéricos

Por exemplo, TINYINT também é eficaz ao gerenciar inteiros dentro de um intervalo muito pequeno, como contagens de estoque de produtos. Se o número de produtos não ultrapassar 255, usar TINYINT UNSIGNED permite um gerenciamento suficiente dos dados dentro do intervalo numérico não assinado.

3. Comparando TINYINT com Outros Tipos Inteiros

O MySQL oferece vários tipos inteiros, e o TINYINT é o menor entre eles. Em contraste, INT e BIGINT podem armazenar intervalos de valores muito maiores. Abaixo estão as diferenças entre TINYINT e outros tipos inteiros principais.

Diferença entre INT e TINYINT

INT usa 4 bytes e suporta valores de -2147483648 a 2147483647, enquanto TINYINT usa apenas 1 byte e suporta valores de -128 a 127 (signed) ou 0 a 255 (unsigned). Portanto, ao usar TINYINT, você pode gerenciar dados dentro de um intervalo adequado economizando memória.

Comparação com Outros Tipos Inteiros Pequenos

Além de TINYINT, o MySQL fornece tipos de dados como SMALLINT (2 bytes) e MEDIUMINT (3 bytes). O intervalo numérico difere de acordo com o tamanho em bytes de cada tipo, portanto, selecionar o tipo de dado apropriado é importante.

4. Escolhendo entre Signed e Unsigned

No MySQL, o tipo TINYINT pode ser definido como signed ou unsigned. Entender a diferença e escolher adequadamente leva a um gerenciamento de dados mais eficiente.

Vantagens do TINYINT Unsigned

Um TINYINT unsigned (TINYINT UNSIGNED) suporta valores de 0 a 255, sendo útil quando valores negativos não são necessários. Por exemplo, ao armazenar a idade do usuário ou a quantidade de produtos — onde valores negativos são desnecessários — usar UNSIGNED amplia o intervalo utilizável e permite um gerenciamento de dados mais eficiente.

Vantagens do TINYINT Signed

Um TINYINT signed suporta valores de -128 a 127, sendo adequado quando valores negativos são necessários. Por exemplo, para dados como temperatura, onde valores negativos podem ocorrer, a opção signed é apropriada.

5. Exemplo de Uso do TINYINT

Aqui está um exemplo de como usar TINYINT para gerenciar dados em um banco de dados. Por exemplo, ao controlar quantidades de produtos, você pode definir a tabela da seguinte forma:

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    quantity TINYINT UNSIGNED NOT NULL
);

Neste exemplo, o estoque do produto quantity é gerenciado como um TINYINT unsigned, permitindo valores até 255. Além disso, ao especificar NOT NULL, você garante que um valor esteja sempre definido.

Você também pode usar TINYINT para gerenciar flags de status de usuário de maneira simples e eficiente. Especialmente ao lidar com grandes volumes de dados, usar TINYINT pode melhorar o desempenho geral do banco de dados.

6. Resumo e Melhores Práticas

TINYINT é um dos tipos de dados mais econômicos em memória no MySQL e é ideal para gerenciar pequenos inteiros e flags de forma eficiente. Ao usar TINYINT para valores booleanos ou intervalos numéricos pequenos, você pode otimizar tanto o uso de armazenamento quanto o desempenho do banco de dados.