~/VibeHandbook
PDF grátis

Linguagens

iso.org

SQL

O que é

(Structured Query Language, ou Linguagem de Consulta Estruturada) é a linguagem padrão para consultar e manipular bancos de dados relacionais como PostgreSQL, MySQL, SQLite e SQL Server. Pense em pedir um prato num restaurante: você diz o que quer no prato, não como cozinhá-lo. O SQL funciona da mesma forma. Você descreve o resultado que quer, e o motor do banco de dados descobre como buscá-lo de forma eficiente. Isso se chama ser declarativo.

Pontos fortes

  • Declarativo: você diz o que quer, não como percorrer as linhas em loop.
  • Comprovado há décadas, com motores maduros e fortes garantias de consistência.
  • Operações baseadas em conjuntos (joins, agregações, funções de janela) são concisas e rápidas.
  • Transferível — o SQL básico funciona na maioria dos bancos de dados relacionais.

Desvantagens

  • Os dialetos variam (Postgres vs. MySQL vs. SQLite), então a portabilidade não é total.
  • É fácil escrever consultas lentas; o desempenho depende de índices e planos de execução.
  • Não é uma linguagem de propósito geral — controle de fluxo e lógica são desajeitados.
  • Mudanças de esquema (migrations) exigem cuidado em produção.

Quando usar

Recorra ao SQL sempre que seus dados forem relacionais e consultados por estrutura: relatórios, análises, back-ends de aplicações e qualquer sistema em que integridade de dados e joins importem. É a ferramenta certa para agregações e perguntas pontuais sobre dados estruturados, e combina com quase todas as linguagens de back-end.

Encaixe no vibe coding

Os assistentes de IA são fortes em SQL e conseguem traduzir perguntas em português simples para consultas surpreendentemente bem, mas podem chutar o seu esquema. Oriente a IA colando as definições reais das tabelas (instruções CREATE TABLE) e nomeando seu banco de dados específico (Postgres, SQLite etc.) para que ela use o dialeto e as funções corretas. Peça para ela explicar a consulta e sugerir índices para as mais lentas. Sempre peça que ela parametrize a entrada do usuário em vez de colar os valores diretamente no texto da consulta. Imagine um campo de formulário em que alguém digita não um nome, mas um comando; se você colar esse texto direto na sua consulta, o banco de dados pode executá-lo. Manter a entrada do usuário separada evita isso — um ataque chamado injeção de SQL (SQL injection). Verifique as consultas geradas numa amostra pequena antes de rodá-las em produção.

SELECT u.name, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE u.active = true
GROUP BY u.name
HAVING COUNT(o.id) > 5
ORDER BY order_count DESC;