Un formateador SQL para que tus consultas se lean bien
Una consulta escrita de corrido en una sola línea funciona, pero cuesta leerla, y es lo que suele salir de un registro de errores o del código de una aplicación. Formatear SQL consiste en separar las cláusulas, alinearlas y aplicar sangría para ver enseguida qué columnas se leen, qué tablas se unen y qué filtros se aplican. Un formato común también facilita la revisión de código: al comparar dos versiones solo aparecen los cambios reales.
Cómo se usa
- Pega una o varias consultas en «Tu consulta SQL» o abre un archivo .sql. «Ejemplo» carga una consulta con JOIN, subconsulta y CASE.
- Elige el «Dialecto»: SQL estándar, MySQL / MariaDB, PostgreSQL, SQLite o SQL Server.
- Ajusta las «Palabras clave» (En MAYÚSCULAS, En minúsculas, Sin cambios), la «Sangría», las «Columnas» (Una por línea o En una sola línea) y las «Comas» (Al final o Al principio de la línea).
- Pulsa «Formatear» o «Minificar» y después «Copiar» o «Descargar (.sql)».
Ejemplo y convenciones
Tomemos select id, nombre from clientes where ciudad = 'Sevilla' and activo = 1 order by nombre;, que ocupa 88 caracteres. Con los ajustes por defecto, la herramienta devuelve 10 líneas: SELECT solo, después id, y nombre con dos espacios de sangría, FROM y clientes, WHERE seguido de ciudad = 'Sevilla', luego AND activo = 1 en su propia línea y, por último, ORDER BY y nombre;. Minificada, la misma consulta cabe en 83 caracteres: SELECT id,nombre FROM clientes WHERE ciudad='Sevilla' AND activo=1 ORDER BY nombre;.
Estas reglas siguen las convenciones más extendidas:
- palabras clave en mayúsculas y nombres de tablas y columnas tal como los escribiste;
- una cláusula principal por línea: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, UNION, INSERT INTO, VALUES, UPDATE, SET, DELETE FROM, CREATE TABLE;
- cada JOIN abre una línea con su condición ON, y cada AND u OR de un filtro pasa a la línea siguiente, salvo el de un BETWEEN;
- una subconsulta lleva un nivel más de sangría, y un CASE coloca cada WHEN y el ELSE en su propia línea.
Lo que la herramienta nunca toca
El analizador reconoce las cadenas entre comillas simples, los identificadores entre comillas dobles, acentos graves o corchetes, los comentarios -- y /* */, los números, los operadores y los parámetros (?, :nombre, $1). El contenido de cadenas y comentarios se copia carácter por carácter: en WHERE nota = 'select from where' las tres palabras siguen en minúsculas.
Los dialectos se distinguen sobre todo por cómo citan los nombres: acentos graves y comentarios # en MySQL, corchetes como [Nombre cliente] en SQL Server, cadenas $$…$$ y operador :: en PostgreSQL.
Si una comilla, un comentario o un paréntesis quedan sin cerrar, la herramienta formatea igualmente e indica la línea y la columna del problema. No es una validación completa: un error en el nombre de una tabla o una coma olvidada pasan desapercibidos, y nunca se ejecuta nada en una base de datos.
Preguntas frecuentes
¿Puede el formato cambiar el resultado de mi consulta?
No. Solo cambian los espacios y las mayúsculas de las palabras clave, que a SQL le dan igual. Ojo con una columna sin comillas que se llame como una palabra clave (date, text, key): recibe el mismo tratamiento. Ponla entre comillas o elige «Sin cambios».
¿Puedo formatear un script de miles de líneas?
Sí. Las consultas separadas por «;» se tratan una tras otra y quedan separadas por una línea en blanco. El cálculo se hace en segundo plano sin bloquear la página: 5000 líneas tardan menos de un segundo en un ordenador reciente. Se aceptan archivos de hasta 20 MB.
¿Minificar y volver a formatear da el mismo resultado?
Sí, con los mismos ajustes, porque el formato solo depende de la secuencia de piezas. La minificación conserva los comentarios -- y añade un salto de línea detrás de cada uno para que no se traguen el resto de la consulta.