🗄️ Formateador SQL
Embellece o minifica consultas SQL con indentación adecuada. Soporta SELECT / INSERT / UPDATE / DELETE / JOIN / WITH.
📖 Dónde se suele tropezar
Formatea SQL para leerlo mejor, o minifícalo. Todo se ejecuta en el navegador y la consulta no se transmite. Sólo cambia la disposición; no valida la sintaxis: una consulta que no funciona se formatea igual, y las construcciones propias de MySQL, PostgreSQL o SQL Server pueden quedar con una disposición extraña. Considera ejecutarla parte del mismo paso.
| Caso | Qué ocurre | Qué hacer |
|---|---|---|
| El resultado cambió tras formatear | La causa habitual es cómo se tratan los comentarios y los literales de texto. Un comentario -- llega hasta el final de la línea, así que cambiar dónde se corta la línea cambia qué queda comentado. En cuanto un formateador parte una línea en varias, una condición viva puede desaparecer dentro de un comentario, o salirse de él. Del mismo modo, comprimir espacios dentro de un literal cambia lo que casa un LIKE. |
Escribe los comentarios como /* … */ en vez de --: la extensión es explícita, así que reorganizar las líneas no puede cambiar el significado. Para asegurarte de que nada se movió, compara el plan de EXPLAIN antes y después. Si el plan es idéntico, las consultas son la misma para el optimizador. |
| Pegar la consulta formateada directamente en el código | Cuando pegas el SQL ya legible en el código como cadena, interpolar valores por concatenación es inyección SQL. Mientras formateas trabajas con una consulta que lleva valores literales, y eso hace que convertirla en "WHERE id = " + id sea el camino de menor resistencia. Pasar una consulta por un formateador es justo el momento en que suele colarse este error. |
Usa siempre marcadores para los valores: WHERE id = ? o WHERE id = :id, con el valor entregado al driver. Lo que los marcadores no cubren son nombres de tabla, nombres de columna y la dirección del ORDER BY; resuélvelos contra una lista blanca, admitiendo sólo ASC o DESC. Y toma la costumbre de revisar la consulta formateada en busca de literales olvidados mientras aún es legible. |
| Formatear no acelera una consulta lenta | Como es obvio, formatear no afecta en absoluto al plan de ejecución. Puede hacerte visible la causa, pero eso beneficia a quien lee, no a la base de datos. La mayoría del SQL lento lo es porque no se está usando un índice, algo que no tiene nada que ver con lo pulcra que esté escrita la consulta. | Ejecuta EXPLAIN ANALYZE y mira cuántas filas se leyeron de verdad. Escanear un millón para devolver diez te dice dónde está el problema. Un culpable frecuente es envolver la columna en una función dentro del WHERE —WHERE DATE(created_at) = ...—, que anula el índice; reescribirlo como rango, WHERE created_at >= ... AND created_at < ..., lo recupera. Cambiar SELECT * por sólo las columnas necesarias también puede activar un índice cubridor. |
Si buscas un estilo uniforme en el equipo, mete un linter en el repositorio en vez de formatear aquí cada vez. Una herramienta como sqlfluff cubre no sólo la disposición sino convenciones de nombres y construcciones peligrosas: SELECT *, un UPDATE sin WHERE. Ejecútalo en CI sobre tus migraciones y los comentarios de revisión pasan de la legibilidad al diseño. Esta página se gana su sitio cuando alguien te pasa una consulta ilegible y la necesitas legible una vez, ahora mismo.
📖 Cómo usar
-
1
Configurar acción y opcionesElige embellecer o minificar, y configura sangría y mayúsculas/minúsculas de palabras clave.
-
2
Ingresar SQLPega tu consulta SQL en el campo izquierdo. Usa el botón Ejemplo para una consulta compleja.
-
3
Copiar el resultadoEl SQL formateado o minificado aparece a la derecha. Haz clic en Copiar para copiarlo.
❓ Preguntas frecuentes
¿Qué dialectos SQL están soportados?
¿Se conservan los comentarios?
¿Se modifican los literales de cadena?
🐛 ¿Encontró un problema con esta herramienta?
Gratis, sin registro. Incluso solo los pasos para reproducir ayudan. Los informes van directamente al operador y se usan para corregir.
¡Gracias por tu reporte!
Tu reporte llegó al operador y se usará para mejorar.