Formateador y embellecedor de SQL
Pega una consulta SQL larga o desordenada y obtenla bien indentada con mayúsculas o minúsculas coherentes en las palabras clave, o minifícala en una sola línea compacta. Elige el dialecto de tu base de datos para obtener resultados precisos. Tu SQL nunca sale de tu navegador.
Última actualización:
Cómo usar Formateador y embellecedor de SQL
- Pega tu SQL en el cuadro de la izquierda o pulsa Subir .sql para abrir un archivo.
- Elige el dialecto de tu base de datos para que se reconozcan sus comillas, operadores y palabras clave.
- Define el estilo: mayúsculas o minúsculas de las palabras clave, indentación y número de líneas en blanco entre consultas.
- Pulsa Formatear SQL. La consulta formateada aparece a la derecha y se actualiza mientras escribes.
- Pulsa Minificar para obtener una versión compacta en una línea y luego copia o descarga el resultado.
Convenciones de formato SQL
La mayoría de las guías de estilo de SQL, incluida la muy utilizada de Simon Holywell (sqlstyle.guide), coinciden en unos cuantos hábitos que facilitan leer y revisar las consultas:
- Una cláusula por línea: SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY y LIMIT empiezan cada una en una línea nueva, así ves la forma de la consulta de un vistazo.
- Una columna por línea en listas SELECT largas, lo que mantiene pequeñas las diferencias cuando se añade o se quita una columna.
- Indenta las subconsultas y los cuerpos de las CTE un nivel más que la instrucción que las rodea.
- Palabras clave en un mismo formato (normalmente mayúsculas) y nombres de tablas o columnas en snake_case.
- Joins explícitos: escribe
INNER JOIN … ONen lugar de enumerar tablas separadas por comas y unirlas en WHERE.
Diferencias de comillas y sintaxis entre dialectos
| Dialecto | Identificador entre comillas | Escapes en cadenas | Sintaxis destacada |
|---|---|---|---|
| SQL estándar | "name" | 'it''s' | FETCH FIRST n ROWS ONLY |
| MySQL / MariaDB | `name` | 'it\'s' o 'it''s' | LIMIT n, comentarios con #, DELIMITER en scripts |
| PostgreSQL | "name" | 'it''s', E'it\'s', $$it's$$ | Conversiones con ::, RETURNING, ILIKE |
| SQL Server (T-SQL) | [name] o "name" | 'it''s', N'…' para Unicode | TOP n, separador de lotes GO |
| Oracle PL/SQL | "NAME" | 'it''s', q'[it's]' | Bloques BEGIN … END;, ROWNUM |
| SQLite | "name", [name], `name` | 'it''s' | Tipado flexible, LIMIT n OFFSET m |
| BigQuery | `project.dataset.table` | 'it\'s', '''multi-line''' | STRUCT, ARRAY, QUALIFY |
| Snowflake | "name" | 'it''s', $$…$$ | QUALIFY, FLATTEN, rutas semiestructuradas con : |
Antes y después
Una consulta de una línea copiada de los registros de una aplicación:
select u.id,u.name,count(o.id) as orders from users u left join orders o on o.user_id=u.id where u.active=1 group by u.id,u.name having count(o.id)>5 order by orders desc
Después de formatearla con palabras clave en mayúsculas e indentación de 2 espacios:
SELECT
u.id,
u.name,
count(o.id) AS orders
FROM
users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE
u.active = 1
GROUP BY
u.id,
u.name
HAVING
count(o.id) > 5
ORDER BY
orders DESC
La lógica es idéntica, pero la agrupación, la condición del join y el filtro sobre el agregado ahora son evidentes, lo que hace la revisión y la depuración mucho más rápidas.
Consejos para consultas largas
- Prefiere las CTE al anidamiento profundo. Una cláusula
WITHda nombre a cada paso de la lógica, así la consulta se lee de arriba abajo en lugar de desde la subconsulta más interna hacia fuera. - Pon alias a todas las tablas de un join y antepón el alias a cada columna, para que nadie tenga que adivinar de dónde sale una columna.
- Comenta el porqué, no el qué. Un breve
-- excluir cuentas de pruebasobre un filtro explica una intención que el código no puede expresar. - Formatea antes de revisar. Pasar ambas versiones de una consulta por el mismo formateador convierte una comparación confusa en una clara que solo muestra los cambios reales.
Preguntas frecuentes
¿Por qué importa el dialecto?
Cada base de datos usa comillas y escapes distintos. MySQL usa acentos graves para los identificadores y permite escapes con barra invertida en las cadenas, T-SQL usa [corchetes], PostgreSQL tiene cadenas con $$ y conversiones con ::, y BigQuery permite cadenas con comillas triples. Elegir el dialecto correcto hace que el formateador las lea bien en lugar de mostrar un error.
¿El formateo cambia lo que hace mi consulta?
No. Solo cambian los espacios, los saltos de línea y, si lo eliges, las mayúsculas o minúsculas de las palabras clave. En SQL las palabras clave no distinguen entre mayúsculas y minúsculas. Las cadenas, los identificadores entre comillas y los comentarios se dejan exactamente como están.
¿Qué hace Minificar?
Elimina los comentarios y reduce todos los espacios fuera de cadenas e identificadores entre comillas a espacios simples, lo que da una consulta compacta en una línea, práctica para registros, cadenas de código o URL. Las sugerencias del optimizador (/*+ … */) y los comentarios de versión de MySQL (/*! … */) se conservan porque cambian el comportamiento.
¿Por qué obtengo un error de análisis?
El formateador necesita entender la estructura de tu consulta. Los errores suelen deberse a una comilla o un paréntesis que falta, a un dialecto incorrecto o a marcadores de plantilla como {{name}}. El mensaje muestra la línea y la columna donde se detuvo la lectura. Corrige ese punto o cambia de dialecto e inténtalo de nuevo.
¿Las palabras clave de SQL deben ir en mayúsculas?
Es una convención, no una regla. Las palabras clave en mayúsculas (SELECT, FROM, WHERE) facilitan distinguirlas de los nombres de tablas y columnas, por eso la mayoría de las guías de estilo las usan. Algunos equipos prefieren minúsculas para reducir el ruido visual; elige la que use tu equipo.
¿Mi consulta se envía a un servidor?
No. La biblioteca de formateo se ejecuta en tu navegador después de descargarse una vez desde un CDN público. Tu SQL, que puede contener nombres de tablas o datos, nunca se sube.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.