🧚 Escute! O Beekeeper Studio é uma GUI de banco de dados rápida, moderna e open source Baixar
28 de maio de 2024 Por Matthew Rathbone

Alterar o tipo de uma coluna no MySQL é uma tarefa comum ao trabalhar com bancos de dados. Talvez você precise mudar o tipo de uma coluna para atender a novos requisitos de dados ou para otimizar o desempenho. Este tutorial explica como alterar o tipo de coluna usando o comando ALTER TABLE, com exemplos práticos.

Entendendo o comando ALTER TABLE

O comando ALTER TABLE é usado para modificar a estrutura de uma tabela existente. Ele pode adicionar, excluir ou alterar colunas e índices. Para alterar o tipo de uma coluna, a sintaxe básica é:

ALTER TABLE table_name MODIFY COLUMN column_name new_data_type;

Vamos analisar a sintaxe:

  • table_name: o nome da tabela que contém a coluna que você quer modificar.
  • column_name: o nome da coluna que você quer modificar.
  • new_data_type: o novo tipo de dado que você quer atribuir à coluna.

Exemplo: alterando o tipo de coluna no MySQL

Considere uma tabela chamada users com a seguinte estrutura:

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50),
    age INT
);

Você pode verificar a estrutura inicial usando:

DESCRIBE users;

Saída esperada:

+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int         | NO   | PRI | NULL    | auto_increment |
| username | varchar(50) | YES  |     | NULL    |                |
| age      | int         | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

Alterando o tipo da coluna age

Suponha que você queira alterar a coluna age de INT para TINYINT, porque a faixa de idades é pequena e você quer economizar espaço.

ALTER TABLE users MODIFY COLUMN age TINYINT;

Executar o comando acima altera a coluna age para TINYINT. Verifique a alteração:

DESCRIBE users;

Saída esperada:

+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int         | NO   | PRI | NULL    | auto_increment |
| username | varchar(50) | YES  |     | NULL    |                |
| age      | tinyint     | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

Observe que TINYINT armazena uma faixa de números menor que INT. Como você pode imaginar, isso pode causar problemas na conversão dos dados da tabela. Abordo as implicações disso na seção Conversion Issues abaixo.

Alterando o tipo da coluna username

Agora, vamos alterar a coluna username de VARCHAR(50) para VARCHAR(100) para permitir nomes de usuário mais longos.

ALTER TABLE users MODIFY COLUMN username VARCHAR(100);

Verifique a alteração:

DESCRIBE users;

Saída esperada:

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int          | NO   | PRI | NULL    | auto_increment |
| username | varchar(100) | YES  |     | NULL    |                |
| age      | tinyint      | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

Lidando com problemas de conversão de dados

Ao alterar o tipo de uma coluna, você pode encontrar problemas se os dados existentes forem incompatíveis com o novo tipo. O MySQL tentará converter os dados existentes, mas, se um valor não puder ser convertido, isso pode resultar em valores NULL ou truncamento.

Exemplo: truncamento de dados - INT para TINYINT

No nosso exemplo de INT para TINYINT, existe a possibilidade de truncamento de dados, porque TINYINT não suporta a mesma faixa de valores que INT.

  • INT pode armazenar valores de -2.147.483.648 a 2.147.483.647 (signed) ou de 0 a 4.294.967.295 (unsigned).
  • TINYINT pode armazenar valores de -128 a 127 (signed) ou de 0 a 255 (unsigned).

Veja o que acontece durante a conversão:

a. Se os valores INT da coluna estiverem dentro da faixa que TINYINT consegue armazenar, eles serão convertidos sem problemas.
b. Se os valores INT excederem a faixa de TINYINT, eles serão truncados para caber na faixa de TINYINT. Por exemplo, se o valor INT for 300, ele será truncado para 127 em um TINYINT signed ou 255 em um TINYINT unsigned.

O MySQL pode gerar avisos ou erros durante a conversão se os dados excederem os limites do novo tipo, dependendo das configurações de SQL mode.

Exemplo: alterando para um tipo incompatível

Considere este cenário:

ALTER TABLE users MODIFY COLUMN age CHAR(3);

Isso altera a coluna age para CHAR(3). Porém, se alguma idade exceder 999, ela será truncada para os três primeiros caracteres. Sempre garanta que o novo tipo comporte os dados existentes para evitar perda de informações.

Conclusão

Alterar o tipo de uma coluna no MySQL envolve usar o comando ALTER TABLE com a cláusula MODIFY COLUMN. Sempre verifique as alterações e tenha cuidado com problemas de conversão de dados. Este tutorial mostrou como realizar essa tarefa com exemplos práticos para que você possa aplicá-la com confiança nos seus projetos.

Ao entender e usar o comando ALTER TABLE, você consegue gerenciar e otimizar com eficiência as estruturas do seu banco de dados no MySQL.

Beekeeper Studio é um cliente de banco de dados gratuito e open source

A melhor ferramenta de consultas e edição de SQL que já usei. Tem tudo o que preciso para gerenciar meu banco de dados. - ⭐⭐⭐⭐⭐ Mit

O Beekeeper Studio é rápido, intuitivo e fácil de usar. Ele suporta vários bancos de dados e funciona muito bem no Windows, Mac e Linux.

A versão do Beekeeper para Linux tem 100% dos recursos, sem atalhos e sem concessões.

O que os usuários dizem sobre o Beekeeper Studio

★★★★★
"O Beekeeper Studio substituiu completamente meu antigo fluxo de trabalho com MySQL. É rápido, intuitivo e torna o trabalho com bancos de dados prazeroso de novo."
— Alex K., desenvolvedor de banco de dados
★★★★★
"Já testei muitas GUIs de banco de dados, mas o Beekeeper encontra o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."
— Sarah M., engenheira full stack

Pronto para melhorar seu fluxo de trabalho com MySQL?

download Baixe grátis