Formateador SQL

Indenta una consulta SQL para que puedas leerla, enteramente en tu navegador. No se ejecuta nada y no se contacta con ninguna base de datos.

Se ejecuta enteramente en tu navegador. No se sube, registra ni guarda nada.

Pega una consulta que ha llegado como una única línea larga y léela como es debido. El formateo se hace en tu navegador: la sentencia, los nombres de las tablas y el valor que haya en la cláusula WHERE no salen nunca de tu máquina.

Cómo funciona

La sentencia se divide en piezas —cadenas, comentarios, nombres entrecomillados, números, palabras, operadores— y luego se vuelve a escribir con los saltos de línea y la sangría elegidos a partir de esa secuencia. Las cláusulas empiezan línea, las condiciones se alinean bajo la cláusula a la que pertenecen y una subconsulta se indenta dentro de sus paréntesis.

Cada pieza se vuelve a escribir exactamente como llegó. Solo pueden cambiar los espacios entre ellas y la caja de las palabras que la herramienta reconoce, lo que significa que la sentencia que sale es la sentencia que entró. Esa propiedad la afirman las pruebas en lugar de dejarla a la inspección.

Un paréntesis que contiene una sentencia propia se parte en varias líneas; una llamada a función, una lista IN o un paréntesis que solo agrupa una expresión se quedan en una línea, porque partirlos hace la consulta más alta sin hacerla más clara.

Ejemplos

Caso Entrada Resultado
Una consulta en una línea select id, name from users where active = 1 order by name SELECT id, name FROM users WHERE active = 1 ORDER BY name

Preguntas frecuentes

¿Se envía mi consulta a alguna parte?

No. El formateador es JavaScript ejecutándose en esta página. No se sube nada, no se registra nada y no se almacena nada: puedes desconectar la red y la herramienta sigue funcionando.

¿Comprueba si mi SQL es válido?

No, y conviene dejarlo claro. Lo que hace es reordenar espacios en blanco. No tiene esquema, ni gramática de dialecto, ni base de datos, así que indentará tan contento una sentencia que ningún servidor aceptaría. Lo único que rechaza es una cadena o un comentario que no se cierran, porque eso le impide distinguir el código del texto.

¿Qué dialecto entiende?

Reconoce los estilos de entrecomillado de los más habituales —comillas simples para las cadenas, y comillas dobles, acentos graves o corchetes para los nombres—, así que no destrozará MySQL, PostgreSQL, SQLite ni SQL Server. No comprueba la gramática del dialecto, porque no analiza.

¿Para qué es la opción de las barras invertidas?

MySQL trata una barra invertida dentro de una cadena como un escape, así que 'it\'s' es una sola cadena. El SQL estándar —y PostgreSQL, SQLite, SQL Server y Oracle— no lo hace, así que allí el mismo texto es una cadena seguida de otra cosa. No hay forma de saberlo solo con la consulta, y adivinar corrompería uno u otro dialecto, así que es un interruptor. Déjalo desactivado salvo que trabajes en MySQL.

¿Por qué ha cambiado de caja el nombre de mi columna?

Porque se escribe igual que una palabra clave. La opción de caja toca las palabras que la herramienta reconoce, y no puede distinguir una columna llamada «key» de la palabra clave. Los nombres que van justo después de TABLE, INTO, FROM, JOIN o UPDATE se dejan tal cual, porque esas son las posiciones en las que la caja de un nombre sí puede importar. Si prefieres que no se mueva nada, pon la opción de palabras clave en dejarlas como están escritas, o entrecomilla el nombre.

Conviene saber

  • Nada de esta página ejecuta SQL ni se conecta a una base de datos. La sentencia es texto, y se trata como texto.
  • La disposición es determinista: la misma sentencia con las mismas opciones produce siempre la misma salida, y formatear una sentencia ya formateada no cambia nada.
  • Las expresiones CASE, los joins, las subconsultas y las listas de columnas de un CREATE TABLE tienen cada una su regla. Todo lo que las reglas no cubren se deja en la línea en la que cae en lugar de adivinarlo.

Todas las herramientas de Código