Formatiertes SQL erscheint hier — neu einrücken, ausrichten und mit einem Klick kopieren.
Was ist ein SQL-Formatter?
Ein SQL-Formatter nimmt zusammengequetschtes, einzeiliges oder automatisch generiertes SQL und schreibt es mit konsistenter Einrückung und Zeilenumbrüchen neu. Entwicklerinnen und Analystinnen greifen darauf zurück, wenn sie Joins prüfen, Filter debuggen, ORM-Output aufräumen, Queries in Tickets oder in der Doku teilen oder einen Query-Plan Schritt für Schritt durchgehen wollen.
Formatieren ändert nicht, *was* eine Query tut — sondern nur, wie leicht ein Mensch sie liest. Mit konsistentem Layout wird das Zusammenspiel von SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING und ORDER BY sofort klar — gerade bei Queries, in denen Subqueries und CTEs miteinander verschachtelt sind.
SQL hat viele *Dialekte* — PostgreSQL, MySQL, SQLite, T-SQL (Microsoft SQL Server), Oracle und BigQuery erweitern den Standard jeweils um ihre eigene Syntax. Ein guter Formatter kennt den Dialekt, den du auswählst, und zerschießt dir keine herstellerspezifische Syntax.
Was du beim Formatieren von SQL nebenbei lernst
SQL-Klauseln haben klar abgegrenzte Aufgaben: SELECT wählt Spalten, FROM wählt Tabellen, WHERE filtert Zeilen, GROUP BY aggregiert, und ORDER BY sortiert.
Eine lesbare Einrückung legt verschachtelte Queries, Joins und Bedingungen offen, die in einer einzeiligen Query schlicht unsichtbar sind.
Der Dialekt ist entscheidend — RETURNING, LIMIT, TOP und Bezeichner in eckigen Klammern ([col] vs. "col") lassen sich nicht 1:1 zwischen Datenbanken portieren.
SQL-Query Schritt für Schritt formatieren
1
Query einfügen
Pack dein SQL ins Eingabefeld. Egal ob einzeilig, vom ORM generiert oder schon halb formatiert — alles funktioniert.
2
Dialekt auswählen
Wähle PostgreSQL, MySQL, SQLite oder T-SQL, damit der Formatter herstellerspezifische Schlüsselwörter wie LIMIT, TOP oder RETURNING korrekt behandelt.
3
Stil festlegen
Stelle die Schreibweise der Schlüsselwörter (üblich: GROSSBUCHSTABEN) und die Einrücktiefe (2 oder 4 Leerzeichen) ein. Die meisten Teams fahren mit Großbuchstaben + 2 Leerzeichen.
4
Formatierte Ausgabe lesen
Jede Klausel steht in einer eigenen Zeile, Joins sind ausgerichtet, Subqueries sind eingerückt. Kommentare bleiben erhalten.
5
Zurück ins Projekt kopieren
Füge die formatierte Query in deine Migration, deine ORM-Raw-Query oder dein BI-Tool ein. Alles läuft komplett in deinem Browser.
SQL-Klauseln – Schnellreferenz
Die Klauseln, die du in 95 % aller SELECT-Queries siehst, in der Reihenfolge, in der sie konzeptionell verarbeitet werden. Hersteller-Doku: PostgreSQL SELECT, MySQL SELECT.
Klausel
Zweck
Beispiel
SELECT
Bestimmt, welche Spalten/Ausdrücke zurückkommen
SELECT id, name
FROM
Wählt die Quelltabelle(n)
FROM users
JOIN ... ON
Verknüpft Zeilen aus einer weiteren Tabelle
JOIN orders ON orders.user_id = users.id
WHERE
Filtert Zeilen vor der Gruppierung
WHERE active = true
GROUP BY
Fasst Zeilen mit gleichen Werten zusammen
GROUP BY country
HAVING
Filtert nach der Aggregation
HAVING COUNT(*) > 10
ORDER BY
Sortiert die Ergebnismenge
ORDER BY created_at DESC
LIMIT / OFFSET
Paginiert das Ergebnis
LIMIT 20 OFFSET 40
WITH ... AS
Common Table Expression (CTE) — gibt einer Subquery einen Namen
WITH active AS (...)
SQL-Beispiele zum Ausprobieren
Eine einfache Query formatieren
Eingabe
select id,name from users where active=trueorderby created_at desclimit10
Formatiert
SELECT id, nameFROM usersWHERE active =trueORDERBY created_at DESCLIMIT10;
Jede Klausel steht jetzt in einer eigenen Zeile, die Spaltenliste ist eingerückt. Im Code Review wird diese Query damit auf einen Schlag 10× angenehmer zu lesen.
Einen Join nachvollziehen
Eingabe
select u.name,o.total from users u join orders o on o.user_id=u.id where o.total>100
Formatiert
SELECT u.name, o.totalFROM users uJOIN orders o ON o.user_id = u.idWHERE o.total >100;
Tabellen-Aliase (users u, orders o) halten die Spaltenliste kurz. Die Zeile JOIN ... ON macht die Beziehung zwischen den Tabellen explizit sichtbar.
Eine verschachtelte Subquery lesen
Eingabe
select*from users where id in(select user_id from enrollments where course_id=5)
Formatiert
SELECT*FROM usersWHERE id IN(SELECT user_idFROM enrollmentsWHERE course_id =5);
Durch das Einrücken der inneren Query wird die Abhängigkeit klar erkennbar. Sobald die Struktur sichtbar ist, lassen sich viele Subqueries auch als JOIN oder CTE umschreiben.
Typische Fehler beim SQL-Formatieren
Anzunehmen, formatiertes SQL sei automatisch *korrektes* SQL. Formatieren ändert das Layout, nicht die Semantik — eine sauber aussehende Query kann trotzdem das falsche Ergebnis liefern.
Die Query beim Formatieren noch schnell anpassen und danach vergessen, das Ergebnis erneut zu testen.
Den Dialekt ignorieren — LIMIT 10 in PostgreSQL, TOP 10 in T-SQL und FETCH FIRST 10 ROWS ONLY im SQL-Standard machen alle dasselbe, sind aber nicht austauschbar.
FAQ zum SQL-Formatter
Verändert das Formatieren das Abfrageergebnis?
Nein. Formatieren ändert nur Whitespace und Groß-/Kleinschreibung. Die Datenbank parst beide Varianten zum gleichen Query-Plan, die zurückgegebenen Zeilen sind identisch.
Warum sollte man SQL überhaupt formatieren?
Lesbares SQL lässt sich leichter debuggen, im Code Review besprechen, erklären und warten — vor allem, wenn die Query mehrere Joins, Subqueries, CTEs oder Window Functions enthält.
Was ist ein SQL-Dialekt?
Ein SQL-Dialekt ist eine datenbankspezifische Erweiterung des SQL-Standards. PostgreSQL, MySQL, SQLite, T-SQL (SQL Server), Oracle und BigQuery bringen jeweils eigene Syntax mit, die über den Standard hinausgeht.
Kann ein SQL-Formatter kaputte Queries reparieren?
Ein Formatter kann Syntaxprobleme sichtbar machen, weil er die Query strukturiert neu ausgibt. Er kennt aber dein Schema nicht und kann auch nicht garantieren, dass die Query logisch korrekt ist.
Soll ich SQL-Schlüsselwörter großschreiben?
Die meisten Style Guides empfehlen Schlüsselwörter in Großbuchstaben (SELECT, FROM, WHERE) und Bezeichner in Kleinbuchstaben, weil der visuelle Kontrast die Struktur der Query hervorhebt. Wichtig ist vor allem: einen Stil wählen und konsequent dabei bleiben.