MYSQL – ALTER, DROP, RENOMEAR, MODIFICAR

⚡ Resumo Inteligente

ALTERAR, REMOVER, RENOMEAR e MODIFICAR são os MySQL Comandos que remodelam um banco de dados depois que ele já está em uso. Eles adicionam, removem, renomeiam e redefinem objetos como tabelas e colunas sem descartar as linhas já armazenadas.

  • 🛠️ Comando ALTER: ALTER TABLE redefine um objeto que já existe, portanto, um esquema em execução absorve novos requisitos sem precisar ser reconstruído.
  • ADICIONAR COLUNA: O comando ALTER TABLE ADD COLUMN adiciona um campo, e as linhas existentes mantêm todos os valores que já continham.
  • 🗑️ Comando DROP: O comando DROP exclui permanentemente: um banco de dados, uma tabela ou uma única coluna através do comando ALTER TABLE DROP COLUMN.
  • 🔁 Comando RENAME: RENAME TABLE altera apenas o nome da tabela, sem perder nenhum dado em seu interior.
  • ✏️ ALTERAR Palavra-chave: A instrução CHANGE renomeia uma coluna e redefine seu tipo e restrições em uma única instrução, portanto, ambos os nomes de coluna são necessários.
  • 🧩 Palavra-chave MODIFICAR: MODIFY altera o tipo e as restrições, enquanto keeping O nome é a opção mais segura para uma edição que altera apenas o texto.
  • 📍 APÓS a palavra-chave: AFTER coloca uma coluna recém-adicionada em uma posição escolhida, em vez de no final da tabela.

MySQL ALTERAR, REMOVER, RENOMEAR e MODIFICAR

O que é o comando ALTER em MySQL?

O ALTERAR O comando modifica um banco de dados, tabela, visão ou outro objeto de banco de dados existente que precisa ser alterado durante o ciclo de vida do banco de dados. É o comando que permite que um esquema evolua depois de já ter sido criado e preenchido com dados.

Os requisitos de negócios raramente permanecem estáticos, e o design de um banco de dados precisa evoluir com eles. Suponha que o design do banco de dados do Myflix já tenha sido implementado e os usuários estejam trabalhando com ele, e somente então a equipe percebe que informações vitais foram omitidas. Ninguém quer perder as linhas existentes; eles simplesmente querem registrar as novas informações ao lado delas.

O comando ALTER abrange exatamente essa situação. Ele pode alterar o tipo de dados de um campo de string para número, renomear um campo ou adicionar uma coluna totalmente nova a uma tabela, mantendo intactos os dados já armazenados na tabela.

Com a finalidade do comando estabelecida, o próximo passo é a sintaxe que o executa.

MySQL ALTER Syntax

A sintaxe básica usada para adicionar uma coluna a uma tabela já existente é mostrada abaixo.

ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;

AQUI

  • “ALTER TABLE `nome_tabela`” é o comando que diz MySQL servidor para modificar a tabela chamada `table_name`.
  • “ADICIONAR COLUNA `nome_coluna` `tipo_dados`” é o comando que diz MySQL servidor para adicionar uma nova coluna chamada `column_name` com o tipo de dados `data_type`.

Suponha que a Myflix tenha introduzido faturamento e pagamentos online. Para dar suporte a isso, um campo para o número do cartão de crédito precisa ser adicionado à tabela de membros. Antes de fazer qualquer alteração, vale a pena analisar a estrutura atual da tabela. O script mostrado abaixo faz isso.

SHOW COLUMNS FROM `members`;
Campo Formato Nulo Chave Padrão Extra
número de membro int (11) NÃO PRI NULL Incremento automático
nomes completos varchar(350) NÃO NULL
gênero varchar(6) SIM NULL
data_de_nascimento dados SIM NULL
endereço físico varchar(255) SIM NULL
endereço_postal varchar(255) SIM NULL
número_de_contato varchar(75) SIM NULL
E-mail varchar(255) SIM NULL

💡 Nota sobre int(11): O número entre parênteses indica apenas a largura da tela. MySQL A versão 8.0.17 tornou obsoleto o uso desse recurso para tipos inteiros, portanto, um servidor moderno reporta essa coluna simplesmente como intO tamanho do armazenamento permanece inalterado.

O script mostrado abaixo adiciona o novo campo à tabela de membros.

ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);

Executar este script no banco de dados myflixdb adiciona uma coluna chamada credit_card_number à tabela members com o tipo de dados VARCHAR. Executar o script SHOW COLUMNS novamente produz o seguinte resultado.

Campo Formato Nulo Chave Padrão Extra
número de membro int (11) NÃO PRI NULL Incremento automático
nomes completos varchar(350) NÃO NULL
gênero varchar(6) SIM NULL
data_de_nascimento dados SIM NULL
endereço físico varchar(255) SIM NULL
endereço_postal varchar(255) SIM NULL
número_de_contato varchar(75) SIM NULL
E-mail varchar(255) SIM NULL
Número do cartão de crédito varchar(25) SIM NULL

A linha destacada confirma que o campo `credit_card_number` foi adicionado à tabela `members`, e os dados já presentes nas outras colunas permaneceram inalterados.

Adicionar uma coluna é apenas metade da história. Um esquema também precisa se livrar de objetos que não são mais necessários, e essa é a função do comando DROP.

O que é o comando DROP em MySQL?

O comando DROP exclui um objeto permanentemente. Ele é usado para

  1. Excluir um banco de dados do MySQL servidor.
  2. Excluir um objeto, como uma tabela ou uma coluna, de um banco de dados.

⚠️ Aviso: A operação DROP não é reversível. Nem o objeto nem as linhas dentro dele podem ser recuperados sem um backup, portanto, execute um SELECT no destino e confirme o backup primeiro.

Cairping uma coluna

No exemplo ALTER acima, uma coluna chamada credit_card_number foi adicionada à tabela members. Suponha que o recurso de faturamento online seja adiado e que essa coluna deva ser removida. O script a seguir faz isso.

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

A execução do script remove a coluna `credit_card_number` da tabela `members`. Listar as colunas novamente confirma o resultado.

SHOW COLUMNS FROM `members`;
Campo Formato Nulo Chave Padrão Extra
número de membro int (11) NÃO PRI NULL Incremento automático
nomes completos varchar(350) NÃO NULL
gênero varchar(6) SIM NULL
data_de_nascimento dados SIM NULL
endereço físico varchar(255) SIM NULL
endereço_postal varchar(255) SIM NULL
número_de_contato varchar(75) SIM NULL
E-mail varchar(255) SIM NULL

O número do cartão de crédito desapareceu da lista de campos.

RETIRAR TABELA

A sintaxe para excluir uma tabela inteira de um banco de dados é a seguinte.

DROP TABLE `sample_table`;

Aplicada a um objeto real, a afirmação fica assim.

DROP TABLE `categories_archive`;

Ao executá-lo, a tabela chamada `categories_archive` e todas as suas linhas são excluídas do banco de dados.

SOLTAR BANCO DE DADOS

A mesma palavra-chave remove um esquema inteiro. Adicionar `IF EXISTS` suprime o erro que... MySQL Gera um erro quando o alvo já foi removido, o que é útil em scripts que são executados mais de uma vez.

DROP DATABASE IF EXISTS `myflixdb_backup`;

A remoção de um objeto é definitiva. Quando o objeto em si deve permanecer e apenas o seu nome está incorreto, o comando RENOMEAR é a ferramenta correta.

O que é o comando RENAME em MySQL?

O comando RENAME altera o nome de um objeto de banco de dados existente, como uma tabela ou uma coluna, para um novo nome. Renomear uma tabela não causa a perda de nenhum dos dados nela contidos.

O comando possui a seguinte sintaxe básica.

RENAME TABLE `current_table_name` TO `new_table_name`;

Para renomear a tabela movierentals para movie_rentals, utiliza-se o script abaixo.

RENAME TABLE `movierentals` TO `movie_rentals`;

Ao executar o comando, a tabela `movierentals` é renomeada para `movie_rentals`. Como a renomeação é apenas uma mudança de rótulo, a mesma instrução, executada na ordem inversa, restaura o nome original.

RENAME TABLE `movie_rentals` TO `movierentals`;

RENAME TABLE altera o nome de uma tabela. Renomear uma tabela colunaE a mudança do que ele contém é a função da palavra-chave CHANGE.

ALTERAR Palavra-chave

A palavra-chave CHANGE permite que você

  1. Alterar o nome de uma coluna
  2. Alterar o tipo de dados da coluna
  3. Alterar as restrições da coluna

Considere um exemplo. O campo full_names na tabela members é do tipo de dados varchar com uma largura de 350, como o script abaixo confirma.

SHOW COLUMNS FROM `members`;
Campo Formato Nulo Chave Padrão Extra
número de membro int (11) NÃO PRI NULL Incremento automático
nomes completos varchar(350) NÃO NULL
gênero varchar(6) SIM NULL
data_de_nascimento dados SIM NULL
endereço físico varchar(255) SIM NULL
endereço_postal varchar(255) SIM NULL
número_de_contato varchar(75) SIM NULL
E-mail varchar(255) SIM NULL

Suponha que o requisito seja

  1. Alterar o nome do campo de “full_names” para “fullname”
  2. Altere para o tipo de dados char com uma largura de 250.
  3. Adicione uma restrição NOT NULL

As três alterações são realizadas por meio de uma única instrução CHANGE.

ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;

Executar o comando no banco de dados myflixdb e, em seguida, executar o script SHOW COLUMNS resulta no seguinte:

Campo Formato Nulo Chave Padrão Extra
número de membro int (11) NÃO PRI NULL Incremento automático
nome completo char (250) NÃO NULL
gênero varchar(6) SIM NULL
data_de_nascimento dados SIM NULL
endereço físico varchar(255) SIM NULL
endereço_postal varchar(255) SIM NULL
número_de_contato varchar(75) SIM NULL
E-mail varchar(255) SIM NULL

A coluna agora se chama fullname, contém char(250) e rejeita valores NULL.

MODIFICAR Palavra-chave

A palavra-chave MODIFY permite que você...

  1. Modifique o tipo de dados da coluna.
  2. Modifique as restrições da coluna

No exemplo de ALTERAÇÃO acima, o nome do campo teve que ser fornecido duas vezes, embora a renomeação fosse apenas parte do objetivo. Omitir o nome do campo em uma instrução CHANGE gera um erro. Quando apenas o tipo de dados e as restrições precisam ser ajustados e o nome deve permanecer como está, o comando MODIFY resolve o problema com apenas uma menção à coluna.

O script abaixo altera a largura do campo "fullname" de 250 para 50.

ALTER TABLE `members` MODIFY `fullname` char(50) NOT NULL;

Executar o comando no banco de dados myflixdb e, em seguida, executar o script SHOW COLUMNS produz o resultado mostrado abaixo.

Campo Formato Nulo Chave Padrão Extra
número de membro int (11) NÃO PRI NULL Incremento automático
nome completo char (50) NÃO NULL
gênero varchar(6) SIM NULL
data_de_nascimento dados SIM NULL
endereço físico varchar(255) SIM NULL
endereço_postal varchar(255) SIM NULL
número_de_contato varchar(75) SIM NULL
E-mail varchar(255) SIM NULL

⚠️ Aviso: Ao reduzir o tamanho de uma coluna, os dados que não cabem mais são truncados. Qualquer nome com mais de 50 caracteres é cortado por essa instrução; portanto, verifique o maior valor existente com um `.` SELECIONE Consultar antes de reduzir o tamanho de um campo.

ALTERAR vs MODIFICAR vs RENOMEAR COLUNA

As três palavras-chave se sobrepõem, e escolher a errada é a fonte mais comum de erros nessa área. A tabela abaixo as coloca lado a lado.

Palavra-chave Renomeia a coluna Altera o tipo e as restrições. Nome antigo necessário Uso típico
MUDANÇA Sim Sim Sim, além do novo nome. Renomear e redefinir em uma única declaração
MODIFICAR Não Sim Nome fornecido uma vez Ampliar, estreitar ou digitar novamente uma coluna
RENOMEAR COLUNA Sim Não Sim, além do novo nome. Renomear apenas, de MySQL 8.0 em diante

MySQL A versão 8.0 adicionou uma quarta opção para o caso mais simples: renomear sem qualquer redefinição.

ALTER TABLE `members` RENAME COLUMN `fullname` TO `full_name`;

O tipo e o nome já estão definidos. A questão que resta é onde a nova coluna será inserida na tabela, o que é controlado pela palavra-chave AFTER.

APÓS a palavra-chave

Por padrão, uma coluna adicionada com ALTER TABLE é inserida no final da tabela. Para colocá-la em uma posição específica, o comando ALTER é combinado com a palavra-chave AFTER.

O script abaixo adiciona “date_of_registration” diretamente após date_of_birth na tabela de membros.

ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;

Executar o comando no banco de dados myflixdb e, em seguida, executar o script SHOW COLUMNS produz o resultado mostrado abaixo.

Campo Formato Nulo Chave Padrão Extra
número de membro int (11) NÃO PRI NULL Incremento automático
nome completo char (50) NÃO NULL
gênero varchar(6) SIM NULL
data_de_nascimento dados SIM NULL
data_de_registro dados SIM NULL
endereço físico varchar(255) SIM NULL
endereço_postal varchar(255) SIM NULL
número_de_contato varchar(75) SIM NULL
E-mail varchar(255) SIM NULL

A linha destacada é a coluna adicionada após `date_of_birth`. A palavra-chave `FIRST` funciona da mesma forma e move a nova coluna para o início da tabela.

Perguntas Frequentes

Não. Instruções DDL como ALTER, DROP e RENAME são confirmadas implicitamente em MySQLPortanto, uma transação em aberto não pode desfazê-las. Restaurar a partir de um backup é a única maneira de voltar atrás.

Depende da alteração. Muitas alterações no InnoDB são executadas online e permitem leituras e gravações simultâneas, enquanto outras copiam a tabela inteira e bloqueiam as gravações. Adicione as cláusulas ALGORITHM e LOCK para especificar o que você aceitará.

DROP remove o próprio objeto. TRUNCATE esvazia uma tabela, mas mantém sua estrutura. EXCLUIR Remove as linhas selecionadas e pode ser filtrado com uma cláusula WHERE.

Geralmente, sim. Assistentes de IA integrados em clientes como MySQL Workbench Transformar uma solicitação como "adicionar uma coluna de data anulável após date_of_birth" em uma sintaxe válida. RevVisualize a instrução gerada em relação ao esquema ativo antes de executá-la.

Apenas parcialmente. As ferramentas de revisão por IA sinalizam riscos óbvios, como uma coluna excluída que ainda aparece em uma consulta ou um tipo restrito que trunca os dados. Elas não conseguem ver todas as consultas, portanto, uma execução de teste continua sendo necessária.

Resuma esta postagem com: