SuperDevTools

SQL formatieren: SQL Formatter online

Ergebnis
SQL einfügen, eine .sql-Datei hierher ziehen oder auf „Beispiel“ klicken.
Anweisungen
0
Zeilen im Ergebnis
0
Größe des Ergebnisses
0

Dieses Werkzeug formatiert nur den Text: Es prüft die Syntax nicht vollständig und führt nichts aus. Zeichenketten, Bezeichner in Anführungszeichen und Kommentare werden unverändert übernommen.

Alles läuft in Ihrem Browser: Ihre Abfragen werden weder gesendet noch gespeichert.

Ein SQL Formatter für lesbare Abfragen

Eine Abfrage in einer einzigen langen Zeile läuft zwar, ist aber mühsam zu lesen, und genau so landet SQL oft in einem Fehlerprotokoll oder im Quelltext einer Anwendung. SQL formatieren heißt, die Abfrage in ausgerichtete, eingerückte Klauseln zu zerlegen: Man sieht sofort, welche Spalten gelesen, welche Tabellen verknüpft und welche Filter angewendet werden. Ein einheitliches Format erleichtert auch das Code-Review, denn der Vergleich zweier Versionen zeigt nur echte Änderungen.

So funktioniert es

  1. Eine oder mehrere Anweisungen in „Ihre SQL-Abfrage“ einfügen oder eine .sql-Datei öffnen. „Beispiel“ lädt eine Abfrage mit JOIN, Unterabfrage und CASE.
  2. Den „Dialekt“ wählen: Standard-SQL, MySQL / MariaDB, PostgreSQL, SQLite oder SQL Server.
  3. „Schlüsselwörter“ (GROSSBUCHSTABEN, kleinbuchstaben, Unverändert), „Einrückung“, „Spalten“ (Eine pro Zeile oder In einer Zeile) und „Kommas“ (Am Zeilenende oder Am Zeilenanfang) einstellen.
  4. Auf „Formatieren“ oder „Minifizieren“ klicken, danach „Kopieren“ oder „Herunterladen (.sql)“.

Beispiel und Konventionen

Nehmen wir select id, name from kunden where ort = 'Köln' and aktiv = 1 order by name; mit 75 Zeichen. Mit den Standardeinstellungen entstehen 10 Zeilen: SELECT allein, dann id, und name um zwei Leerzeichen eingerückt, FROM und kunden, WHERE mit ort = 'Köln', danach AND aktiv = 1 in einer eigenen Zeile und zum Schluss ORDER BY und name;. Minifiziert passt dieselbe Abfrage in 70 Zeichen: SELECT id,name FROM kunden WHERE ort='Köln' AND aktiv=1 ORDER BY name;.

Diese Regeln folgen den verbreitetsten Stilvorgaben:

  • Schlüsselwörter in Großbuchstaben, Tabellen- und Spaltennamen so, wie Sie sie geschrieben haben;
  • eine Hauptklausel pro Zeile: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, UNION, INSERT INTO, VALUES, UPDATE, SET, DELETE FROM, CREATE TABLE;
  • jeder JOIN beginnt eine Zeile mit seiner ON-Bedingung, und jedes AND oder OR eines Filters kommt in eine neue Zeile, außer dem eines BETWEEN;
  • eine Unterabfrage wird eine Stufe tiefer eingerückt, bei CASE steht jedes WHEN und das ELSE in einer eigenen Zeile.

Was nie verändert wird

Der Lexer erkennt Zeichenketten in einfachen Anführungszeichen, Bezeichner in doppelten Anführungszeichen, Backticks oder eckigen Klammern, Kommentare mit -- und /* */, Zahlen, Operatoren und Parameter (?, :name, $1). Der Inhalt von Zeichenketten und Kommentaren wird Zeichen für Zeichen übernommen: In WHERE notiz = 'select from where' bleiben die drei Wörter klein.

Die Dialekte unterscheiden sich vor allem beim Maskieren von Namen: Backticks und #-Kommentare bei MySQL, eckige Klammern wie [Kunden Name] bei SQL Server, Zeichenketten in $$…$$ und der Operator :: bei PostgreSQL.

Bleibt ein Anführungszeichen, ein Kommentar oder eine Klammer offen, formatiert das Werkzeug trotzdem und nennt Zeile und Spalte der Stelle. Eine vollständige Syntaxprüfung ist das nicht: Ein Tippfehler im Tabellennamen oder ein fehlendes Komma fällt nicht auf, und auf keiner Datenbank wird etwas ausgeführt.

Häufige Fragen

Kann die Formatierung das Ergebnis meiner Abfrage ändern?

Nein. Es ändern sich nur Leerräume und die Schreibweise der Schlüsselwörter, und die ist SQL egal. Vorsicht bei einer Spalte ohne Anführungszeichen, die wie ein Schlüsselwort heißt (date, text, key): Sie wird mit umgestellt. Setzen Sie sie in Anführungszeichen oder wählen Sie „Unverändert“.

Lassen sich Skripte mit Tausenden Zeilen formatieren?

Ja. Durch „;“ getrennte Anweisungen werden nacheinander verarbeitet und durch eine Leerzeile getrennt. Die Arbeit läuft im Hintergrund, die Seite friert nicht ein: 5.000 Zeilen dauern auf einem aktuellen Rechner weniger als eine Sekunde. Dateien bis 20 MB werden angenommen.

Ergibt Minifizieren und erneutes Formatieren dasselbe Bild?

Ja, bei gleichen Einstellungen, denn die Formatierung hängt nur von der Folge der Bausteine ab. Beim Minifizieren bleiben ---Kommentare erhalten und bekommen einen Zeilenumbruch, damit sie den Rest der Abfrage nicht verschlucken.