A instrução alter table renomeia, exclui, altera e adiciona colunas, renomeia colunas numa tabela.
Criando uma Tabela para Testes
Vamos criar a tabela clientes para testarmos posteriormente a instrução alter table.
create table clientes( id int auto_increment, nome varchar(255) not null, criado_em timestamp default current_timestamp, esta_ativo bool not null default false, primary key(id) );
Adicionando Colunas com alter table
para adicionar colunas em uma tabela com alter table usamos a sintaxe a seguir:
alter table nome_tabela add nome_da_nova_coluna definicao_da_coluna
Onde,
Na frente do nome da coluna colocamos quais definições a coluna terá, como: tamanho, tipo….
Também podemos dizer onde a nova coluna ficará na tabela. É possível adicionar uma coluna após uma coluna existente (after column_name) ou como a primeira coluna (first). Se você pular esta opção, o servidor de banco de dados acrescentará a nova coluna ao final.
Vamos adicionar a coluna email à nossa tabela clientes.
MariaDB [lab]> alter table clientes add email varchar(255) not null;
Veja o resultado
MariaDB [lab]> desc clientes; +------------+--------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | nome | varchar(255) | NO | | NULL | | | criado_em | timestamp | NO | | current_timestamp() | | | esta_ativo | tinyint(1) | NO | | 0 | | | email | varchar(255) | NO | | NULL | | +------------+--------------+------+-----+---------------------+----------------+
Vamos adicionar a coluna idade depois de email.
alter table clientes add idade int(02) after email;
Adicionando Mais de uma Coluna com alter table
Podemos adicionar mais de uma coluna ao mesmo tempo usando alter table. Veja:
alter table clientes add telefone varchar(15), add endereco varchar(255);
MariaDB [lab]> desc clientes; +------------+--------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | nome | varchar(255) | NO | | NULL | | | criado_em | timestamp | NO | | current_timestamp() | | | esta_ativo | tinyint(1) | NO | | 0 | | | email | varchar(255) | NO | | NULL | | | telefone | varchar(15) | YES | | NULL | | | endereco | varchar(255) | YES | | NULL | | +------------+--------------+------+-----+---------------------+----------------+
Usando alter table para modificar colunas
Use a seguinte sintaxe:
alter table nome_tabela modify nome_coluna definicoes_da_coluna [ first | after column_name];
#1 Vamos alterar a coluna telefone de 15 para 20 o limite de caracteres e adicionar not null
alter table clientes modify telefone varchar(20) not null;
#2 podemos modificar mais de uma coluna
alter table clientes modify telefone varchar(15) not null, modify endereco varchar(200);
Renomeando Colunas no alter table
Podemos alterar o nome de uma coluna com a seguinte sintaxe
alter table nome_tabela change column nome_atual novo_nome definicoes_da_coluna [first | after column_name];
Vamos ver exemplos.
#1 irei alterar o nome da coluna telefone para apena tel
alter table clientes change column telefone tel varchar(20);
Se você não digitar nenhuma especificação como not null, varchar… receberá erro.
Usando alter table para deletar colunas
Use a seguinte sintaxe para excluir colunas de uma tabela usando alter table
alter table nome_tabela drop column nome_coluna;
veja na prática; excluiremos a coluna idade
alter table clientes drop column idade;
Renomeando Tabela com alter table
Podemos renomear uma tabela com a seguinte sintaxe
alter table nome_tabela rename to novo_nome_tabela;
Vamos renomear clientes para clientes01
alter table clientes rename to clientes01;