Skip to content
Back to Blog
developersql-formattersqldatabases

SQL-Abfragen übersichtlich formatieren

Ein Block unformatierter SQL-Code verbirgt Fehler. So formatieren Sie Ihre Abfragen dialektbewusst, mit einem kostenlosen Tool, das PostgreSQL, MySQL, T-SQL und mehr automatisch erkennt.

SZ
Founder, Molixa
8 min read
Teilen
SQL-Abfragen übersichtlich formatieren
Table of contents6 sections

Um eine SQL-Abfrage zu formatieren, setze jede Hauptklausel (SELECT, FROM, WHERE, JOIN, GROUP BY) in eine eigene Zeile, rücke die Spalten und Bedingungen darunter ein und verwende eine einheitliche Groß-/Kleinschreibung für Schlüsselwörter. Der schnellste Weg ist, sie in einen SQL-Formatter einzufügen, der automatisch Ihren Dialekt erkennt und die Abfrage mit einem Klick neu einrückt, komplett im Browser.

Formatierung ist nicht nur Kosmetik. Eine auf eine Zeile gequetschte Abfrage versteckt genau die Fehler, die Sie Stunden kosten: eine fehlende Join-Bedingung, die aus einem Inner Join unbemerkt einen Cross Join macht, eine WHERE-Klausel, die eigentlich ein ON sein sollte, oder ein OR, das weiter bindet als gedacht. Verteilen Sie dieselbe Abfrage über eingerückte Zeilen, und diese Fehler springen sofort ins Auge. Lesbarer SQL ist debugbarer SQL.

Unübersichtliches SQL vs formatiertes SQL#

Hier ist eine Abfrage, wie sie normalerweise ankommt, aus einem Log oder ORM-Dump eingefügt:

select u.id,u.name,o.total from users u join orders o on u.id=o.user_id where u.active=1 and o.total>100 order by o.total desc;

Sie funktioniert, aber man kann sie nicht überblicken. Jetzt dieselbe Abfrage, formatiert:

SELECT
    u.id,
    u.name,
    o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.active = 1
  AND o.total > 100
ORDER BY o.total DESC;

An der Logik hat sich nichts geändert. Aber jetzt stehen die Join-Bedingung, die beiden Filter und die Sortierung jeweils in einer eigenen Zeile, das AND ist unter WHERE eingerückt, sodass man sieht, dass es eine zweite Bedingung ist, und Großbuchstaben trennen die Struktur von Ihren Spalten- und Tabellennamen. Wenn diesem JOIN das ON fehlen würde, wäre die Lücke auf einen Blick erkennbar.

Die grundlegenden Formatierungsregeln#

Gute SQL-Formatierung beruht auf wenigen konsistenten Entscheidungen. Wende sie jedes Mal gleich an, damit deine Abfragen vorhersagbar lesbar werden.

  • Eine Klausel pro Zeile. SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY und jedes JOIN beginnen eine neue Zeile.
  • Einrücken des Rumpfs. Spalten in der SELECT-Liste, Bedingungen in der WHERE-Klausel und verknüpfte Tabellen werden unter ihrer Klausel eingerückt.
  • Führende boolesche Operatoren. Setze AND und OR an den Zeilenanfang, nicht ans Ende. Du liest von oben nach unten, daher gehört der Operator, der zwei Bedingungen verbindet, dorthin, wo dein Auge hinfällt.
  • Konsistente Schlüsselwort-Großschreibung. Großgeschriebene Schlüsselwörter (SELECT, FROM) in Kombination mit klein- oder gemischtgeschriebenen Bezeichnern sind üblich, da sie die Sprache visuell von den Daten trennen. Wähle eine Schreibweise und mische sie nie.
  • Ausrichtungen bei Vergleichen. spalte = wert mit Leerzeichen um den Operator liest sich schneller als spalte=wert.
StilwahlÜbliche OptionenWarum es wichtig ist
Schlüsselwort-SchreibweiseGROSS / kleinTrennt SQL-Schlüsselwörter von deinen Bezeichnern
Einrückung2 oder 4 LeerzeichenZeigt Klausel-Rumpf-Hierarchie; wähle eine und bleibe konsistent
Boolesche Operatorenführend / nachgestelltFührendes AND/OR liest sich bei gestapelten Bedingungen besser
Komma-Positionführend / nachgestelltFührende Kommas erleichtern das Auskommentieren einer Spalte

Dialekt-Eigenheiten, die generische Beautifier zerstören#

Hier scheitern die meisten Einheitsformatierer. SQL ist keine einheitliche Sprache; jede Datenbank hat eine Syntax, die ein naiver Formatierer verstümmelt. Wenn Ihr Beautifier den Dialekt nicht kennt, kann er gültiges SQL zerstören oder es unschön lassen.

  • T-SQL (SQL Server) verwendet eckige Klammern für Bezeichner wie [Order Details] und [user]. Ein Formatierer, der diese nicht erkennt, kann zusätzliche Leerzeichen innerhalb der Klammern einfügen oder sie als separate Tokens behandeln. T-SQL verwendet auch TOP und prozedurale BEGIN ... END-Blöcke, die eine eigene Einrückung benötigen.
  • PostgreSQL hat Dollar-String-Literale ($$ ... $$) für Funktionsrümpfe, ::-Cast-Syntax und Array-Literale. Ein Formatierer muss den Inhalt eines $$-Blocks unangetastet lassen, anstatt ihn wie eine Anweisung neu zu formatieren.
  • MySQL verwendet Backtick-quotierte Bezeichner (`select`) und hat eigene Funktionen sowie eine LIMIT-Syntax.
  • Oracle (PL/SQL) verpackt Logik in DECLARE/BEGIN/END-Blöcke und verwendet (+) für veraltete Outer Joins, was ein einfacher SELECT-Formatierer nicht handhabt.
  • SQLite ist meist standardkonform, toleriert aber doppelt quotierte Zeichenketten an Stellen, die andere ablehnen.

Ein Formatierer, der automatisch erkennt, welchen Dialekt Sie eingefügt haben, und dann die richtigen Tokenisierungsregeln anwendet, macht den Unterschied zwischen sauberer Ausgabe und einer kaputten Abfrage. Deshalb ist die Dialekterkennung wichtiger als die Einrückungseinstellungen.

Tipp: Wenn ein Formatierer jemals ändert, was Ihre Abfrage tut, nicht nur wie sie aussieht, hat er den Dialekt falsch geparst. Formatierung muss rein präsentativ sein. Testen Sie die formatierte Version gegen Ihre Datenbank, bevor Sie ihr vertrauen.

Warum browserbasierte Formatierung für SQL wichtig ist#

Es gibt einen datenschutzspezifischen Aspekt bei SQL, der nicht für die Formatierung von z. B. generischem JSON gilt. Ihre Abfragen enthalten Ihr Schema. Echte Tabellennamen, Spaltennamen und manchmal Literalwerte wie E-Mail-Adressen oder IDs stehen direkt im Text. Wenn Sie das in ein beliebiges Web-Tool einfügen, wird die Abfrage und alles, was sie über Ihr Datenmodell preisgibt, an einen fremden Server gesendet.

Ein Formatierer, der zu 100 % in Ihrem Browser läuft, lädt die Abfrage nie hoch. Der Text wird von JavaScript in der Seite tokenisiert und neu eingerückt, und nichts verlässt den Tab. Für jeden, der Produktionsabfragen, interne Schemanamen oder etwas unter einer NDV formatiert, ist das die einzig sichere Standardeinstellung. Der Molixa SQL-Formatierer arbeitet aus genau diesem Grund vollständig clientseitig: Ihre Abfrage erreicht nie einen Server.

Schritt 1: Fügen Sie die rohe Abfrage ein und lassen Sie den Dialekt erkennen#

Fügen Sie Ihr unformatiertes SQL in den kostenlosen SQL-Formatierer ein. Er erkennt anhand der Syntax, ob Sie PostgreSQL, MySQL, T-SQL, Oracle oder SQLite eingefügt haben (Klammer-Identifikatoren deuten auf T-SQL hin, Backticks auf MySQL, Dollar-Quoting auf PostgreSQL) und wendet den passenden Tokenizer an. Wenn die Erkennung bei einem mehrdeutigen Schnipsel falsch liegt, stellen Sie den Dialekt manuell ein.

Schritt 2: Stellen Sie Groß-/Kleinschreibung und Einzug ein und formatieren Sie#

Wählen Sie Groß- oder Kleinschreibung für Schlüsselwörter und 2- oder 4-Leerzeichen-Einzug, um dem Stil Ihres Teams zu entsprechen. Führen Sie die Formatierung aus. Die Klauseln werden in eigene Zeilen umgebrochen, der Körper wird eingerückt, und boolesche Operatoren werden an den Anfang gesetzt. Lesen Sie das Ergebnis von oben nach unten und bestätigen Sie, dass jeder Join sein ON hat und jede Bedingung dort ist, wo Sie sie erwarten.

Schritt 3: Kopieren Sie es zurück und überprüfen Sie es gegen die Datenbank#

Kopieren Sie die formatierte Abfrage in Ihren Editor oder Ihre Migrationsdatei. Da die Formatierung nur darstellend ist, verhält sich die Abfrage identisch, aber führen Sie sie einmal aus, um dies zu bestätigen, insbesondere wenn das Tool den Dialekt erraten musste. Übergeben Sie dann die lesbare Version, damit die nächste Person, die sie bearbeitet, keine einzeilige Wand vorfindet.

Formatierung in Ihrem Workflow#

Ein Formatierer ist an zwei Zeitpunkten am nützlichsten: wenn Sie eine komprimierte Abfrage von jemand anderem übernehmen, und direkt bevor Sie Ihre eigene committen. Die Formatierung beim Import hilft Ihnen, fremdes SQL zu verstehen; die Formatierung beim Export hält Ihr Repository lesbar. Viele Teams führen den Formatierer auch in einem Pre-Commit-Hook aus, sodass jede eingecheckte Abfrage automatisch einem einheitlichen Hausstil folgt.

Das gleiche browserbasierte Prinzip ohne Upload gilt auch für andere Entwicklerwerkzeuge. Wenn Sie neben SQL auch API-Antworten oder Konfigurationen bereinigen, übernimmt das der JSON-Formatierer, und der Regex-Tester ist praktisch, wenn Sie strukturierte Werte aus Abfrageergebnissen oder Logs extrahieren. Für eine verwandte Konvertierungsaufgabe behandelt unser Leitfaden zum Umwandeln von JSON in TypeScript-Typen denselben browserbasierten, datenschutzorientierten Ansatz.

Häufig gestellte Fragen#

Wie formatiere ich eine SQL-Abfrage für bessere Lesbarkeit? Setzen Sie jede Hauptklausel (SELECT, FROM, WHERE, jedes JOIN, GROUP BY, ORDER BY) in eine eigene Zeile, rücken Sie die Spalten und Bedingungen unter ihrer Klausel ein, platzieren Sie AND und OR am Anfang von gestapelten Bedingungszeilen und verwenden Sie eine einheitliche Groß-/Kleinschreibung für Schlüsselwörter. Der schnellste Weg ist ein SQL-Formatierer, der die gesamte Abfrage mit einem Klick neu einrückt.

Sollen SQL-Schlüsselwörter groß oder klein geschrieben werden? Beides funktioniert; wichtig ist die Konsistenz. Großbuchstaben für Schlüsselwörter und Kleinbuchstaben für Bezeichner ist die gängigste Konvention, da sie die SQL-Sprache visuell von Ihren Tabellen- und Spaltennamen trennt. Wählen Sie einen Stil, wenden Sie ihn auf jede Abfrage an und lassen Sie einen Formatierer ihn durchsetzen, damit Sie nie wieder darüber nachdenken müssen.

Ist es sicher, SQL in einem Online-Tool zu formatieren? Nur, wenn es in Ihrem Browser läuft. Abfragen legen Ihr Schema, echte Tabellen- und Spaltennamen und manchmal Literalwerte offen. Ein Tool, das die Abfrage hochlädt, sendet all das an einen Server. Ein clientseitiger Formatierer wie der Molixa SQL-Formatierer verarbeitet alles auf der Seite und überträgt Ihre Abfrage nie, die sichere Wahl für produktionsrelevantes SQL.

Ändert die Formatierung, was meine SQL-Abfrage tut? Nein. Korrekte Formatierung ist rein darstellerisch; sie fügt Zeilenumbrüche, Einrückungen und Groß-/Kleinschreibungsänderungen hinzu, ohne die Logik zu berühren. Falls ein Formatierer jemals das Ergebnis ändert, hat er Ihren Dialekt falsch geparst. Deshalb ist dialektbewusste Formatierung wichtig und warum Sie die formatierte Abfrage einmal ausführen sollten, um zu bestätigen, dass sie sich identisch verhält.

Kann ein Formatierer PostgreSQL, MySQL und T-SQL verarbeiten? Ja, wenn er den Dialekt erkennt und die richtigen Regeln anwendet. T-SQL verwendet eckige Klammern für Bezeichner, MySQL Backticks und PostgreSQL dollar-quoted Blöcke. Ein Formatierer muss diese erkennen, um sie nicht zu verstümmeln. Der Molixa-Formatierer erkennt automatisch PostgreSQL, MySQL, T-SQL, Oracle und SQLite und erlaubt es, die Wahl manuell zu überschreiben.

Warum AND und OR am Zeilenanfang platzieren? Weil Sie SQL von oben nach unten lesen und ein führender boolescher Operator dort sitzt, wo Ihr Auge am Anfang jeder Bedingung landet, was die logische Struktur offensichtlich macht. Nachgestellte Operatoren verstecken sich am Ende der vorherigen Zeile, wo sie leicht übersehen werden. Führende Kommas in der Select-Liste funktionieren genauso und machen das Auskommentieren einer Spalte trivial.

developersql-formattersqldatabases

More from Molixa

Try Molixa Tools

50+ free AI tools for content creation, SEO, coding, and more. No signup, no watermark.

Explore all tools