SQL Formatter
Una herramienta para formatear consultas SQL para mejorar la legibilidad y comprimirlas. ¡Limpia consultas complejas y unifica el estilo de codificación SQL dentro de tu equipo!
Examples:
Formatted SQL will appear here...
💡 Tips
- 복잡한 쿼리를 읽기 쉽게 포맷팅하세요
- 팀 내 SQL 코딩 스타일을 통일하세요
- Compress 기능으로 쿼리를 한 줄로 만들 수 있습니다
- 여러 SQL 문을 한 번에 포맷팅할 수 있습니다
Características principales
1. Formateo SQL
- Sangría adecuada para palabras clave, columnas y nombres de tablas
- Saltos de línea para mejorar la legibilidad
- Aplicación de estilo de codificación consistente
2. Soporte para múltiples dialectos SQL
- SQL estándar
- MySQL
- PostgreSQL
- MariaDB
- PL/SQL (Oracle)
- T-SQL (SQL Server)
- SQLite
3. Opciones de personalización
- Estilo de sangría (2 espacios, 4 espacios, Tab)
- Capitalización de palabras clave
- Ajuste de espaciado entre líneas
4. Función de compresión
- Eliminar espacios en blanco innecesarios
- Comprimir a una sola línea
Ejemplos de uso
Antes del formateo
SELECT u.id,u.name,u.email,o.order_id,o.total FROM users u LEFT JOIN orders o ON u.id=o.user_id WHERE u.active=1 AND o.total>100 ORDER BY o.total DESC LIMIT 10;
Después del formateo
SELECT
u.id,
u.name,
u.email,
o.order_id,
o.total
FROM
users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE
u.active = 1
AND o.total > 100
ORDER BY
o.total DESC
LIMIT
10;
Casos de uso
1. Revisión de código
-- Formatear consultas complejas para facilitar la revisión
WITH monthly_sales AS (
SELECT
DATE_TRUNC('month', order_date) AS month,
SUM(total) AS revenue
FROM
orders
GROUP BY
DATE_TRUNC('month', order_date)
)
SELECT
month,
revenue,
LAG(revenue) OVER (
ORDER BY
month
) AS prev_month_revenue
FROM
monthly_sales;
2. Documentación
-- Limpiar SQL para README o documentación
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_users_email ON users (email);
3. Depuración
-- Hacer legibles las consultas de una línea de los registros
SELECT
p.id,
p.name,
c.name AS category,
COUNT(o.id) AS order_count
FROM
products p
INNER JOIN categories c ON p.category_id = c.id
LEFT JOIN order_items o ON p.id = o.product_id
WHERE
p.active = TRUE
GROUP BY
p.id,
p.name,
c.name
HAVING
COUNT(o.id) > 10;
4. CTE complejas (Common Table Expression)
WITH RECURSIVE subordinates AS (
SELECT
employee_id,
manager_id,
full_name,
1 AS level
FROM
employees
WHERE
manager_id IS NULL
UNION ALL
SELECT
e.employee_id,
e.manager_id,
e.full_name,
s.level + 1
FROM
employees e
INNER JOIN subordinates s ON s.employee_id = e.manager_id
)
SELECT
employee_id,
full_name,
level
FROM
subordinates
ORDER BY
level,
full_name;
Uso de la función de compresión
¿Cuándo usarla?
- Análisis de registros: Convertir consultas de múltiples líneas a una línea para búsqueda grep
- Parámetros de URL: Al incluir consultas en URLs
- Ahorro de espacio: Usar consultas simples en línea en el código
Ejemplo
-- Antes de la compresión (múltiples líneas)
SELECT
id,
name
FROM
users
WHERE
active = TRUE;
-- Después de la compresión (una línea)
SELECT id,name FROM users WHERE active=TRUE;
Mejores prácticas
1. Estilo consistente
Usa la misma configuración de formato dentro del equipo:
- Sangría: 2 espacios
- Palabras clave: MAYÚSCULAS
- Espaciado de líneas: 1
2. Usa CTE para consultas complejas
-- Bueno: Separado con CTE
WITH active_users AS (
SELECT * FROM users WHERE active = TRUE
),
recent_orders AS (
SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'
)
SELECT
u.*,
COUNT(o.id) AS order_count
FROM
active_users u
LEFT JOIN recent_orders o ON u.id = o.user_id
GROUP BY
u.id;
3. JOIN en lugar de subconsulta
-- Malo: Subconsulta
SELECT
*
FROM
orders
WHERE
user_id IN (
SELECT
id
FROM
users
WHERE
active = TRUE
);
-- Bueno: Usando JOIN
SELECT
o.*
FROM
orders o
INNER JOIN users u ON o.user_id = u.id
WHERE
u.active = TRUE;
4. Lista explícita de columnas
-- Malo: SELECT *
SELECT * FROM users;
-- Bueno: Columnas explícitas
SELECT
id,
name,
email,
created_at
FROM
users;
Sintaxis SQL soportada
DDL (Data Definition Language)
CREATE TABLE, ALTER TABLE, DROP TABLE
CREATE INDEX, DROP INDEX
CREATE VIEW, DROP VIEW
DML (Data Manipulation Language)
SELECT, INSERT, UPDATE, DELETE
MERGE (algunos dialectos)
Características avanzadas
-- CTE (Common Table Expression)
WITH cte_name AS (...)
-- Funciones de ventana
ROW_NUMBER(), RANK(), LAG(), LEAD()
-- Joins
INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN
-- Subconsultas
WHERE id IN (SELECT ...), FROM (SELECT ...) AS subquery
Consejos y trucos
1. Escribe consultas largas paso a paso
-- Paso 1: SELECT básico
SELECT * FROM users;
-- Paso 2: Agregar JOIN
SELECT * FROM users u
JOIN orders o ON u.id = o.user_id;
-- Paso 3: Condición WHERE
SELECT * FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.active = TRUE;
-- Paso 4: Formatear
2. Usa comentarios
-- Consultar estadísticas de pedidos de usuario
SELECT
u.id,
u.name,
COUNT(o.id) AS total_orders, -- Total de pedidos
SUM(o.total) AS total_revenue -- Ingresos totales
FROM
users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY
u.id,
u.name;
3. Alias de tabla consistentes
-- Usar primera letra
FROM users u, orders o
-- Usar abreviatura significativa
FROM users usr, orders ord
Notas importantes
- El formateador no valida la sintaxis SQL
- Puede haber ligeras diferencias entre dialectos
- La función de compresión sacrifica legibilidad (usar solo cuando sea necesario)
- Los comentarios se preservan durante el formateo
Herramientas relacionadas
- JSON Path Tester - Consulta JSON
- Regex Tester - Pruebas de expresiones regulares
- Text Diff - Comparación de consultas
Atajos de teclado
Muchos editores SQL proporcionan atajos de formateo:
- VS Code:
Shift + Alt + F - JetBrains:
Ctrl + Alt + L - DBeaver:
Ctrl + Shift + F