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