MySQL – Alterar Tabelas – Declaração ALTER TABLE – 10

Alterar Tabelas e Colunas no MySQL com ALTER TABLE

  • É possível alterar a estrutura de uma tabela no MySQL após ter sido criada, acrescentando ou excluindo atributos (campos)

Usamos para isso o comando ALTER TABLE

Excluir colunas: ALTER TABLE – DROP

ALTER TABLE nome-tabela
DROP COLUMN nome-coluna;

Exemplo – Excluindo a coluna ID_autor da tabela tbl_livro:

ALTER TABLE tbl_livro
DROP COLUMN ID_autor;

Pode-se excluir uma chave primária também:

ALTER TABLE tabela
DROP PRIMARY KEY;

Adicionar colunas: ALTER TABLE – ADD

Sintaxe:

ALTER TABLE tabela
ADD  coluna tipo_dados constraints;

Exemplo no banco de dados db_biblioteca: Vamos adicionar a coluna id_autor na tabela tbl_livro, com a constraint de chave estrangeira (a chave primária está na tabela tbl_autores):

ALTER TABLE tbl_livro
ADD  ID_Autor  SMALLINT NOT NULL;

Vamos adicionar a chave estrangeira agora:

ALTER TABLE tbl_livro
ADD CONSTRAINT fk_ID_Autor
FOREIGN KEY (ID_Autor)
REFERENCES tbl_autores (ID_autor)
ON DELETE CASCADE
ON UPDATE CASCADE;

Continuando os exemplos, vamos adicionar à tabela tbl_livro a coluna id_editora:

ALTER TABLE tbl_livro
ADD  ID_editora  SMALLINT NOT NULL;

E fazê-la chave estrangeira da tabela tbl_editoras:

ALTER TABLE tbl_Livro
ADD CONSTRAINT fk_id_editora
FOREIGN KEY (ID_editora)
REFERENCES tbl_editoras (ID_editora)
ON DELETE CASCADE
ON UPDATE CASCADE;

Também vamos criar o relacionamento entre a tabela de livros e a tabela de categorias:

ALTER TABLE tbl_Livro
ADD CONSTRAINT fk_id_categoria
FOREIGN KEY (ID_Categoria)
REFERENCES tbl_categorias (ID_Categoria)
ON DELETE CASCADE
ON UPDATE CASCADE;

Após criar os relacionamentos entre as tabelas, teremos a estrutura mostrada no diagrama entidade-relacionamento a seguir:

Diagrama Entidade-Relacionamento do banco de Dados db_Biblioteca

Alterar uma tabela

Podemos alterar colunas, por exemplo mudando o tipo de dados:

ALTER TABLE tbl_Livro
MODIFY COLUMN ID_Autor SMALLINT;

ALTER TABLE – ADD PK

Podemos também alterar uma coluna, adicionando constraints, como uma chave primária. Veja como ficaria a adição da restrição de chave primária a uma coluna de nome ID_Cliente em uma tabela fictícia chamada Clientes:

ALTER TABLE Clientes
ADD PRIMARY KEY (ID_Cliente)

Obs. A coluna ID_Cliente deve existir antes de ser transformada em chave primária.

A coluna ID_Cliente receberá a Constraint (restrição) PRIMARY KEY, e passará a ser a chave primária da tabela.

Excluir Constraints

Pode-se excluir uma chave primária (ou outra constraint):

ALTER TABLE nome-tabela
DROP PRIMARY KEY;

DROP TABLE – Excluir tabela

Podemos excluir uma tabela com o comando DROP TABLE

Sintaxe:

DROP TABLE nome_tabela;

Exemplo: excluindo a tabela Clientes (fictícia):

DROP TABLE Clientes;

Assista a um vídeo explicativo sobre os comandos ALTER TABLE e DROP TABLE:

 

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

6 Comentários em MySQL – Alterar Tabelas – Declaração ALTER TABLE – 10

  1. comprar impressora // 06/09/2016 em 21:15 // Responder

    ÓTIMO POST, EXPLICA MUITO BEM AS CONSULTAS SQL

  2. Como vc mostrou as colunas com “SELECT * FROM tables” se para mostrar as colunas o comando é “DESCRIBE table”?

    • o SELECT é usado para realizar consultas nas tabelas, e com o caractere * todas as colunas são retornadas – por isso é possível ver todas as colunas, incluindo os dados. O comando DESCRIBE só lista a estrutura da tabela, sem no entanto mostrar os dados presentes.

  3. Parabéns pelo material.

  4. Jairo Luís Razera da Silva // 09/08/2020 em 11:43 // Responder

    Bom dia!

    Existe o parâmetro After, e o First no alter table para adiconaor colunas. Não existe a opção Before?

Escreva um comentário

Seu e-mail não será divulgado


*