SQL Avançado

Autor

Douglas Braga

O SQL padrão vai muito além das consultas básicas. Este capítulo cobre as extensões que tornam o SQL uma linguagem completa para engenharia de sistemas — desde integrar o banco a programas Python até automatizar regras de negócio com triggers.

Tópicos

Seção O que você vai aprender
Acesso via Python Conectar um programa Python ao PostgreSQL, executar consultas com segurança e controlar transações
Funções e Procedimentos Armazenar lógica de negócio no próprio banco usando PL/pgSQL
Triggers Executar ações automaticamente em resposta a INSERT, UPDATE ou DELETE
Consultas Recursivas Percorrer hierarquias e calcular fechamentos transitivos com WITH RECURSIVE
Agregação Avançada Funções de janela (RANK, DENSE_RANK, ROW_NUMBER), ROLLUP e CUBE para análise multidimensional

Por Que SQL Precisa de Extensões?

O SQL puro é expressivo para consultas declarativas, mas tem limitações naturais:

  • Não suporta iteração arbitrária — loops e lógica condicional exigem PL/pgSQL ou outra linguagem hospedeira.
  • Não interage com o usuário — formulários, relatórios e interfaces precisam de uma aplicação.
  • Não executa efeitos colaterais automaticamente — registrar auditoria, enviar e-mails ou manter totais derivados requer triggers ou lógica na aplicação.

A solução padrão é combinar SQL com uma linguagem de programação: o SQL cuida dos dados; a linguagem cuida da lógica de apresentação e controle de fluxo. O banco, por sua vez, pode encapsular regras complexas em funções e triggers — próximas aos dados e independentes de qualquer linguagem cliente.

Os exemplos deste capítulo continuam usando o banco da UnDF. Novos objetos criados ao longo do capítulo (tabelas de log, funções, triggers) usam nomes prefixados com fn_, trg_ ou log_ para fácil identificação.