Zum Hauptinhalt springen

SQL Formatter

Ein Tool zum Formatieren von SQL-Abfragen für bessere Lesbarkeit und zum Komprimieren. Bereinigen Sie komplexe Abfragen und vereinheitlichen Sie den SQL-Codierungsstil in Ihrem Team!

Examples:
Formatted SQL will appear here...

💡 Tips

  • 복잡한 쿼리를 읽기 쉽게 포맷팅하세요
  • 팀 내 SQL 코딩 스타일을 통일하세요
  • Compress 기능으로 쿼리를 한 줄로 만들 수 있습니다
  • 여러 SQL 문을 한 번에 포맷팅할 수 있습니다

Hauptfunktionen

1. SQL-Formatierung

  • Richtige Einrückung für Schlüsselwörter, Spalten und Tabellennamen
  • Zeilenumbrüche zur Verbesserung der Lesbarkeit
  • Anwendung konsistenten Codierungsstils

2. Unterstützung mehrerer SQL-Dialekte

  • Standard SQL
  • MySQL
  • PostgreSQL
  • MariaDB
  • PL/SQL (Oracle)
  • T-SQL (SQL Server)
  • SQLite

3. Anpassungsoptionen

  • Einrückungsstil (2 Leerzeichen, 4 Leerzeichen, Tab)
  • Großschreibung von Schlüsselwörtern
  • Anpassung des Zeilenabstands

4. Komprimierungsfunktion

  • Entfernen unnötiger Leerzeichen
  • Komprimierung auf eine Zeile

Verwendungsbeispiele

Vor der Formatierung

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;

Nach der Formatierung

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;

Anwendungsfälle

1. Code-Review

-- Komplexe Abfragen formatieren für einfachere Überprüfung
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. Dokumentation

-- SQL für README oder Dokumentation bereinigen
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. Debugging

-- Einzeilige Abfragen aus Logs lesbar machen
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. Komplexe CTE (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;

Verwendung der Komprimierungsfunktion

Wann verwenden?

  1. Log-Analyse: Mehrzeilige Abfragen in eine Zeile für grep-Suche konvertieren
  2. URL-Parameter: Beim Einbinden von Abfragen in URLs
  3. Platzersparnis: Einfache Abfragen inline im Code verwenden

Beispiel

-- Vor der Komprimierung (mehrere Zeilen)
SELECT
id,
name
FROM
users
WHERE
active = TRUE;

-- Nach der Komprimierung (eine Zeile)
SELECT id,name FROM users WHERE active=TRUE;

Best Practices

1. Konsistenter Stil

Verwenden Sie dieselben Formateinstellungen im Team:

  • Einrückung: 2 Leerzeichen
  • Schlüsselwörter: GROSSBUCHSTABEN
  • Zeilenabstand: 1

2. CTE für komplexe Abfragen verwenden

-- Gut: Mit CTE getrennt
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 statt Subquery

-- Schlecht: Subquery
SELECT
*
FROM
orders
WHERE
user_id IN (
SELECT
id
FROM
users
WHERE
active = TRUE
);

-- Gut: JOIN verwenden
SELECT
o.*
FROM
orders o
INNER JOIN users u ON o.user_id = u.id
WHERE
u.active = TRUE;

4. Explizite Spaltenauflistung

-- Schlecht: SELECT *
SELECT * FROM users;

-- Gut: Explizite Spalten
SELECT
id,
name,
email,
created_at
FROM
users;

Unterstützte SQL-Syntax

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 (einige Dialekte)

Erweiterte Funktionen

-- CTE (Common Table Expression)
WITH cte_name AS (...)

-- Fensterfunktionen
ROW_NUMBER(), RANK(), LAG(), LEAD()

-- Joins
INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN

-- Subqueries
WHERE id IN (SELECT ...), FROM (SELECT ...) AS subquery

Tipps und Tricks

1. Lange Abfragen schrittweise schreiben

-- Schritt 1: Basis SELECT
SELECT * FROM users;

-- Schritt 2: JOIN hinzufügen
SELECT * FROM users u
JOIN orders o ON u.id = o.user_id;

-- Schritt 3: WHERE-Bedingung
SELECT * FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.active = TRUE;

-- Schritt 4: Formatieren

2. Kommentare verwenden

-- Benutzer-Bestellstatistik abfragen
SELECT
u.id,
u.name,
COUNT(o.id) AS total_orders, -- Gesamtanzahl Bestellungen
SUM(o.total) AS total_revenue -- Gesamtumsatz
FROM
users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY
u.id,
u.name;

3. Konsistente Tabellen-Aliase

-- Ersten Buchstaben verwenden
FROM users u, orders o

-- Bedeutungsvolle Abkürzung verwenden
FROM users usr, orders ord

Wichtige Hinweise

  • Der Formatter validiert nicht die SQL-Syntax
  • Es kann leichte Unterschiede zwischen Dialekten geben
  • Die Komprimierungsfunktion opfert Lesbarkeit (nur bei Bedarf verwenden)
  • Kommentare werden bei der Formatierung beibehalten

Verwandte Tools

Tastenkombinationen

Viele SQL-Editoren bieten Formatierungs-Shortcuts:

  • VS Code: Shift + Alt + F
  • JetBrains: Ctrl + Alt + L
  • DBeaver: Ctrl + Shift + F