Geração de query SQL

Descreve em português, IA monta SQL pra você

As cilada de escrever SQL

JOIN escrito errado, subquery aninhado e fica tonto

3 tabela dando JOIN, quando roda resultado tem 10 vezes mais linha que esperava — qual JOIN tá errado? Fica 30 minuto procurando, no final era relação many-to-many que não tratou certo.

Subquery 3 aninhada, escreve sozinho já não entende mais. Colega pergunta "esse SQL faz o quê", você olha 2 minuto e fala "deixa eu pensar".

Ainda tem problema de performance: um query roda 30 segundo, EXPLAIN não explica nada. Coloca índice, fica ainda mais lento? Que tá errado?

OpenClaw: entende a lógica de negócio, escreve SQL que funciona

Você fala em linguagem comum "busca pra cada usuário total gasto últimas 30 dia, ordena de maior pra menor gasto", OpenClaw gera SQL certo.

Não é só traduzir: pensa em relação entre tabela, volume de dado, índice existente, gera SQL que funciona e rápido.

Encontra query lento? Cola SQL + resultado EXPLAIN, ele diz onde tá gargalo, qual índice colocar, como reescrever mais rápido.Tipo ter um DBA ao lado respondendo sempre.

3 prompt de SQL, pega 90% do dia a dia

Do dia a dia ao otimização de performance, use quanto precisar.

Dia a dia: usuário novo últimas 30 dia agrupado por canal Comando ouro
Banco tem tabela assim:
- users (id, name, email, channel, created_at, status)
- user_profiles (user_id, age, gender, city)

Me escreve SQL:
1. Busca quantidade de usuário novo cada dia últimas 30 dia
2. Agrupa por canal de registro (channel)
3. Calcula também taxa de retenção no dia seguinte pra cada canal
4. Ordena por data mais novo primeiro

Banco é MySQL 8.0, tabela users tem cerca de 5 milhão linha.
Também sugere índice.
Padrão mais comum de dia a dia. Lembra de contar qual banco tá usando e quanto dado tem, SQL é diferente em cada banco (função de data muda), volume de dado muda estratégia de query.
Otimização de query lento: SQL que tá demorando 30 segundo Dica avançada
Esse SQL tá demorando 30 segundo, me otimiza:

[cola SQL que tá lento aqui]

Resultado de EXPLAIN:
[cola saída de EXPLAIN aqui]

Me analisa:
1. Gargalo tá onde (varredura completa? tabela temporária? ordenação de arquivo?)
2. Qual índice colocar (me manda comando CREATE INDEX)
3. Como reescrever SQL mais rápido (tem forma equivalente mas melhor?)
4. Estima tempo depois de otimizar

Banco: PostgreSQL 15, tabela tem uns 20 milhão linha.
Otimizar slow query deve mostrar resultado de EXPLAIN, só olhando SQL fica difícil achar gargalo. Não esquece de falar volume de dado — 100 linha e 20 milhão linha estratégia é completamente diferente.
Query complexa: análise de gasto de usuário Comando ouro
Banco tem 3 tabela:
- users (id, name, registered_at)
- orders (id, user_id, product_id, amount, created_at, status)
- products (id, name, category, brand)

Me escreve query:
1. Total gasto de cada usuário (só conta pedido pronto)
2. Categoria que usuário mais compra (se tiver empate pega primeiro)
3. Primeira e última data que usuário comprou
4. Só usuário que comprou esse último ano
5. Ordena por total gasto maior pra menor, tira Top 100

Banco: MySQL 8.0. Me escreve com CTE pra ficar legível.
Múltipla tabela + agregação + rank, query assim manual erra fácil. Deixa IA escrever com CTE, legibilidade fica muito melhor, depois muda requisito fica fácil.

Configuração de conexão banco

Deixa OpenClaw conectar no banco e rodar query (opcional, não precisa pra gerar SQL).

Configuração de conexão banco (.openclaw.yml)
# Conexão com banco de dado (opcional, depois pode rodar resultado direto)
database:
  type: mysql                 # mysql / postgresql / sqlite
  host: localhost
  port: 3306
  database: my_app
  user: readonly_user         # Recomenda muito usar conta que só lê!
  password_env: DB_PASSWORD   # Lê senha de variável, não escreve em aberto

  # Limite de segurança
  read_only: true             # Só SELECT, proíbe mudar dado
  max_rows: 10000             # Máximo de linha por query
  timeout: 30                 # Timeout de query em segundo

# Não precisa conectar banco, AI tira SQL pela descrição de tabela
# Só não consegue rodar resultado pra você validar
⚠️ Quando conecta banco em produção, usa conta de leitura só. Mesmo que OpenClaw tem limite de segurança, segurança dessa forma é melhor. Recomenda conectar em cópia de leitura, não banco principal.

Escrever SQL: OpenClaw vs ChatGPT

Os dois geram SQL, mas tem diferença importante.

OpenClaw
  • Consegue ler schema do seu banco, SQL gerado combina com tabela real
  • Conecta banco direto pra validar resultado do query (de conta leitura)
  • Guarda contexto: query anterior, relação de tabela, pergunta depois não precisa repetir
  • Roda local, estrutura de tabela e lógica de negócio não vaza
VS
ChatGPT
  • Só consegue gerar SQL pela descrição da tabela que você dá, muita suposição
  • Sem conseguir rodar SQL direto, certo ou errado testa lá
  • Janela de contexto tem limite, lógica de negócio complexa depois esquece
  • SQL gerado às vezes sintaxe certo mas lógica errado, difícil de rastrear

Caso real

Analista de dado: chefe pedindo extra in hora
3 da tarde, chefe avisa: "me busca ROI por canal últimas 3 mês, conta por semana, precisa 5 da tarde." Você não conhece muito relação dessas tabela, SQL na mão mesmo arriscado.
Jeito OpenClaw
Conta estrutura de tabela pro OpenClaw, fala requisito em linguagem comum, 2 minuto tem SQL. Conecta no banco, roda, resultado tá certo, ainda deixa IA explicar cada parte de SQL, aprendeu junto. 4 da tarde mandava, adiantava.
Jeito manual
Mexe em documentação procurando estrutura de tabela, escreve SQL, JOIN tá errado, roda e resultado bagunçado, fica 1 hora ajustando. Consegue acertar, mas depois nota que função de data tá errado. 5 da tarde não consegue entregar, chefe quer "mais meia hora".

Dica de SQL

💡 Quando deixa IA gerar SQL, sempre fala: qual banco usa (MySQL / PostgreSQL / SQLite), volume de dado tá quanto, qual índice já tem. Esses 3 informação direto toca na qualidade de SQL gerado.
🎯 Query complexa deixa IA escrever com CTE (cláusula WITH), não aninha subquery. CTE fica muito mais legível, depois que muda requisito não quebra a cabeça descasando.
🔒 Hábito bom: depois que IA gera SQL, coloca LIMIT 100 roda primeiro pra vê se tá certo, antes de rodar completo em tabela grande. Se fez JOIN de vária tabela, cuidado com produto cartesiano, banco pode capotar.
Esse caso foi útil pra você?