Exercícios
Pratique com tarefas curtas. Sempre explicando o porquê e o como fazer.
Iniciante
- Modele uma tabela
clientecom PK, nome e email único. Por quê: integridade. Como: PK (id) e UNIQUE (email). - Insira 3 clientes e consulte apenas os que têm email. Por quê: filtragem. Como:
WHERE email IS NOT NULL. - Crie a tabela
pedidocom FK paracliente. Por quê: relação. Como:FOREIGN KEY.
CREATE TABLE cliente (
id SERIAL PRIMARY KEY,
nome TEXT NOT NULL,
email TEXT UNIQUE
);
CREATE TABLE pedido (
id SERIAL PRIMARY KEY,
cliente_id INT REFERENCES cliente(id),
total NUMERIC(10,2) NOT NULL
);
Técnico
- Crie índice em
pedido(cliente_id)e compare EXPLAIN antes/depois. Por quê: acelerar JOIN/filtro. Como:CREATE INDEX. - Implemente transação de transferência entre contas com rollback em caso de erro. Por quê: atomicidade. Como:
BEGIN/COMMIT/ROLLBACK. - Projete consulta com agregação (total por cliente) e ordene. Por quê: relatórios. Como:
GROUP BY.
CREATE INDEX idx_pedido_cliente ON pedido (cliente_id);
EXPLAIN ANALYZE SELECT * FROM pedido WHERE cliente_id = 1;
-- Agregação
SELECT c.nome, SUM(p.total) AS total
FROM cliente c JOIN pedido p ON p.cliente_id = c.id
GROUP BY c.nome
ORDER BY total DESC;
Avançado
- Particione
pedidopor faixa de data. Por quê: manutenção/performance. Como: tabelas particionadas. - Implemente um mini‑ETL: exporte
pedidodiário e gere resumo (OLAP) em tabela colunar/sumarizada. Por quê: separar OLTP/OLAP. Como: job diário + tabela agregada. - Elabore política de retenção (ex.: 18 meses). Por quê: custo/lei. Como:
DELETE/ARCHIVEprogramado.
Dica: use o arquivo docs/dados.txt como fonte simples para popular tabelas em seus testes.