SQL-Abfragen formatieren
SQL-Abfrage nach Dialekt einrücken oder wieder auf eine Zeile bringen
Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.
Hat dieses Werkzeug geholfen?
Danke, Ihre Rückmeldung ist angekommen.
So funktioniert es
Fügen Sie die Abfrage in das linke Feld ein; die formatierte Fassung erscheint sofort rechts. Das Werkzeug setzt Hauptschlüsselwörter wie SELECT, FROM, WHERE, GROUP BY, ORDER BY und JOIN auf eigene Zeilen, stellt jede Spalte der SELECT-Liste in eine eigene Zeile und rückt die AND- und OR-Bedingungen innerhalb von WHERE eine Stufe ein; auch mit WITH geöffnete temporäre Tabellen (CTEs), die Zweige eines CASE WHEN und Fensterfunktionen wie ROW_NUMBER() OVER (PARTITION BY ...) bekommen ihre eigene Stufe. Eine 340 Zeichen lange einzeilige Abfrage aus einem Logeintrag wird beim Einfügen zu einer Darstellung, die Zeile für Zeile zeigt, welche Tabellen verbunden und welche Bedingungen angewendet werden. Wenn Sie angeben, zu welcher Datenbank die Abfrage gehört, wird das Ergebnis genauer: die Umwandlung wert::int in PostgreSQL, TOP 10 und Namen in [eckigen Klammern] im SQL Server, Backticks in MySQL werden dann nach den Regeln dieses Dialekts gelesen. Wenn Sie es nicht wissen, lassen Sie Standard-SQL stehen. Text in einfachen Anführungszeichen, Namen in doppelten Anführungszeichen oder eckigen Klammern und Kommentarzeilen bleiben unangetastet. Die Ergebniszeile nennt, aus wie vielen Zeilen wie viele wurden und welche Regeln galten; die Ausgabe können Sie kopieren oder als .sql-Datei herunterladen. Die Einzeilen-Option macht das Gegenteil: überflüssige Leerzeichen und Zeilenumbrüche verschwinden, die Abfrage wird eine Zeile — zum Einbetten in Code, zum Einfügen in ein Feld, das nur eine Zeile annimmt, oder zum Vergleich mit einem Logeintrag. Werte in einfachen Anführungszeichen bleiben auch dort unangetastet; Zeilenkommentare mit -- werden zu /* ... */, denn in einer Zeile würde -- alles Folgende auskommentieren und die Abfrage lahmlegen.
Dieses Werkzeug ist auch als sql formatieren, sql in eine zeile bringen, sql abfrage einzeilig machen, stored procedure formatieren, ssms code formatierer, sql query formatieren bekannt.
Was ist SQL?
SQL (Structured Query Language) ist die Standardsprache, um relationale Datenbanken abzufragen und zu verändern; MySQL, PostgreSQL, SQL Server, Oracle und SQLite sprechen allesamt Dialekte davon. Ihr Kern ist deklarativ: Sie beschreiben, was Sie wollen — welche Spalten, aus welchen Tabellen, unter welchen Bedingungen —, und die Datenbank plant den Weg dorthin. Leerzeichen und Zeilenumbrüche tragen in SQL keine Bedeutung: Eine auf eine Zeile gequetschte Abfrage und dieselbe Abfrage sauber eingerückt laufen identisch. Der Unterschied existiert allein für den Menschen, der sie liest — und genau diesen Unterschied stellt dieses Werkzeug her.
Was ist Unterabfrage (Subquery)?
Eine Unterabfrage ist ein zweites SELECT, das in Klammern in eine andere Abfrage eingebettet ist; die äußere Abfrage nutzt ihr Ergebnis wie eine Tabelle oder wie einen einzelnen Wert. Um etwa alle zu finden, die über dem Durchschnitt verdienen, steht rechts in der WHERE-Bedingung ein eigenes SELECT, das diesen Durchschnitt berechnet. Weil sich Unterabfragen verschachteln lassen, sind sie das größte Hindernis beim Lesen eines Einzeilers — welche Klammer wo schließt, ist nicht mehr zu erkennen. Der Formatierer rückt jede Unterabfrage eine Stufe tiefer ein und macht die Verschachtelung als Treppe sichtbar.
Was ist Schlüsselwort (Keyword)?
Schlüsselwörter sind das eigene Vokabular von SQL: SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY und ihre Verwandten. Sie bilden die Grammatik der Sprache; alles Übrige in einer Abfrage sind Namen, die Sie selbst vergeben haben — Tabellen, Spalten, Aliasse. Da SQL die Schreibweise ignoriert, funktionieren Schlüsselwörter in jeder Form; sie großzuschreiben ist eine reine Lesbarkeitskonvention, die die Wörter der Sprache von Ihren eigenen trennt. Dieses Werkzeug wendet die Umwandlung ausschließlich auf Schlüsselwörter an; die Schreibweise Ihrer eigenen Namen bleibt in jedem Fall erhalten.
Eine Zeile oder eingerückt?
Beide Richtungen beantworten ein echtes Bedürfnis. Die eingerückte Fassung ist zum Lesen da: In SSMS, DBeaver oder pgAdmin geöffnet, zeigt eine lange Abfrage Zeile für Zeile, welche Tabelle wo angebunden ist und welche Bedingungen gelten. Die eine Zeile ist zum Transportieren da — die Anweisung in eine Zeichenkette im Code einbetten, sie in ein Konfigurationsfeld einfügen, das nur eine Zeile annimmt, oder zwei Abfragen nebeneinander mit dem Auge vergleichen. Zeilenumbrüche stören dabei nur.
Die einzige echte Gefahr beim Zusammenziehen sind Zeilenkommentare. Ein Kommentar mit -- reicht bis zum Zeilenende; sobald alles auf einer Zeile landet, rutscht jede nachfolgende Anweisung in den Kommentar, und die Abfrage funktioniert stillschweigend nicht mehr. Dieses Werkzeug löscht den Kommentar nicht, sondern schreibt ihn als /* ... */ um: Ihre Notiz bleibt erhalten, die Abfrage lauffähig. Enthält die Notiz selbst die Zeichenfolge */, wird diese getrennt, damit der Kommentar nicht zu früh schließt.
Formatieren ist kein Prüfen
Dieses Werkzeug führt die Abfrage nicht aus und prüft sie nicht wie eine Datenbank: Eine Spalte, die nicht existiert, eine falsch geschriebene Tabelle oder ein JOIN ohne Bedingung übersteht das Formatieren unbeanstandet. Was das Formatieren beiträgt, ist Sichtbarkeit — sobald die Abfrage über Zeilen verteilt ist, springen eine überzählige Klammer, eine falsch platzierte Bedingung und ein vergessenes Komma ins Auge.
Auch der Rahmen ist bewusst eng gesteckt: Das Werkzeug ist für einzelne SQL-Anweisungen gebaut. Mit Semikolon getrennte Anweisungen trennt es durch eine Leerzeile; Rümpfe von Stored Procedures, BEGIN…END-Blöcke und herstellerspezifische prozedurale Dialekte (PL/SQL, T-SQL-Ablaufsteuerung) sind nicht seine Aufgabe — bei solchen Texten landen die Zeilenumbrüche womöglich nicht dort, wo Sie sie erwarten.
Schlüsselwörter GROSS oder klein schreiben?
SQL unterscheidet nicht zwischen Groß- und Kleinschreibung; select und SELECT laufen identisch. Großbuchstaben sind eine alte Konvention, um die Wörter der Sprache von Ihren Tabellen- und Spaltennamen auf einen Blick zu trennen, und die meisten Lehrbücher und offiziellen Dokumentationen folgen ihr — wenn Sie nicht wissen, wer die Abfrage lesen wird, ist Großschreibung die sichere Wahl.
Kleinschreibung hat in Codebasen zugelegt: Editoren heben Schlüsselwörter ohnehin farblich hervor, die Großschreibung verlor ihre Unterscheidungsaufgabe, und Kleinbuchstaben ermüden das Auge weniger. Entscheidend ist, eine Regel im Projekt durchgängig anzuwenden; die Option Nicht anfassen richtet nur die Zeilen aus, ohne irgendeine Schreibweise zu verändern.
Was ändert die Wahl des Dialekts?
SQL ist keine einzelne Sprache, sondern eine Familie sehr ähnlicher Sprachen. Der Kern ist überall gleich, aber jede Datenbank hat eigene Schreibweisen: PostgreSQL wandelt mit wert::int um, der SQL Server begrenzt Zeilen mit TOP 10 und setzt Namen in [eckige Klammern], MySQL nutzt Backticks, und in BigQuery besteht ein Tabellenname aus drei Teilen wie `projekt.datensatz.tabelle`.
Der richtige Dialekt sorgt dafür, dass solche Schreibweisen als das gelesen werden, was sie sind — Name oder Befehl. Eine falsche Wahl macht bei den meisten Abfragen keinen Unterschied, doch wo eine solche Schreibweise vorkommt, kann der Zeilenumbruch unerwartet ausfallen. Wenn Sie es nicht wissen, lassen Sie Standard-SQL stehen: es kennt den gemeinsamen Kern und formatiert fast jede alltägliche Abfrage richtig. Lässt sich eine Abfrage mit dem gewählten Dialekt nicht analysieren, wechselt das Werkzeug still zu seinem eingebauten Formatierer und sagt es in der Ergebniszeile — ohne Ausgabe bleiben Sie nie.
Häufige Fragen
Wie formatiere ich eine SQL-Abfrage?
Links einfügen; rechts erscheint sofort die Fassung mit Schlüsselwörtern am Zeilenanfang und eingerückten Unterabfragen. Sie können sie kopieren oder als .sql-Datei herunterladen.
Wird meine Abfrage an einen Server geschickt?
Nein. Das Formatieren läuft vollständig in Ihrem Browser; weder die Abfrage noch Ihre Tabellennamen oder die Werte darin werden übertragen. Auch WHERE-Bedingungen mit echten Kundendaten können Sie bedenkenlos einfügen.
Verändern sich Textwerte und Kommentare?
Nein. Werte in einfachen Anführungszeichen, Namen in doppelten Anführungszeichen oder eckigen Klammern sowie Kommentare mit -- und /* */ bleiben exakt erhalten; die Umwandlung der Schreibweise betrifft nur Schlüsselwörter.
Wie bringe ich eine SQL-Abfrage auf eine Zeile?
Wählen Sie in der ersten Liste Auf eine Zeile bringen; überflüssige Leerzeichen und Zeilenumbrüche verschwinden, und die ganze Anweisung erscheint rechts auf einer einzigen Zeile. Zeichenketten bleiben unangetastet, und Zeilenkommentare mit -- werden zu /* ... */, damit nichts dahinter auskommentiert wird.
Kann das Werkzeug eine Stored Procedure formatieren?
Der Rahmen sind einzelne Abfragen. BEGIN…END-Blöcke und prozedurale Anweisungen werden nicht gesondert behandelt — die Ausgabe bleibt lauffähig, aber die Zeilenstruktur entspricht womöglich nicht Ihrer Erwartung.
Warum wurde meine mit WITH beginnende Abfrage (CTE) nicht ordentlich eingerückt?
Jetzt wird sie es. Das Werkzeug stellt jede mit WITH geöffnete temporäre Tabelle auf ihre eigene Stufe; bei zwei verschachtelten CTEs rückt der zweite Block eine Stufe weiter ein. Ebenso kommt jeder Zweig eines CASE WHEN in eine eigene Zeile, und Fensterfunktionen wie ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...) werden ebenfalls aufgeklappt.
Ich weiß nicht, welchen Dialekt ich wählen soll. Was passiert dann?
Nichts Schlimmes: Standard-SQL ist die Voreinstellung und formatiert fast jede alltägliche Abfrage richtig. Der Dialekt zählt nur dort, wo eine datenbankeigene Schreibweise auftaucht — die :: Umwandlung in PostgreSQL, TOP und [eckige Klammern] im SQL Server. Wissen Sie, woher die Abfrage stammt, wählen Sie sie aus der Liste; sonst schauen Sie sich die Ausgabe an und wechseln den Dialekt, falls sie nicht Ihren Erwartungen entspricht.