Construtor e Formatador SQL
Monte queries clicando nos comandos, adapte ao seu banco e formate
Clique em um comando para inseri-lo no editor, na posição do cursor.
// O resultado aparecerá aqui...
Ajuda: SQL
Como usar esta ferramenta
- 1. Escolha o dialeto do seu banco (SQL padrão, PostgreSQL, MySQL/MariaDB ou SQL Server). Os comandos se adaptam ao dialeto escolhido.
- 2. Clique em uma categoria e depois no comando desejado: ele é inserido no editor na posição do cursor.
- 3. Troque os nomes de exemplo (clientes, pedidos, id, nome...) pelos nomes das suas tabelas e colunas.
- 4. Clique em Formatar SQL para organizar a indentação e deixar as palavras-chave em maiúsculas.
- 5. Copie o resultado e execute no seu banco. Use a busca para achar um comando pelo nome (ex.: "join", "índice").
- A ferramenta não se conecta a nenhum banco: nada é executado nem enviado para servidor.
Tipos de comando SQL
| Grupo | Para que serve | Comandos |
|---|---|---|
| DQL | Consultar dados | SELECT |
| DML | Manipular dados | INSERT, UPDATE, DELETE, MERGE |
| DDL | Definir estrutura | CREATE, ALTER, DROP, TRUNCATE |
| DCL | Controlar acesso | GRANT, REVOKE |
| TCL | Controlar transações | BEGIN, COMMIT, ROLLBACK, SAVEPOINT |
Ordem de escrita x ordem de execução do SELECT
Você escreve o SELECT numa ordem, mas o banco executa em outra. Por isso um apelido criado no SELECT não pode ser usado no WHERE, mas pode no ORDER BY.
| Ordem de execução | Cláusula | O que faz |
|---|---|---|
| 1 | FROM / JOIN | Monta o conjunto de linhas |
| 2 | WHERE | Filtra as linhas |
| 3 | GROUP BY | Agrupa |
| 4 | HAVING | Filtra os grupos |
| 5 | SELECT | Escolhe/calcula as colunas |
| 6 | DISTINCT | Remove duplicados |
| 7 | ORDER BY | Ordena |
| 8 | LIMIT / OFFSET / TOP | Limita o resultado |
Tipos de JOIN
| JOIN | Retorna |
|---|---|
| INNER JOIN | Só linhas com correspondência nas duas tabelas |
| LEFT JOIN | Todas da esquerda + correspondentes da direita (ou NULL) |
| RIGHT JOIN | Todas da direita + correspondentes da esquerda (ou NULL) |
| FULL OUTER JOIN | Todas das duas tabelas |
| CROSS JOIN | Todas as combinações possíveis |
| SELF JOIN | A tabela com ela mesma (hierarquias) |
Diferenças entre dialetos
| Recurso | PostgreSQL | MySQL / MariaDB | SQL Server |
|---|---|---|---|
| Limitar linhas | LIMIT 10 | LIMIT 10 | TOP 10 / OFFSET FETCH |
| Autoincremento | GENERATED AS IDENTITY | AUTO_INCREMENT | IDENTITY(1,1) |
| Concatenar | a || b | CONCAT(a, b) | CONCAT(a, b) / a + b |
| Data atual | NOW() | NOW() | GETDATE() |
| Upsert | ON CONFLICT | ON DUPLICATE KEY UPDATE | MERGE |
| Texto sem acento/maiúscula | ILIKE | collation _ci | collation CI |
| Booleano | BOOLEAN | BOOLEAN (TINYINT) | BIT |
| Delimitar nomes | "nome" | `nome` | [nome] |
Boas práticas e segurança
- Sempre use WHERE em UPDATE e DELETE. Antes de executar, rode um SELECT com o mesmo WHERE para ver o que será afetado.
- Em alterações importantes, use transação (BEGIN ... COMMIT) para poder dar ROLLBACK se algo der errado.
- Evite SELECT * em sistemas: liste as colunas. É mais rápido e não quebra se a tabela mudar.
- Crie índices nas colunas usadas em WHERE, JOIN e ORDER BY. Use EXPLAIN para conferir.
- Nunca monte SQL concatenando texto digitado pelo usuário: use parâmetros (prepared statements) para evitar SQL Injection.
- Guarde datas em colunas de data (DATE/TIMESTAMP), não em texto, e valores monetários em DECIMAL/NUMERIC, nunca em FLOAT.
- Faça backup antes de DROP, TRUNCATE ou alterações de estrutura em produção.