Cómo formatear consultas SQL

· 7 min de lectura

El SQL desordenado es una de las formas mas rapidas de introducir errores. Cuando una consulta es una sola linea larga sin sangria, es dificil ver que condiciones se aplican a que uniones, donde comienzan y terminan las subconsultas, o si la logica es correcta. Un formateador basado en navegador maneja todo el trabajo localmente sin subir sus consultas a un servidor.

Por que importa el formateo

Como formatear SQL

  1. Pegue su SQL: ingrese una consulta minificada o desordenada en el formateador. Maneja SELECT, INSERT, UPDATE, DELETE, CREATE TABLE y consultas complejas con subconsultas y uniones.
  2. Configure las opciones: elija el tamano de sangria y si quiere palabras clave en mayusculas. Estos ajustes coinciden con la guia de estilo de su proyecto.
  3. Copie el resultado: el SQL formateado esta listo para pegar de vuelta en su editor, cliente de base de datos o documentacion.

Como se ve un buen formateo

Una consulta como select u.name, o.total from users u join orders o on u.id = o.user_id where o.total > 100 and u.active = 1 order by o.total desc se convierte en:

SELECT
  u.name,
  o.total
FROM users u
JOIN orders o
  ON u.id = o.user_id
WHERE o.total > 100
  AND u.active = 1
ORDER BY o.total DESC

Cada clausula comienza en su propia linea. Las condiciones estan sangradas bajo su clausula padre. Las uniones y sus condiciones ON estan claramente emparejadas.

Una breve historia de las convenciones de formateo SQL

SQL fue creado por los investigadores de IBM Donald Chamberlin y Raymond Boyce en 1974, originalmente llamado SEQUEL (Structured English Query Language). El «QL» en el nombre original reflejaba la intencion de que el lenguaje se leyera como ingles. Desde el principio, este diseno legible por humanos implicaba una convencion: sangre sus clausulas para que se lean de arriba abajo como oraciones.

Durante la mayor parte de los anos 1980 y 1990, el SQL se escribia a mano en editores de texto y el formateo era personal. Algunos talleres adoptaron el «estilo rio» (donde cada palabra clave se alinea verticalmente a la derecha de una columna virtual), otros usaron el «estilo egipcio» (equivalente de llave-en-la-misma-linea), y la mayoria simplemente usaron lo que el autor preferia.

El primer formateador SQL ampliamente utilizado fue Apex SQL Formatter (2000), seguido de SQL Complete de Devart (2002) y SQL Prompt de Red Gate (2003). Estas herramientas trajeron el formateo a nivel IDE a los desarrolladores de SQL Server y Oracle. Para 2010, todos los IDE principales (SSMS, DataGrip, DBeaver) tenian formateo SQL integrado, y los formateadores en linea se convirtieron en estandar para la limpieza ad hoc.

En 2017, el ecosistema de formateadores cambio con sql-formatter (npm), una biblioteca JavaScript de codigo abierto que impulsa la mayoria de los formateadores SQL basados en navegador hoy en dia, incluido este. Los formateadores modernos manejan las diferencias de dialecto (backticks de MySQL, funciones de ventana de PostgreSQL, corchetes cuadrados de SQL Server) y producen salida consistente y configurable.

Guias de estilo SQL usadas por grandes empresas

La mayoria de las bases de codigo profesionales siguen una de las varias guias de estilo SQL publicadas:

Guia de EstiloOrigenConvenciones clave
Mozilla SQL StyleMozillaPalabras clave MAYUSCULAS, nombres snake_case, sangria 2 espacios
GitLab SQL StyleGitLab Data TeamPalabras clave MAYUSCULAS, nombres minusculas, sangria 4 espacios, comas iniciales
Holistics SQL StyleHolisticsPalabras clave MAYUSCULAS, snake_case, 2 espacios, comas finales
Simon Holywell SQLPersonal/popularAlineacion «rio», palabras clave mayusculas
dbt SQL Styledbt LabsPalabras clave minusculas (dialecto moderno), snake_case, comas iniciales
PostgreSQL Wiki StyleComunidad PostgreSQLPalabras clave minusculas, snake_case, sangria estilo K&R

Si esta comenzando un nuevo proyecto, elija una de las guias establecidas. Si se une a una base de codigo existente, siga lo que ya hay alli. La consistencia dentro de un proyecto importa mas que cualquier estilo especifico.

Opciones de formateo comunes

Diferencias de dialectos

Los formateadores SQL necesitan manejar sintaxis especifica de dialectos:

DialectoCaracteristicas distintivas
PostgreSQLFunciones de ventana, LATERAL JOINS, cadenas entre dolares ($$), estilo intensivo en CTE
MySQL/MariaDBIdentificadores backtick, sintaxis de clausula LIMIT, REPLACE INTO
SQL Server (T-SQL)Identificadores entre corchetes, clausula TOP, clausula OUTPUT, MERGE
Oracle (PL/SQL)Tabla DUAL, ROWNUM, CONNECT BY jerarquico, llamadas a paquetes con sufijo de punto
SQLiteSistema de tipos limitado, REPLACE/UPSERT, base de datos de un solo archivo
SnowflakeTipos de datos variantes, clausula QUALIFY, COPY INTO
BigQueryIdentificadores backtick, tipos ARRAY/STRUCT, listas de columnas EXCEPT/REPLACE
RedshiftDerivado de PostgreSQL pero DDL distintivo, COPY desde S3

Un buen formateador detecta o acepta una pista de dialecto, luego maneja sintaxis que otros dialectos rechazarian.

Errores comunes

Consejos

Privacidad y consultas confidenciales

El formateador SQL se ejecuta completamente en su navegador. Las consultas que pega, el procesamiento intermedio y la salida formateada se quedan todos en su dispositivo. Nada se sube a un servidor, se registra o se comparte con nadie.

Esto importa porque las consultas SQL a menudo contienen informacion extremadamente sensible: nombres de tablas que revelan la arquitectura del producto, nombres de columnas que exponen la logica de negocio y metricas, IDs reales de clientes en clausulas WHERE, endpoints de API internos en procedimientos almacenados, SSN y numeros de tarjeta de credito en datos de prueba, compensacion de empleados en consultas de RRHH, cifras financieras en consultas de analitica, direcciones de correo electronico de clientes en consultas de marketing. Los formateadores SQL en la nube registran cada consulta en sus registros de solicitud, a veces las retienen para «mejora del servicio», y han estado involucrados en brechas reales donde consultas de produccion pegadas filtraron esquemas y datos sensibles. Un formateador basado en navegador tiene exposicion cero: la consulta nunca sale de su maquina.

El formateo basado en navegador tambien funciona sin conexion una vez cargada la pagina, util para formatear consultas en aviones, en entornos seguros sin acceso a internet, o en cualquier lugar donde no pueda o no deba pegar una consulta de base de datos en un servicio de terceros.

Preguntas frecuentes

¿Hay que escribir las palabras clave SQL en mayúsculas?

Es una convención ampliamente seguida escribir las palabras clave SQL en mayúsculas (SELECT, FROM, WHERE) y los nombres de tablas o columnas en minúsculas. Eso hace las consultas más fáciles de leer visualmente. La mayoría de las guías de estilo lo recomiendan, pero ningún motor de base de datos lo impone.

¿El formateo cambia la ejecución de la consulta?

No. Los espacios y la indentación no tienen ningún efecto en la ejecución de SQL. El formateo es puramente para la legibilidad humana. Una consulta minificada y una indentada producen el mismo resultado.

¿Qué tamaño de indentación usar?

Dos o cuatro espacios son ambos habituales. Elige lo que use tu equipo y mantenlo coherente. La mayoría de los formateadores SQL permiten configurarlo.

¿Se envía mi SQL a un servidor?

No. El formateo se hace íntegramente en tu navegador. Tus consultas nunca salen de tu dispositivo.