1. Introdução
MySQL é um sistema de gerenciamento de banco de dados relacional popular, amplamente usado em muitas aplicações web e sistemas de banco de dados. Entre seus tipos de dados, o tipo INT é um dos mais comumente utilizados para manipular valores numéricos. Este artigo fornece uma explicação detalhada do tipo INT do MySQL. Em particular, exploraremos os valores máximos suportados pelo tipo INT e como usá‑lo de forma eficiente. Ao ler este artigo, você obterá o conhecimento necessário para utilizar corretamente o tipo INT no MySQL.
2. Especificações Básicas do Tipo INT
Valores Máximos e Mínimos do INT
O tipo INT do MySQL usa 4 bytes (32 bits) de armazenamento, e o intervalo de valores que ele pode armazenar é o seguinte:
- Assinado (SIGNED) :
- Valor mínimo: -2.147.483.648
- Valor máximo: 2.147.483.647
- Não assinado (UNSIGNED) :
- Valor mínimo: 0
- Valor máximo: 4.294.967.295
Tamanho de Armazenamento do INT
O tipo INT sempre usa 4 bytes de armazenamento. Esse tamanho permanece constante independentemente do valor armazenado. Portanto, se você não precisar lidar com um intervalo numérico muito grande, é mais eficiente considerar tipos de dados menores (por exemplo, TINYINT ou SMALLINT).
Casos de Uso do INT
O tipo INT é comumente usado nos seguintes cenários:
- Valores auto‑incrementados (por exemplo, IDs de usuário, números de pedido)
- Dados inteiros usados em cálculos ou processamento estatístico (por exemplo, contagem de estoque, contagem de cliques)
- Dados representados dentro de um intervalo fixo (por exemplo, idade ou pontuações de teste)
Nesses casos de uso, é importante considerar o intervalo numérico necessário e a eficiência de memória.
3. O que Significa M em INT(M)?
O que é Largura de Exibição (M)?
No MySQL, o M em INT(M) representa a “largura de exibição”. Ele não afeta o valor numérico real armazenado no banco de dados; ao contrário, especifica como o valor será formatado quando exibido. Por exemplo, se definido como INT(5), o número será exibido com uma largura de 5 dígitos.
Entretanto, a largura de exibição M só tem significado no seguinte caso:
- Quando a opção ZEROFILL está habilitada
- Exemplo: com
INT(5) ZEROFILL, se o valor for123, ele será exibido como00123.
Notas Importantes Sobre ZEROFILL
Ao usar a opção ZEROFILL, as seguintes características se aplicam:
- Zeros à esquerda são adicionados automaticamente.
- O atributo
UNSIGNEDé aplicado automaticamente.
Portanto, se você precisar armazenar valores negativos, não poderá usar ZEROFILL.
Esclarecendo Equívocos Comuns
Muitos iniciantes acreditam erroneamente que M limita o valor máximo armazenável. Contudo, M afeta apenas a formatação de exibição e não tem absolutamente nenhum impacto no intervalo real de armazenamento.
4. Comparação com Outros Tipos Inteiros
Tipos de Dados Inteiros e Seus Intervalos
MySQL fornece os seguintes tipos inteiros:
| Type Name | Bytes | Signed Range | Unsigned Range |
|---|---|---|---|
| TINYINT | 1 byte | -128 to 127 | 0 to 255 |
| SMALLINT | 2 bytes | -32,768 to 32,767 | 0 to 65,535 |
| MEDIUMINT | 3 bytes | -8,388,608 to 8,388,607 | 0 to 16,777,215 |
| INT | 4 bytes | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 |
| BIGINT | 8 bytes | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 |
Critérios de Seleção
Use as diretrizes a seguir ao selecionar um tipo de dado adequado no design do banco de dados:
- Se o intervalo for pequeno: use
TINYINTouSMALLINTpara economizar memória. - Se for necessário um intervalo extremamente grande: use
BIGINT. - Se for desejado um uso de propósito geral:
INTcostuma ser a escolha ideal.
5. Alterações Desde o MySQL 8.0.17
Descontinuação da Largura de Exibição (M)
A partir do MySQL 8.0.17, a “largura de exibição (M)” para tipos inteiros foi descontinuada. Essa mudança foi introduzida juntamente com a descontinuação da opção ZEROFILL e pode ser removida em versões futuras do MySQL.
Os motivos para descontinuar a largura de exibição são os seguintes:
- Causou mal‑entendidos:
- Muitos usuários entenderam erroneamente que
Mafetava o valor máximo armazenável ou o número de dígitos.
- Uso prático limitado:
- Como
Mcontrolava apenas a formatação de exibição, essa formatação agora costuma ser tratada no lado da aplicação, reduzindo sua necessidade.
Descontinuação do ZEROFILL
A opção ZEROFILL também foi descontinuada na mesma versão. Embora o ZEROFILL fosse conveniente para preencher números com zeros à esquerda, ele não é mais recomendado pelos seguintes motivos:
- Abordagens alternativas amplamente adotadas:
- O preenchimento com zeros agora pode ser facilmente tratado na camada de aplicação ou da interface do usuário.
- Evitar confusão:
- A aplicação automática do atributo
UNSIGNEDao usarZEROFILLcausava confusão para usuários iniciantes.
How to Adapt to the Deprecation
Em resposta a essas descontinuações, considere as seguintes abordagens no design de banco de dados:
- Tratar formatação na camada de aplicação:
- Realizar o preenchimento com zeros e a formatação na camada de aplicação ou de apresentação.
- Exemplo: Implementar o preenchimento com zeros usando PHP ou JavaScript.
- Adote um design que não dependa da largura de exibição:
- Defina o tipo
INTsem especificarMe concentre-se na precisão dos dados em vez da formatação de exibição.
6. Practical FAQ Section
Frequently Asked Questions
Q1. O que acontece se eu armazenar um valor que excede o máximo do tipo INT?
A. No MySQL, tentar armazenar um valor fora do intervalo do tipo INT resultará em um erro. Você deve escolher um valor dentro do intervalo suportado ou mudar para um tipo de dado com intervalo maior (por exemplo, BIGINT).
Q2. Qual é a diferença entre INT e BIGINT?
A. O tipo BIGINT usa o dobro de armazenamento do INT (8 bytes) e fornece um intervalo numérico muito maior. Por exemplo, o intervalo com sinal do BIGINT ultrapassa ±9 quintilhões, tornando‑o adequado para lidar com conjuntos de dados muito grandes.
Q3. Após a descontinuação do ZEROFILL, como devo implementar a exibição com zeros à esquerda?
A. Recomenda‑se tratar o preenchimento com zeros na camada de aplicação. Por exemplo, em PHP você pode usar a função str_pad(), e em JavaScript pode usar o método padStart() para implementar o preenchimento com zeros.
Q4. Como devo escolher entre INT e outros tipos inteiros?
A. Selecione o tipo com base no intervalo de dados. Valores numéricos pequenos (por exemplo, idade ou pontuações) são adequados para TINYINT, dados de escala média (por exemplo, IDs de usuário) são adequados para INT, e valores muito grandes (por exemplo, dados de transações financeiras) são adequados para BIGINT.
7. Conclusion
Neste artigo, fornecemos uma explicação detalhada do tipo de dado MySQL INT. Os pontos principais são os seguintes:
- Compreender as diferenças entre os valores máximos e mínimos assinados e não assinados do tipo
INTforma a base de um design de dados adequado. - É importante entender abordagens alternativas às opções descontinuadas “largura de exibição (M)” e “ZEROFILL” e projetar bancos de dados que possam se adaptar a futuras atualizações do MySQL.
- Selecione o tipo inteiro apropriado com base nas características dos dados para construir um banco de dados eficiente e fácil de manter.
Use este artigo como referência para otimizar o uso do tipo INT e melhorar ainda mais a eficiência no design de bancos de dados MySQL.


