Formateador y Validador de SQL - Formatear Consultas SQL en Línea Gratis
Formateador y validador de SQL gratuito. Formatee SQL automáticamente con sangría y capitalización adecuadas. Verifique errores de sintaxis al instante. Funciona con MySQL, PostgreSQL, SQL Server, Oracle.
Formateador y Validador de SQL
Formatee y valide consultas SQL con sangría automática, capitalización de palabras clave y detección de errores de sintaxis.
Documentación
¿Qué es un formateador y validador de SQL?
Un formateador de SQL es una herramienta que reescribe una consulta SQL con espaciado, saltos de línea y palabras clave en mayúsculas coherentes, para que sea más fácil de leer. Un validador de SQL comprueba esa misma consulta en busca de errores estructurales, como una comilla sin cerrar o un paréntesis que falta, sin conectarse a una base de datos. Esta herramienta hace ambas cosas. Se ejecuta íntegramente en el navegador, por lo que el texto de la consulta nunca se envía a un servidor.
Cómo dar formato a una consulta SQL
- Pegue o escriba una consulta SQL en el cuadro de entrada.
- La versión con formato aparece automáticamente a la derecha, sin necesidad de pulsar ningún botón.
- Los errores de validación aparecen en una lista debajo de la salida.
- Un botón de copia envía la consulta con formato al portapapeles.
Reglas de formato de SQL
Uso de mayúsculas en las palabras clave
El formateador convierte en mayúsculas una lista fija de palabras clave de SQL dondequiera que aparezcan fuera de una cadena o un identificador entre comillas. La lista incluye las cláusulas principales (SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT, OFFSET), las palabras de unión (JOIN, LEFT, RIGHT, INNER, OUTER, FULL, CROSS, NATURAL, ON, USING), los operadores de conjuntos (UNION, INTERSECT, EXCEPT), los tipos de instrucción (INSERT, UPDATE, DELETE, CREATE, ALTER, DROP) y los operadores y conectores habituales (AND, OR, NOT, IN, BETWEEN, LIKE, AS, CASE, WHEN, THEN, ELSE, END, ALL, DISTINCT, VALUES, SET y algunos más).
Algunas palabras que parecen palabras clave se dejan tal como se escribieron. Las funciones de agregación, como COUNT, SUM y AVG, no están en la lista, por lo que count(*) permanece en minúsculas si se escribió así. Las palabras que indican la dirección de ordenación, ASC y DESC, y los literales independientes TRUE, FALSE y NULL también se dejan sin cambios. El texto dentro de un literal de cadena ('...'), un identificador entre comillas ("...", `...` o [...]) o un comentario nunca se modifica, sin importar lo que contenga.
Saltos de línea y sangría
Cada cláusula principal comienza en una línea nueva, en el margen izquierdo: SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT y OFFSET. Una unión comienza en una línea nueva como una sola unidad, por lo que LEFT JOIN, FULL OUTER JOIN y CROSS JOIN permanecen juntas en lugar de dividirse en dos líneas. UNION y UNION ALL tienen una línea en blanco encima y debajo, lo que separa las consultas que combinan. CASE y END comienzan en una línea nueva, mientras que WHEN, THEN y ELSE comienzan en una línea con sangría. Cada coma también comienza una línea nueva, por lo que una lista de columnas en SELECT o GROUP BY queda con una columna por línea.
La sangría solo aparece dentro de paréntesis. El contenido de una subconsulta o de una expresión agrupada lleva dos espacios de sangría por cada nivel de anidamiento. Una consulta sin paréntesis —la mayoría de las consultas habituales— se formatea con todas las cláusulas alineadas con el margen izquierdo y sin ninguna sangría.
Ejemplo: antes y después del formato
Antes:
1select id, first_name, last_name, email from customers where status = 'active' order by last_name, first_name;
2Después:
1SELECT id,
2first_name,
3last_name,
4email
5FROM customers
6WHERE status = 'active'
7ORDER BY last_name,
8first_name;
9Todas las palabras clave están en mayúsculas y cada cláusula y columna ocupa su propia línea. Como la consulta no tiene paréntesis, ninguna línea lleva sangría.
Los paréntesis cambian esto. Al dar formato a (select count(*) from employees e where e.department_id = d.id) como parte de una consulta más grande, SELECT, FROM y WHERE internos llevan dos espacios de sangría, y count permanece en minúsculas porque es un nombre de función, no una palabra clave incluida en la lista.
Qué comprueba el validador de SQL
El validador busca problemas estructurales sin conectarse a una base de datos:
- Comillas, corchetes y comentarios sin cerrar. Una comilla simple (
'), comilla doble ("), comilla invertida (`), corchete ([) o comentario de bloque (/*) que se abre pero nunca se cierra. - Paréntesis no equilibrados. El número de
(y)fuera de cadenas y comentarios debe coincidir. - Subconsultas sin paréntesis. Un segundo
SELECTsituado fuera de cualquier paréntesis, comoSELECT * FROM SELECT id FROM t. Dos consultas unidas por un operador de conjuntos (UNION,UNION ALL,INTERSECT,EXCEPT) no se señalan, porque esos operandos no necesitan paréntesis. Tampoco se señalan dos instrucciones separadas por un punto y coma. WHEREque comienza conANDoOR. Un conector inicial sin nada delante.JOINsin una condición correspondiente. UnJOINnecesita una cláusulaONoUSING.CROSS JOINyNATURAL JOINestán exentos, ya que no llevan ninguna.GROUP BYuORDER BYvacíos. La palabra clave de la cláusula aparece sin columnas después, al final de la consulta.- Una condición
WHEREincompleta. Una comparación inconclusa, comoWHERE status =sin ningún valor, o unWHEREaislado sin nada después, al final de la consulta. - Un
SELECTsinFROM. Solo se señala cuando la lista de selección contiene nombres de columnas simples. Una expresión, una llamada a función, un literal o una función que devuelve un valor, escrita sin paréntesis, comoCURRENT_DATE, es válida por sí sola, por lo queSELECT 1 + 1ySELECT CURRENT_DATEno se señalan. - Orden de las cláusulas. Se realizan dos comprobaciones específicas:
GROUP BYno debe aparecer antes deWHERE, yORDER BYno debe aparecer antes deGROUP BY. Estas comprobaciones se realizan en el nivel superior de la consulta, ignorando lo que haya dentro de una subconsulta.
Qué no comprueba
El validador no sabe si las tablas o columnas existen realmente, si las columnas combinadas tienen tipos compatibles ni cómo se ejecutará una consulta. Tampoco señala todas las reglas que aplica una base de datos real. Dos ejemplos: se acepta HAVING usado sin GROUP BY, porque agrupar todo el resultado en un único grupo implícito es válido en SQL, por lo que el validador no genera ningún error. Del mismo modo, no comprueba si todas las columnas no agregadas de la lista SELECT también aparecen en GROUP BY; esa regla existe en la mayoría de las bases de datos, pero esta herramienta no la comprueba. Tampoco se señala la ausencia de un punto y coma final, ya que el punto y coma es un separador de instrucciones, no parte de una consulta individual.
Ejemplo: errores que detecta el validador
1SELECT id FROM orders
2JOIN users
3WHERE status =
4Esta consulta produce dos errores:
- "Falta la condición ON en una o más instrucciones JOIN." —
JOIN usersno tiene una cláusulaONniUSING. - "La condición WHERE está incompleta." —
status =no tiene ningún valor después del signo igual.
Preguntas frecuentes
¿Esta herramienta funciona con MySQL, PostgreSQL, SQL Server y Oracle?
Gestiona la sintaxis básica de SQL compartida por esas bases de datos: SELECT, JOIN, WHERE, GROUP BY y cláusulas similares. La sintaxis específica de una base de datos, como los literales de matrices de PostgreSQL o los bloques procedurales de T-SQL, no hará que el formateador falle, pero es posible que no reciba un tratamiento especial.
¿Se envía la consulta SQL a un servidor?
No. El formato y la validación se ejecutan en el navegador. El texto de la consulta no se transmite a ningún sitio.
¿Convierte en mayúsculas nombres de funciones como COUNT, SUM y AVG?
No. Solo se convierten en mayúsculas las palabras clave de las cláusulas, las palabras de unión y una lista fija de operadores. Los nombres de funciones, como count, sum y avg, y las palabras asc, desc, true, false y null se dejan exactamente como se escribieron.
¿El validador señala HAVING usado sin GROUP BY?
No. Una cláusula HAVING sin GROUP BY agrupa todo el resultado en un único grupo, lo cual es válido en SQL según la norma ISO/IEC 9075, por lo que el validador no lo considera un error.
¿Puede el validador detectar todos los errores de SQL?
No. Comprueba la estructura —paréntesis, comillas, algunas reglas sobre el orden de las cláusulas y ciertos problemas lógicos habituales, como un JOIN sin condición—. No comprueba los nombres de tablas o columnas, los tipos de datos ni el rendimiento de la consulta. Para confirmar que una consulta se ejecuta correctamente, sigue siendo necesaria una conexión real con una base de datos.
¿El formato cambia la forma en que se ejecuta una consulta?
No. El formato solo cambia el espacio en blanco y las mayúsculas de las palabras clave sin comillas. Todo lo que está dentro de una cadena, un identificador entre comillas o un comentario se copia sin cambios, por lo que la consulta significa exactamente lo mismo que antes.