SQL-Formatierer

Eine SQL-Abfrage einfügen und neu formatiert bekommen, mit jeder Klausel (SELECT, FROM, WHERE, JOIN, GROUP BY…) in einer eigenen eingerückten Zeile.

1.120 Aufrufe

Wie es funktioniert

Eine lange, in einer einzigen Zeile geschriebene SQL-Abfrage ist auf ihre Struktur hin schwer zu überblicken — wo endet die WHERE-Klausel und wo beginnt die GROUP BY, welcher JOIN gehört zu welcher Tabelle? Dieses Tool nimmt rohes SQL entgegen und bricht es an jeder wichtigen Klauselgrenze auf eigene Zeilen um: SELECT, FROM, WHERE, die gesamte JOIN-Familie (INNER JOIN, LEFT JOIN, RIGHT JOIN…), GROUP BY, ORDER BY, HAVING und UNION. Mit AND/OR verkettete Bedingungen sowie Join-Bedingungen nach ON werden eine Ebene unter der Klausel eingerückt, zu der sie gehören, und Schlüsselwörter werden zur Konsistenz optional großgeschrieben. Eine Abfrage wie select id,name from users where active=1 and role='admin' order by name wird zu einem Block, in dem SELECT, FROM, WHERE und ORDER BY jeweils eine eigene Zeile beginnen und die AND-Bedingung unter WHERE eingerückt ist — dieselbe Information, nur so angeordnet, wie sie in einem Code-Review von Hand geschrieben würde.

Das zählt genau dort am meisten, wo es von Hand am schwersten ist: Abfragen mit mehreren verknüpften Tabellen, eine in eine WHERE-Klausel eingebettete Unterabfrage oder ein mehrzweigiger CASE-Ausdruck. Konsistente Einrückung ist es, was einem Prüfer erlaubt, eine fehlende Join-Bedingung oder eine falsch platzierte Klammer auf einen Blick zu erkennen, statt Zeichen für Zeichen zu lesen.

Was Sie wissen sollten

Dies ist ein Formatierer, kein Validator — er ordnet nur Leerzeichen und Zeilenumbrüche um eine feste Menge erkannter Schlüsselwörter herum neu an; er zerlegt die Abfrage nie in einen Syntaxbaum und führt sie nie gegen eine Datenbank aus. Ein wirklich dialektbewusster Validator bräuchte einen vollständigen Parser für jede SQL-Variante, denn MySQL, PostgreSQL, SQL Server und SQLite weichen alle in Details wie dem Quoting von Bezeichnern, Datumsfunktionen und sogar darin ab, welche Anweisungen überhaupt zulässig sind — eine oberflächliche Prüfung im Browser, die vorgibt, das zu validieren, würde nur falsches Vertrauen erzeugen. Sieht die formatierte Ausgabe seltsam aus, bedeutet das meist, dass die Eingabe bereits einen Tippfehler oder eine unausgeglichene Klammer enthielt; das Tool formatiert darum herum, statt es zu melden.

Da es rein auf der Textebene arbeitet, ist es sicher, es auf Produktionsabfragen anzuwenden: Bezeichner, String-Literale, Zahlenwerte und Operatoren werden nie umgeschrieben, hinzugefügt oder entfernt — nur Leerzeichen ändern sich, dazu optional die Groß-/Kleinschreibung der Schlüsselwörter. Nichts wird irgendwohin gesendet oder ausgeführt; die Abfrage verlässt den Browser nie.

Häufig gestellte Fragen

Sagt mir das, ob mein SQL korrekt ist?

Nein — absichtlich. Echte SQL-Validierung hängt davon ab, welche Datenbank Sie anvisieren (MySQL, PostgreSQL, SQL Server haben alle unterschiedliche Syntax-Eigenheiten), und ein leichtes Browser-Tool kann das nicht ehrlich leisten. Dies formatiert nur das Layout neu, es behauptet nie, dass Ihre Abfrage gültig oder ungültig ist.

Bricht das meine Abfrage?

Nein — es fügt nur Zeilenumbrüche und Einrückungen ein und schreibt optional Schlüsselwörter groß. Der SQL-Text selbst (Bezeichner, Werte, Operatoren) wird nie verändert.

Kann ich das für jeden SQL-Dialekt verwenden (MySQL, PostgreSQL, SQL Server)?

Ja, auf Layout-Ebene — die Klausel-Schlüsselwörter, die dieser Formatierer erkennt (SELECT, FROM, WHERE, JOIN, GROUP BY und so weiter), sind praktisch jedem SQL-Dialekt gemeinsam. Was er nicht tut, ist dialektspezifische Syntax, Funktionen oder Quoting-Regeln zu validieren; die unterscheiden sich zwischen den Engines ausreichend, dass nur das tatsächliche Ausführen der Abfrage gegen die echte Datenbank Korrektheit bestätigen kann.

Was passiert mit Unterabfragen oder CTEs?

Verschachtelte SELECT-Anweisungen und WITH-Blöcke (Common Table Expressions) werden rekursiv mit denselben Klausel-Umbruchregeln formatiert, sodass eine innere Abfrage ihre eigene eingerückte Struktur innerhalb der äußeren erhält — genau dort hilft Formatierung am meisten, denn tief verschachtelte Abfragen sind als einzelne Zeile am schwersten zu lesen.

Verändert die Formatierung, wie sich meine Abfrage verhält?

Nein. Es werden nur Leerzeichen, Zeilenumbrüche und optional die Groß-/Kleinschreibung der Schlüsselwörter angefasst. Jeder Bezeichner, jedes Literal, jeder Vergleich und jeder Operator bleibt genau so erhalten, wie er geschrieben wurde, sodass die formatierte Abfrage funktional identisch zum Original ist — sie liefert in beiden Fällen dieselbe Ergebnismenge.

Kommentare

Noch keine Kommentare — schreiben Sie den ersten!

Ähnliche Tools