ALTER e DROP TABLE – Alterar e Excluir Tabelas e Colunas – Curso de SQL Server – 07
Alterar e Excluir Tabelas e Colunas no SQL Server
Vamos aprender agora a alterar e excluir tabelas e colunas com SQL no Microsoft SQL Server.
Para isso usaremos dois comandos: ALTER TABLE e DROP TABLE.
Comando ALTER TABLE
É possível alterar a estrutura de uma tabela após ter sido criada, acrescentando ou excluindo atributos (campos). A sintaxe básica para essa operação é como segue:
ALTER TABLE tabela ação coluna;
Vejamos a sintaxe básica para cada ação com ALTER TABLE:
Adicionar uma coluna à tabela:
ALTER TABLE nome_tabela ADD nome_coluna tipo_dados;
Excluir uma coluna de uma tabela:
ALTER TABLE nome_tabela DROP COLUMN nome_coluna;
Alterar o tipo de dados de uma coluna:
ALTER TABLE nome_tabela ALTER COLUMN nome_coluna tipo_dados;
Adicionar uma constraint do tipo NOT NULL a uma coluna:
ALTER TABLE nome_tabela ALTER COLUMN nome_coluna tipo_dados NOT NULL;
Alterar uma tabela para adicionar uma constraint de chave primária a uma coluna:
ALTER TABLE nome_tabela ADD CONSTRAINT nome_constraint PRIMARY KEY (coluna1, coluna2, ...);
Excluir uma constraint de uma tabela:
ALTER TABLE nome_tabela DROP CONSTRAINT nome_constraint;
Exemplos
1 – Excluir a coluna ID_Autor da tabela tbl_livros:
ALTER TABLE tbl_livros DROP COLUMN ID_Autor;
2 – Adicionar a coluna ID_Autor à tabela tbl_livros e configurá-la como chave estrangeira da coluna ID_Autor da tabela tbl_autores:
ALTER TABLE tbl_livros ADD ID_Autor SMALLINT NOT NULL CONSTRAINT fk_ID_Autor FOREIGN KEY (ID_Autor) REFERENCES tbl_autores (ID_autor);
3 – Adicionar a coluna ID_editora à tabela tbl_livros e configurá-la como chave estrangeira da coluna ID_editora da tabela tbl_editoras:
ALTER TABLE tbl_livros ADD ID_editora SMALLINT NOT NULL CONSTRAINT fk_id_editora FOREIGN KEY (ID_editora) REFERENCES tbl_editoras (ID_editora) ON DELETE CASCADE;
4 – Alterando o tipo de dados da coluna ID_Autor para SMALLINT:
ALTER TABLE tbl_livros ALTER COLUMN ID_Autor SMALLINT;
5 – Adicionando a constraint PRIMARY KEY á coluna ID_Cliente (já existente) da tabela Clientes:
ALTER TABLE Clientes ADD CONSTRAINT pk_id_cliente PRIMARY KEY (ID_Cliente);
Comando DROP TABLE
Usamos o comando DROP TABLE para excluir uma tabela do banco de dados, incluindo todos os seus dados.
Sintaxe:
DROP TABLE nome_tabela;
Exemplo:
DROP TABLE Clientes;
Exercício para Fixação
Tente fazer o seguinte exercício sozinho. A resolução sugerida está na sequência:
1. Criar uma nova tabela no banco de dados db_Biblioteca, para armazenar gêneros dos livros. Sugestão de nome: tbl_generos
2. Criar uma nova coluna na tabela de livros para realizar o relacionamento com a tabela de gêneros.
3. Inserir um novo registro de livro no banco. Atenção: inserir antes quaisquer editoras, autores e gêneros necessários. Pesquise um livro que você gosta para realizar esse cadastro.
4. Verifique se os dados foram inseridos com sucesso usando o comando:
SELECT * FROM nome_tabela;
RESOLUÇÃO
CREATE TABLE tbl_generos ( ID_Genero Tinyint IDENTITY, Genero VARCHAR(25) CONSTRAINT pk_id_genero PRIMARY KEY (ID_Genero) ); ALTER TABLE tbl_livros ADD ID_Genero Tinyint CONSTRAINT fk_id_genero FOREIGN KEY (ID_Genero) REFERENCES tbl_generos (ID_Genero) ON DELETE CASCADE; INSERT INTO tbl_generos (Genero) VALUES ('Ficção'), ('Romance'), ('Aventura'), ('Técnico'), ('Suspense'); INSERT INTO tbl_autores (ID_Autor, Nome_Autor) VALUES (6, 'Daniel Defoe'); INSERT INTO tbl_editoras (Nome_Editora) VALUES ('Penguin Classics'); INSERT INTO tbl_Livros (Nome_Livro, ISBN, Data_Pub, Preco_Livro, ID_Autor, ID_editora, ID_Genero) VALUES ('As Aventuras de Robinson Crusoé','98653696912','18700509', 32.50, 6, 10,3); SELECT * FROM tbl_livros;

Resultado do Exercício com ALTER TABLE
O livro foi inserido com sucesso. Note que os livros inseridos anteriormente não possuem gênero cadastrado, sendo mostrado o valor NULL (nulo), mas é possível adicionar esse dado a eles usando a cláusula SQL UPDATE, que estudaremos nas próximas lições.
Dúvidas? Assista a um vídeo da Bóson Treinamentos sobre o assunto:
Olá Prof. Reis,
Gostaria de saber onde será usado o nome de uma constraint, após obrigatoriamente criada, como por exemplo, a “fk_ID_Autor”, desta video-aula.
Muito obrigado.
Olá Sidney! O nome da constraint é importante pois será utilizado para que possamos interagir com ela – por exemplo, se precisarmos exclui-la, o faremos pelo seu nome. Veja a sintaxe no texto do artigo. Abraço!
ótimooooooo , treinamento ,
Obrigado Natalio!
Como alterar o nome de uma coluna?
obrigado
Leandro
Olá Leandro!
Para alterar o nome de uma coluna você pode usar o procedimento armazenado sp_rename no SQL Server, como segue:
EXEC sp_RENAME ‘Nome_Tabela.Nome_Coluna_Atual’ , ‘Novo_Nome_Coluna’, ‘COLUMN’
Onde Nome_Tabela.Nome_Coluna_Atual é o nome atual da coluna, precedido do nome da tabela que a contém, e Novo_Nome_Coluna é o nome que você quer atribuir a essa coluna agora.
Abraço!
Estava com esse problema. Vlw profº
Olá, Professor, boa tarde!
Gostaria de inserir uma nova coluna em uma tabela no SQL Server, o problema que essa coluna precisa estar depois de uma outra existente e não no final da tabela. Tem como fazer isso ?
Olá Valdeci!
De acordo com a documentação da Microsoft, você deve utilizar o SQL Server Management Studio para inserir uma coluna em uma posição específica em uma tabela já existente, não sendo possível via comando SQL (ALTER TABLE)
Aqui está a explicação completa:
https://docs.microsoft.com/pt-br/sql/relational-databases/tables/add-columns-to-a-table-database-engine
Abraço!
Olá Prof. Fábio!
Primeiramente, obrigado pelo conteúdo. Seus materiais são de excelente qualidade!
Gostaria de deixar apenas a título de observação/curiosidade que no SQL SERVER 2012 o comando para alterar a coluna não está compilando quando utilizamos o MODIFY COLUMN. Uma alternativa é substituir por ALTER COLUMN. Exemplos:
ALTER TABLE nome_tabela MODIFY COLUMN nome_coluna tipo_dados;
ALTER TABLE nome_tabela ALTER COLUMN nome_coluna tipo_dados;
Fonte: https://docs.microsoft.com/pt-br/sql/t-sql/statements/alter-table-transact-sql?view=sql-server-ver15#alter_column
Muito obrigado pelo complemento José!!!!
Abraço!
Como eu faço para excluir(zerar) todas as tabelas de um banco de dados access com codigo vba??
Olá Boa tarde
Curso Fantástico
Eu gostaria de saber onde baixo as tabelas do curso para copiar, pois nao achei nos comentários e nem nos vídeos.
Muito Obrigado