Saltar al contenido

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.

Introduzca una consulta SQL para ver el resultado formateado.
Calculadora de carga...
📚

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

  1. Pegue o escriba una consulta SQL en el cuadro de entrada.
  2. La versión con formato aparece automáticamente a la derecha, sin necesidad de pulsar ningún botón.
  3. Los errores de validación aparecen en una lista debajo de la salida.
  4. 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;
2

Después:

1SELECT id,
2first_name,
3last_name,
4email
5FROM customers
6WHERE status = 'active'
7ORDER BY last_name,
8first_name;
9

Todas 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 SELECT situado fuera de cualquier paréntesis, como SELECT * 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.
  • WHERE que comienza con AND o OR. Un conector inicial sin nada delante.
  • JOIN sin una condición correspondiente. Un JOIN necesita una cláusula ON o USING. CROSS JOIN y NATURAL JOIN están exentos, ya que no llevan ninguna.
  • GROUP BY u ORDER BY vacíos. La palabra clave de la cláusula aparece sin columnas después, al final de la consulta.
  • Una condición WHERE incompleta. Una comparación inconclusa, como WHERE status = sin ningún valor, o un WHERE aislado sin nada después, al final de la consulta.
  • Un SELECT sin FROM. 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, como CURRENT_DATE, es válida por sí sola, por lo que SELECT 1 + 1 y SELECT CURRENT_DATE no se señalan.
  • Orden de las cláusulas. Se realizan dos comprobaciones específicas: GROUP BY no debe aparecer antes de WHERE, y ORDER BY no debe aparecer antes de GROUP 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 =
4

Esta consulta produce dos errores:

  1. "Falta la condición ON en una o más instrucciones JOIN." — JOIN users no tiene una cláusula ON ni USING.
  2. "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.

Referencias