Formateador de SQL
FormateoFormatea SQL en muchos dialectos (MySQL, PostgreSQL, T-SQL y más) con sql-formatter, o minifícalo.
En esta página
¿Qué es un formateador de SQL?#
Un formateador de SQL convierte una consulta escrita para el motor —a menudo apiñada en una sola línea, o pegada de un log con sangría aleatoria— en una consulta escrita para un humano. Las palabras clave van en sus propias líneas, las columnas se alinean, las subconsultas entran un nivel y una cláusula WHERE con cinco condiciones AND deja de ser una pared de texto. La operación inversa, minificar, colapsa todos esos espacios de vuelta a una sola línea para cuando una consulta tiene que viajar por un archivo de configuración o un parámetro de API.
Lo que hace peliagudo el formateo de SQL es que cada base de datos tiene su propio dialecto. Una consulta de Postgres con RETURNING, una de MySQL con identificadores entre comillas invertidas, una de SQL Server con TOP (n) y una de BigQuery con literales struct y array se ven distintas, y un formateador que finja que existe un SQL universal equivocará sutilmente los casos límite. Esta página lo gestiona usando sql-formatter con selección explícita de dialecto: SQL estándar, MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2 y Trino. Tú eliges el que tu base de datos habla de verdad y el formateador analiza en consecuencia.
Cómo usarlo#
- Pega tu consulta en el panel SQL de la izquierda, o pulsa Ejemplo para cargar una consulta breve.
- Elige un Dialecto en la barra de herramientas: el dialecto de tu base de datos. El
sqlpor defecto es un sabor genérico seguro; cambia apostgresql,mysql,tsqly demás cuando la consulta usa sintaxis específica del dialecto. - Elige una Sangría: 2, 4 o tab. Cuatro espacios es común para SQL porque mantiene legibles las listas largas de columnas.
- Pulsa una acción:
- Formatear: resangra, parte la consulta en líneas lógicas y pone las palabras clave en mayúsculas por defecto, así
SELECT,FROMyWHEREdestacan sobre los identificadores. - Minificar: elimina los comentarios de línea
--y de bloque/* */, y luego colapsa cada secuencia de espacios en blanco a un solo espacio. Los saltos de línea se convierten en espacios, lo cual es seguro para SQL porque las sentencias terminan en punto y coma, no en salto de línea.
- Formatear: resangra, parte la consulta en líneas lógicas y pone las palabras clave en mayúsculas por defecto, así
- Lee el resultado en el panel de Salida. Usa Copiar para llevártelo; Limpiar reinicia ambos paneles.
Características principales#
- Doce dialectos. MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2, Trino, además de SQL estándar genérico. La gramática del formateador cambia para coincidir, así las palabras clave específicas del dialecto se colocan correctamente.
- Caja de palabras clave. Formatear pone las palabras clave en mayúsculas por defecto (así
selectse convierte enSELECT) y deja tus identificadores intactos. Es puramente cosmético y nunca cambia lo que hace la consulta. - Minificado seguro. Los espacios colapsan a espacios simples; SQL se termina en punto y coma, así que unir líneas no puede fusionar dos sentencias como ocurre en lenguajes sensibles al salto de línea.
- Eliminación de comentarios al minificar. Tanto los comentarios
--como/* */se eliminan al minificar, mantiendo el payload apretado. - Dos paneles, listos para copiar, totalmente lado del cliente. El formateador se ejecuta en tu navegador; la consulta no se envía a ninguna parte.
Ejemplo detallado#
Una consulta de informes volcada en una línea, con un comentario, un join y un GROUP BY:
Entrada:
select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc
Elige postgresql como dialecto y luego pulsa Formatear con 2 espacios:
SELECT
u.id,
u.name,
count(o.id) AS orders
FROM
users u
JOIN orders o ON o.user_id = u.id
WHERE
u.status = 'active'
AND o.created_at >= '2026-01-01'
GROUP BY
u.id,
u.name
ORDER BY
orders DESC
Cada cláusula tiene ahora su propia línea, la condición del join es visible y los dos predicados del WHERE están separados, así puedes ver de un vistazo que el filtro de fecha es >=, no >. La caja de palabras clave pasó a mayúsculas mientras los nombres de columna se quedaron exactamente como estaban escritos. Pulsa Minificar sobre la misma entrada y recuperas la forma de una línea, lista para pegar en un archivo de configuración o un parámetro ?query=:
select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc
Preguntas frecuentes#
¿Qué dialecto debería elegir?#
Coincide con tu base de datos. Si no estás seguro, el sql genérico es un punto de partida razonable y maneja bien las cláusulas habituales. Cambia al dialecto específico cuando la consulta use sintaxis que la gramática genérica no espera: RETURNING (Postgres), identificadores con comillas invertidas (MySQL), TOP (n) (T-SQL) o literales struct/array (BigQuery). Elegir el dialecto equivocado suele seguir formateando, pero puede colocar mal una palabra clave exótica.
¿Por qué Formatear pone las palabras clave en mayúsculas pero no mis nombres de columna?#
Porque poner las palabras clave en mayúsculas es una convención de legibilidad que nunca cambia el significado —SELECT y select son idénticos para el motor—, mientras que tus identificadores pueden ser sensibles a mayúsculas (Postgres pasa los identificadores sin comillas a minúsculas; MySQL distingue mayúsculas en algunas plataformas). Dejar los identificadores intactos es el valor por defecto seguro. Si prefieres palabras clave en minúsculas, formatea la consulta y luego haz un repaso a mano.
¿Minificar preserva los scripts multi-sentencia?#
Colapsa cada secuencia de espacios en blanco a un solo espacio, incluidos los saltos de línea, pero conserva los puntos y coma exactamente donde estaban. Así SELECT 1; SELECT 2; sigue siendo dos sentencias separadas por ;. Dicho eso, para un script de migración largo con muchas sentencias, una forma minificada de una sola línea es difícil de leer y de depurar: minificar le conviene a una consulta única o a un lote corto.
¿Mi consulta se sube a algún sitio?#
No. El formateador va empaquetado en la página y se ejecuta localmente en tu navegador. Nada de tu SQL —ni los nombres de tabla, ni los literales— sale de la pestaña.