PK Systems PK Systems
Entwickler-Tools

SQL-Formatter

Formatieren, einrücken und schön drucken Sie SQL-Queries — MySQL, PostgreSQL, SQLite, MS SQL und mehr.

SQL-Formatter

Formatiertes SQL

Klicke auf "SQL formatieren", um deine Abfrage zu formatieren.

Was macht dieses Tool?

SQL ist eine write-once, debug-forever-Sprache: Du kopierst eine Abfrage aus einem ORM-Log oder der Chat-Nachricht eines Kollegen und sie kommt als 400 Zeichen langer Einzeiler bei dir an. Dieser Online-SQL-Formatter nimmt diese Textwand und ordnet sie auf mehreren Zeilen mit konsistenter Einrückung an, setzt eine Klausel pro Zeile, richtet JOIN-Bedingungen aus und teilt lange SELECT-Listen in vertikal gestapelte Spalten auf. Er ist dialekt-bewusst, versteht also PostgreSQL-Features wie RETURNING, MySQL-Backticks, T-SQL-Klammern, BigQuery-EXCEPT-Spaltenlisten und SQLite-Eigenheiten — die gerenderte Abfrage bleibt für die Engine, gegen die sie geschrieben wurde, gültig. Alles passiert in deinem Browser, sodass das eingefügte SQL den Tab nie verlässt und keinen Server berührt. Die ursprüngliche Abfrage wird semantisch nie verändert — nur Whitespace, Zeilenumbrüche und Schreibweise ändern sich — sodass du das Ergebnis bedenkenlos zurück in deine Codebasis, Migrations-Datei, Pull-Request-Beschreibung, Blogpost oder Chat-Antwort einfügen kannst. Nutze ihn, um Logs aus Postgres, MySQL, SQL Server, BigQuery oder SQLite aufzuräumen, Abfragen für Code-Reviews vorzubereiten oder einfach eine 200-zeilige Abfrage lesbar zu machen, bevor du anfängst, ihren Ausführungsplan zu tunen.

So funktioniert es

Wähle einen Dialekt, der zu deiner Ziel-Datenbank passt, füge dein SQL ins Textfeld ein, wähle die gewünschte Schreibweise und Einrückung und klicke auf Format. Die Ausgabe erscheint darunter mit einem Ein-Klick-Kopier-Button.

  1. Den richtigen Dialekt wählen — Falls du unsicher bist: Standard-SQL bewältigt die meisten ANSI-konformen Abfragen. Wechsle zu einem Hersteller-Dialekt, wenn deine Abfrage Bezeichner wie `Backticks`, [Klammern] oder herstellerspezifische Schlüsselwörter (RETURNING, QUALIFY usw.) verwendet.
  2. Schreibweise wählenGROSS ist der De-facto-Standard für SQL in Code-Reviews. klein liest sich eher wie Fließtext. Beibehalten übernimmt das, was du bereits getippt hast.
  3. Einrückung festlegen — 2 Leerzeichen sind der häufigste Standard. 4 Leerzeichen sind freundlicher für verschachtelte CTEs. Tab passt zu Editoren, die auf reine Tab-Einrückung konfiguriert sind.
  4. Formatieren und kopieren — Klicke auf SQL formatieren, prüfe die Ausgabe und nutze den Kopier-Button, um sie in die Zwischenablage zu legen. Füge sie zurück in deinen Editor, deine Migrations-Datei oder Chat-Antwort ein.

Formatierungsregeln in Klartext

Der Formatter setzt eine Hauptklausel pro Zeile: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT. Jeder JOIN steht auf seiner eigenen Zeile, mit der zugehörigen ON-Bedingung um eine Ebene eingerückt. Elemente in einer SELECT-Liste, einem VALUES-Tupel oder einer IN (…)-Klausel werden auf mehrere Zeilen aufgeteilt, sobald sie die Zeilenbreite überschreiten. Unterabfragen und CTEs erhalten eine zusätzliche Einrückungsebene gegenüber ihrem Eltern-Element. Kommentare (-- und /* */) werden wortgetreu erhalten. Das Ergebnis ist genau die Anweisungsfolge, mit der du gestartet bist — nur so angeordnet, dass menschliche Reviewer die Struktur der Abfrage auf einen Blick erfassen können.

Dialekt-Spickzettel

Jeder Dialekt behandelt Bezeichner-Quoting, String-Verkettung und eine Handvoll herstellerspezifischer Schlüsselwörter unterschiedlich. Wähle den Dialekt, der zur Engine passt, für die du schreibst.

Dialekt Eigenheiten, die der Formatter respektiert
Standard-SQLANSI-konforme Basis. Doppelte Anführungszeichen für Bezeichner, einfache für Strings, || für Verkettung.
PostgreSQLErgänzt RETURNING, ON CONFLICT, ::cast, Dollar-quotierte Strings ($$) und Array-Literale.
MySQLBacktick-Bezeichner, STRAIGHT_JOIN, SQL_CALC_FOUND_ROWS, doppelt-quotierte Strings erlaubt.
BigQueryBacktick für Projekt/Dataset/Tabellen-Refs, EXCEPT in Spaltenlisten, QUALIFY, UNNEST.
T-SQL (SQL Server)Eckige-Klammer-Bezeichner, TOP n, OUTPUT INSERTED.*, NOLOCK-Hints.
SQLiteGrößtenteils ANSI; kleine Unterschiede bei WITHOUT ROWID, CONFLICT-Behandlung und dem laxen Typsystem.

Häufig gestellte Fragen

Wird meine Abfrage an einen Server gesendet?

Nein. Das Formatieren passiert vollständig in deinem Browser-Tab, das eingefügte SQL — einschließlich sensibler Tabellennamen, Spaltennamen, hartcodierter IDs oder Produktivdaten in WHERE-Klauseln — erreicht also weder unsere Server noch Dritte. Du kannst dich nach dem Laden der Seite vom Netz trennen, der Formatter funktioniert weiterhin.

Warum sieht das Ergebnis etwas anders aus als beim Formatter meiner IDE?

Jeder SQL-Formatter hat seine eigene Meinung zu Zeilenumbrüchen, vorangestellten vs. nachgestellten Kommas und dem Umbruch langer CASE-Ausdrücke. Die Standardwerte hier folgen Konventionen, die in professionellen Datenbank-Editoren und Code-Reviews verbreitet sind. Wenn du eine exakte Übereinstimmung mit dem Style-Guide deines Teams brauchst, jage das Ergebnis als finalen Schritt durch den von deinem Team bevorzugten Formatter.

Führt das Tool meine Abfrage aus?

Nein. Es passiert nur Formatierung (Whitespace und Schreibweise). Die Abfrage wird nie ausgeführt, gegen ein Datenbankschema geparst oder irgendwohin gesendet.

Versteht es Stored Procedures und PL/pgSQL-Blöcke?

Es formatiert das äußere SQL gut, behandelt den inneren prozeduralen Body aber als undurchsichtigen Text — Zeilenumbrüche innerhalb von BEGIN … END bleiben erhalten, werden aber nicht neu umbrochen. Für komplexe Stored Procedures nutze ein herstellerspezifisches Tool wie den Formatter von PGAdmin.

Was, wenn ich den Dialekt auf Standard-SQL lasse, meine Abfrage aber MySQL-Backticks verwendet?

Der Formatter liefert meist trotzdem ein vernünftiges Ergebnis, aber herstellerspezifische Schlüsselwörter können falsch eingerückt oder falsch geschrieben enden. Wähle den passenden Dialekt für die sauberste Ausgabe.

Kann es mehrere durch Semikolons getrennte Anweisungen verarbeiten?

Ja. Mehrere durch ; getrennte Anweisungen werden unabhängig formatiert und mit einer Leerzeile dazwischen verbunden. Praktisch, um ein komplettes Migrations-Skript einzufügen.