Por qué formatear SQL importa
Una query SQL en una sola línea, sin formato, es lo más cercano a leer ensamblador en una empresa. Cuando esa query falla en producción a las 3 AM y necesitás debuggear, perdés minutos solo en parsearla mentalmente. SQL formateado bien indentado: cada cláusula en su línea, joins alineados, condiciones en columna. La diferencia entre encontrar el bug en 30 segundos o en 5 minutos.
Convenciones de formato más usadas
- Keywords en mayúsculas. SELECT, FROM, WHERE, JOIN. Hace contraste visual con nombres de tablas y columnas en minúsculas.
- Cada cláusula en una nueva línea. SELECT, FROM, WHERE, GROUP BY, ORDER BY, LIMIT siempre rompen línea.
- JOINs en su propia línea. Cada JOIN se ve fácil cuando está aislado.
- Comas al inicio o al final. Hay dos escuelas; el formateador respeta el estilo de tu equipo si lo configurás.
- Indentar subqueries. Las subqueries van más adentro que el query principal.
Cuándo NO formatear
- Queries muy simples.
SELECT * FROM users WHERE id = 1no necesita romperse en líneas. - Migraciones masivas. Si tenés un script con cientos de INSERT, formatearlos todos lo hace ilegible y enorme.
- SQL generado por ORMs. El SQL que genera Sequelize o Hibernate ya está optimizado para máquina, formatearlo manualmente no aporta.
Estilo Stripe / Linear / Vercel para SQL
Empresas modernas tienden a este estilo: keywords en mayúsculas, una columna por línea en SELECT, indentación consistente de 2 espacios, JOINs después de FROM. Un SELECT que devuelve 8 columnas se ve así:
SELECT
u.id,
u.name,
u.email,
COUNT(o.id) AS total_orders
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE u.active = true
GROUP BY u.id, u.name, u.email
ORDER BY total_orders DESC
LIMIT 10; Limitaciones del formateador
Este es un formateador básico que cubre la mayoría de queries que vas a encontrar todos los días: SELECT, INSERT, UPDATE, DELETE, con joins, where, group by, order by, having, limit. No interpreta CTE complejos (WITH RECURSIVE), window functions con sintaxis muy particular, ni dialectos que se desvían fuerte (T-SQL de SQL Server, PL/SQL de Oracle). Para esos casos extremos, considerá formateadores específicos del dialecto.
SQL legible y SEO interno
En empresas grandes hay un patrón: queries críticas viven en una carpeta versionada en git. El equipo de datos las edita, las revisa, las commitea. Si las queries vienen sin formato, los reviews son una pesadilla y los bugs pasan inadvertidos. Establecer un estilo de formato uniforme y aplicarlo en pre-commit hooks es uno de esos cambios chicos que mejora la velocidad del equipo a mediano plazo.
Tips de productividad
- Si trabajás con DataGrip, IntelliJ o DBeaver, tienen formateadores integrados que respetan tus preferencias. Configuralos una vez y nunca más pelees con formato.
- En código JavaScript/TypeScript, considerá template strings con tagged templates como
sql\`SELECT ...\`. Editores con extensiones como vscode-sql-template-literal te dan autocomplete y formato. - Para queries largas que vivirán en migraciones, comentá cada bloque importante con
-- propósito de este JOIN. Tu yo del futuro te lo agradece.