Pack Camo

SQL Formatter & Beautifier

SQL für PostgreSQL, MySQL, SQLite, SQL Server und mehr einrücken und aufräumen.

Alles läuft lokal — nichts wird hochgeladen.

SQL

7 Zeilen · 442 Zeichen

Formatiertes SQL

Wird formatiert…

Lesbares SQL in dem Dialekt, den Sie schreiben

Dieser SQL Formatter nimmt Abfragen beliebiger Länge entgegen, auch mehrere Anweisungen auf einmal, und rückt sie einheitlich ein: eine Klausel pro Zeile, Spalten und Bedingungen ausgerichtet, Schlüsselwörter in der gewünschten Schreibweise. Er versteht die Syntax von mehr als fünfzehn Dialekten, von PostgreSQL, MySQL und SQL Server bis BigQuery, Snowflake und Oracle PL/SQL, sodass dialektspezifische Operatoren, Quoting und Platzhalter erhalten bleiben. Wechseln Sie zu Minifizieren, um eine Abfrage wieder auf eine Zeile zu bringen, etwa für eine Konfigurationsdatei oder einen String im Code. Alles läuft in Ihrem Browser; Ihre Abfragen werden nie hochgeladen.

So formatieren Sie eine SQL-Abfrage

  1. 1Fügen Sie Ihr SQL in den linken Bereich ein oder starten Sie mit der Beispielabfrage.
  2. 2Wählen Sie den Dialekt der Abfrage. Standard SQL reicht für die meisten einfachen Abfragen; der richtige Dialekt ist wichtig bei Dingen wie den ::-Casts von PostgreSQL, Backtick-Bezeichnern in MySQL oder den [brackets] von SQL Server.
  3. 3Legen Sie Schreibweise der Schlüsselwörter und Einrückung fest und öffnen Sie Weitere Optionen für die Schreibweise von Datentypen und Funktionen, tabellarische Einrückung, die Position von AND/OR und Leerzeilen zwischen Anweisungen.
  4. 4Die formatierte Abfrage erscheint rechts, während Sie tippen. Lässt sich die Abfrage nicht parsen, werden Zeile und Spalte des Problems angezeigt.
  5. 5Kopieren Sie das Ergebnis, laden Sie es als .sql-Datei herunter oder wählen Sie Minifizieren, um es auf eine Zeile zu reduzieren.

Warum SQL formatieren?

SQL wird einmal geschrieben und oft gelesen: im Code-Review, im Slow-Query-Log, in einer Migration, die jemand um 2 Uhr nachts debuggen muss. Eine von einem ORM erzeugte oder aus einem Log kopierte Abfrage kommt meist als eine riesige Zeile an. Jede Klausel in eine eigene Zeile zu setzen und Unterabfragen einzurücken, macht die Struktur sichtbar: welche Tabellen verknüpft werden, worüber, und welche Bedingungen wo gelten.

Einheitliche Formatierung macht auch Diffs kleiner. Wenn das ganze Team Abfragen gleich formatiert, erscheint eine geänderte Bedingung als eine geänderte Zeile statt als neu umbrochener Absatz.

Die Formatierungsoptionen erklärt

Schreibweise der Schlüsselwörter
UPPER hebt SELECT, FROM und WHERE von Tabellen- und Spaltennamen ab, die gängigste Konvention. lower passt zu Teams, denen Großbuchstaben zu unruhig sind. Beibehalten lässt Schlüsselwörter so, wie Sie sie getippt haben.
Einrückung
Zwei oder vier Leerzeichen oder Tabs. Tabellarische Stile füllen die Schlüsselwörter stattdessen auf eine feste Spaltenbreite auf, damit die Ausdrücke danach bündig stehen.
Position von AND / OR
Am Zeilenanfang setzt jeden logischen Operator an den Beginn der Zeile, sodass sich eine Bedingung leicht auskommentieren lässt; am Zeilenende belässt ihn am Ende der vorherigen Zeile.
Ausdrucksbreite
Geklammerte Ausdrücke, die kürzer als diese Zeichenzahl sind, bleiben auf einer Zeile; längere werden umbrochen.
Kompakte Operatoren
Schreibt a+b statt a + b. Kompakt, aber schwerer zu lesen.

Den richtigen Dialekt wählen

SQL-Dialekte unterscheiden sich stärker, als man denkt: wie Bezeichner gequotet werden ("name", `name` oder [name]), wie ein Platzhalter aussieht (?, $1, :name, @param) und welche Wörter reserviert sind. Der Formatter nutzt für jeden Dialekt eine eigene Grammatik und verwechselt daher weder einen PostgreSQL-Funktionsrumpf in $$ noch einen MySQL-Kommentar mit # mit etwas anderem.

Wenn Sie bei einer Abfrage, die sicher gültig ist, einen Parse-Fehler sehen, prüfen Sie zuerst den Dialekt. Standard SQL ist bewusst streng und kennt nicht jede Herstellererweiterung.

SQL minifizieren

Minifizieren ist das Gegenteil von Formatieren: Kommentare werden entfernt und alle Leerräume zu einfachen Leerzeichen zusammengefasst, sodass eine Zeile entsteht, die Sie in eine YAML-Datei, eine Umgebungsvariable oder ein String-Literal einfügen können. String-Literale, gequotete Bezeichner und Dollar-Quoted-Rümpfe werden exakt übernommen, ein Wert wie 'two spaces' behält also beide Leerzeichen. Optimizer-Hints in der Form /*+ … */ und ausführbare MySQL-Kommentare /*! … */ bleiben erhalten, weil sie beeinflussen, wie die Abfrage läuft.

Arbeiten Sie eher mit JSON? Der JSON Formatter macht dasselbe für JSON-Dokumente, und der Code-Minifier kümmert sich um CSS, JavaScript und HTML.

Häufige Fragen

Wird mein SQL an einen Server gesendet?
Nein. Formatieren und Minifizieren laufen vollständig in Ihrem Browser, Abfragen mit Tabellennamen, Kundendaten oder Zugangsdaten verlassen Ihr Gerät also nie.
Welche SQL-Dialekte werden unterstützt?
Standard SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Amazon Redshift, Spark SQL, Hive, Trino und Presto, DuckDB, ClickHouse, IBM Db2 und Db2 for IBM i, SingleStoreDB, TiDB und Couchbase N1QL.
Ändert das Formatieren, was meine Abfrage tut?
Nein. Es ändern sich nur Leerräume und, wenn Sie es wählen, die Schreibweise von Schlüsselwörtern, Datentypen und Funktionen. Gequotete Bezeichner und String-Literale werden nie verändert. Die Schreibweise ungequoteter Bezeichner zu ändern ist in den meisten Datenbanken unbedenklich, lassen Sie es aber auf Beibehalten, wenn Ihre Datenbank dabei Groß- und Kleinschreibung unterscheidet.
Warum erhalte ich einen Parse-Fehler?
Entweder enthält die Abfrage einen Syntaxfehler, etwa eine nicht geschlossene Klammer oder ein Anführungszeichen, oder sie nutzt Syntax, die der gewählte Dialekt nicht kennt. Die Meldung zeigt Zeile und Spalte, an der das Parsen abbrach; probieren Sie den Dialekt, den Ihre Datenbank tatsächlich verwendet.
Kann ich mehrere Anweisungen auf einmal formatieren?
Ja. Trennen Sie sie mit Semikolons; jede wird nacheinander formatiert, mit der von Ihnen gewählten Anzahl Leerzeilen dazwischen.
Bleiben Kommentare erhalten?
Beim Formatieren ja: Zeilen- und Blockkommentare bleiben an ihrer Stelle. Minifizieren entfernt sie, außer Optimizer-Hints und ausführbare MySQL-Kommentare.
Wie minifiziere ich eine SQL-Abfrage auf eine Zeile?
Wählen Sie oben im Tool Minifizieren. Kommentare werden entfernt und Leerräume zusammengefasst, während String-Literale und gequotete Bezeichner exakt so bleiben, wie sie geschrieben wurden.