Banco de Dados I — 2026.2

Aula 6
DDL: ALTER TABLE & DROP TABLE

👨‍🏫 Prof. Gustavo Pinto 🏛️ UFPA 📅 07 de maio de 2026 🕣 7h30 – 9h10

Agenda de hoje

ALTER TABLE — Colunas

-- Adicionar coluna
ALTER TABLE aluno ADD COLUMN telefone VARCHAR(15);

-- Remover coluna
ALTER TABLE aluno DROP COLUMN telefone;

-- Renomear coluna
ALTER TABLE aluno RENAME COLUMN dt_nasc TO data_nascimento;

-- Alterar tipo
ALTER TABLE aluno ALTER COLUMN nome TYPE VARCHAR(200);

-- Setar / remover NOT NULL
ALTER TABLE aluno ALTER COLUMN email SET NOT NULL;
ALTER TABLE aluno ALTER COLUMN email DROP NOT NULL;

ALTER TABLE — Constraints

-- Adicionar FK
ALTER TABLE pedido
  ADD CONSTRAINT fk_cliente
  FOREIGN KEY (cli_cpf) REFERENCES cliente(cpf);

-- Adicionar UNIQUE
ALTER TABLE produto
  ADD CONSTRAINT uq_produto_nome UNIQUE (nome);

-- Adicionar CHECK
ALTER TABLE produto
  ADD CONSTRAINT chk_preco CHECK (preco > 0);

-- Remover constraint pelo nome
ALTER TABLE produto DROP CONSTRAINT chk_preco;

DROP TABLE & TRUNCATE

DROP TABLE

Remove a tabela inteira (estrutura + dados).

-- Falha se houver FKs apontando
DROP TABLE departamento;

-- Remove tabela e todas as FKs dependentes
DROP TABLE departamento CASCADE;

-- Só remove se não houver dependências
DROP TABLE departamento RESTRICT;

TRUNCATE TABLE

Remove todos os dados mas mantém a estrutura da tabela. Mais rápido que DELETE.

TRUNCATE TABLE pedido;

-- Com CASCADE para tabelas dependentes
TRUNCATE TABLE cliente CASCADE;

Diferente de DELETE: não gera log de cada linha, reseta sequências.

Ordem importa!

Criar: tabelas referenciadas primeiro

① departamento
② professor (FK → departamento)
③ disciplina (FK → professor)

Quem é referenciado deve existir antes

Excluir: tabelas dependentes primeiro

① disciplina
② professor
③ departamento

Ou use DROP ... CASCADE (cuidado!)

Exercício — Laboratório

Evolução de schema no DB Fiddle

Usando as tabelas criadas na Aula 5 (departamento, professor, disciplina), execute as alterações abaixo no DB Fiddle.

① Alterações

Adicione coluna email (UNIQUE) em professor. Adicione CHECK em disciplina para créditos entre 1 e 10. Renomeie a coluna "nome" de departamento para "nome_depto".

② DROP + recriação

Remova a tabela disciplina (CASCADE). Recrie-a com uma coluna extra carga_horaria (INTEGER, NOT NULL, DEFAULT 60).

Próxima Aula — 12/05 (Ter)

DML
INSERT, UPDATE & DELETE