Pular para o conteúdo principal

Introdução ao comando ALTER TABLE em SQL

Neste tutorial, você vai aprender como usar e aplicar o comando ALTER TABLE em SQL.
Atualizado 17 de set. de 2026  · 7 min lido

Explorar com IA

ChatGPTClaudePerplexity

Em SQL, existem basicamente três tipos de comandos:

  • DDL - Data Definition Language (Linguagem de Definição de Dados), que reúne comandos SQL usados para definir o banco de dados: criar tabelas, definir especificações, alterar tabelas e assim por diante. Exemplos de DDL: CREATE, DROP, ALTER etc. As mudanças feitas por comandos DDL não podem ser desfeitas (rollback).

  • DML - Data Manipulation Language (Linguagem de Manipulação de Dados), que permite executar consultas de seleção, inserção, atualização e exclusão. As mudanças feitas por comandos DML podem ser revertidas. Exemplos: SELECT, INSERT, UPDATE e DELETE.

  • DCL - Data Control Language (Linguagem de Controle de Dados), que permite especificar direitos, permissões e outros controles do seu sistema de banco de dados.

Neste tutorial, você vai ver o uso do comando ALTER TABLE, que é de natureza DDL. Os seguintes tópicos serão abordados:

  • Por que usar o comando ALTER TABLE
  • Criando uma tabela em um banco de dados PostgreSQL
  • Executando diferentes comandos ALTER TABLE no PostgreSQL

Observação: este tutorial não vai ensinar a criar tabela, inserir dados ou selecionar dados em uma tabela no PostgreSQL. Se você quiser revisar esses tópicos, confira este artigo.

Por que usar o comando ALTER TABLE

As especificações de um banco de dados podem mudar com o tempo. Por exemplo, pode ser necessário adicionar uma coluna a uma tabela específica, definir outra chave primária para uma tabela ou alterar o tipo de dado de uma coluna. Nem sempre é viável excluir uma tabela e recriá-la do zero. O comando ALTER TABLE permite fazer tudo isso com facilidade. Com ALTER TABLE, você pode:

  • Adicionar, modificar ou remover uma coluna
  • Adicionar ou remover uma restrição (constraint)

Você também pode habilitar/desabilitar constraints, mas isso não está no escopo deste tutorial.

Você verá cada um dos casos de uso acima neste tutorial, mas antes disso, vamos criar uma tabela no PostgreSQL para começar. Na próxima seção, você vai criar uma tabela simples.

Criando uma tabela em um banco de dados PostgreSQL

Você vai criar uma tabela chamada student_details no PostgreSQL (usando o utilitário pgAdmin) com as seguintes colunas e tipos de dados:

  • student_id (integer)
  • student_full_name (character)
  • student_year (integer)

Você vai começar com essa tabela contendo apenas três colunas. Depois, ao longo do tutorial, vai adicionar mais colunas e alterar a tabela de diferentes maneiras. A consulta de criação a seguir gera a tabela de acordo com as especificações acima:

CREATE TABLE student_details(
 student_id SERIAL,
 student_full_name VARCHAR (50),
 student_year VARCHAR (100)
);

Vamos inserir alguns registros nessa tabela também:

  • INSERT INTO student_details(student_full_name, student_year) VALUES('John Doe','1st');
  • INSERT INTO student_details(student_full_name, student_year) VALUES('Chris Villa','3rd');

Como o tipo de dado de student_id está definido como SERIAL, o PostgreSQL incrementa automaticamente o valor da coluna, e esse tipo é interpretado como integer por padrão no PostgreSQL.

A tabela student_details deve ficar assim:

Table of student_details

Agora você tem uma tabela criada no PostgreSQL. Vamos ver outras aplicações de ALTER TABLE na próxima seção.

Executando diferentes comandos ALTER TABLE no PostgreSQL

Nesta seção, você vai ver o uso do ALTER TABLE das seguintes formas, como mencionado acima:

  • Adicionar, modificar e remover uma coluna
  • Adicionar e remover uma constraint

Adicionar, modificar ou remover uma coluna

Vamos começar adicionando mais uma coluna chamada student_grade (do tipo character) na tabela:

ALTER TABLE student_details ADD student_grade VARCHAR(5);

Agora, a tabela deve ficar assim:

Table of student_details with student_grade column

Repare que, para os registros já inseridos, os valores da coluna student_grade estão como null. Isso é feito de forma implícita na maioria dos SGBDs relacionais. Porém, você sempre pode executar uma consulta de atualização para definir os valores. Agora vamos ver como modificar uma coluna usando ALTER TABLE. Você vai reduzir o tamanho máximo permitido da coluna student_year de 100 para 10, pois alocar muito espaço para apenas três caracteres (student_year pode ser 1st, 2nd ou 3rd) não é muito prático.

ALTER TABLE student_details ALTER COLUMN student_year TYPE VARCHAR(10);

Você pode ver o resultado na figura a seguir:

Table of student_details with student_year (10)

Também é possível renomear uma coluna. Veja como:

ALTER TABLE student_details RENAME student_id TO student_roll;

A consulta acima renomeia a coluna student_id para student_roll. Você pode verificar isso com uma consulta de seleção; seu resultado deve ser semelhante ao da figura a seguir:

Table of student_details with renamed column to student_roll

Agora, vamos ver como remover uma coluna de uma tabela:

ALTER TABLE student_details DROP COLUMN student_year;

Essa consulta remove a coluna student_year, e a tabela após a execução deve ficar assim:

Table of student_details after dropping student_year column

Observe que, se a coluna que você está removendo for referenciada por outra tabela, podem ocorrer erros de violação de integridade referencial.

Agora você vai ver como adicionar e remover constraints em uma tabela.

Adicionar e remover uma constraint.

A tabela student_details não tem chave primária. A chave primária combina as constraints not null e unique. Vamos definir a coluna student_roll (renomeada a partir de student_id) como chave primária de student_details:

ALTER TABLE student_details ADD PRIMARY KEY (student_roll);

Você também pode adicionar outras constraints. Por exemplo, dá para adicionar uma constraint check na coluna student_grade para que os valores sejam sempre A, B ou C.

ALTER TABLE student_details ADD CONSTRAINT year_check CHECK (student_grade IN ('A', 'B', 'C'));

year_check é um nome de referência para a constraint que você está adicionando à tabela. Agora, se você tentar inserir a seguinte linha, deverá receber um erro:

INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd');

O erro será parecido com o seguinte:

error result

Remover uma constraint é semelhante. Você precisa informar o nome da constraint que deseja excluir. Vamos remover a constraint chamada year_check:

ALTER TABLE student_details DROP CONSTRAINT year_check;

Vamos verificar. Se a constraint year_check foi realmente removida, então esta consulta INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd'); não deve gerar erro. A tabela agora contém o registro:

final table

Você pode testar outras constraints do tipo check também.

É isso por hoje!

Neste tutorial, você conheceu o comando ALTER TABLE para modificar o esquema de uma tabela de forma eficiente. Se quiser levar suas habilidades em SQL para o próximo nível, vale a pena conferir estes cursos da DataCamp:

Tópicos
SQL

Cursos de SQL

Curso

Análise Exploratória de Dados em SQL

4 h
187.4K
Aprenda a examinar os elementos de um banco de dados, incluindo as tabelas, seus relacionamentos e os dados armazenados.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Tutorial de visão geral do banco de dados SQL

Neste tutorial, você aprenderá sobre bancos de dados em SQL.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Tutorial do Insert Into SQL

A instrução "INSERT INTO" do SQL pode ser usada para adicionar linhas de dados a uma tabela no banco de dados.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Exemplos e tutoriais de consultas SQL

Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Tutorial

Introdução aos acionadores SQL: Um guia para desenvolvedores

Saiba como usar os acionadores SQL para automatizar tarefas, manter a integridade dos dados e melhorar o desempenho do banco de dados. Experimente exemplos práticos como os comandos CREATE, ALTER e DROP no MySQL e no Oracle.
Oluseye Jeremiah's photo

Oluseye Jeremiah

13 min

Tutorial

SELEÇÃO de várias colunas no SQL

Saiba como selecionar facilmente várias colunas de uma tabela de banco de dados em SQL ou selecionar todas as colunas de uma tabela em uma consulta simples.
DataCamp Team's photo

DataCamp Team

3 min

SQLAlchemy_Tutorial.

Tutorial

Tutorial de SQLAlchemy com exemplos

Aprenda a acessar e executar consultas SQL em todos os tipos de bancos de dados relacionais usando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Ver MaisVer Mais