Zum Inhalt springen

SQL-Formatierer & Validator - SQL-Abfragen Online Kostenlos Formatieren

Kostenloser SQL-Formatierer und Validator. Formatiert SQL automatisch mit korrekter Einrückung und Großschreibung. Überprüft Syntaxfehler sofort. Funktioniert mit MySQL, PostgreSQL, SQL Server, Oracle.

SQL-Formatierer & Validator

Formatieren und validieren Sie SQL-Abfragen mit automatischer Einrückung, Schlüsselwort-Großschreibung und Syntaxfehler-Erkennung.

Geben Sie eine SQL-Abfrage ein, um das formatierte Ergebnis zu sehen.
Ladekalkulator...
📚

Dokumentation

Was ist ein SQL-Formatter und -Validator?

Ein SQL-Formatter ist ein Werkzeug, das eine SQL-Abfrage mit einheitlichen Abständen, Zeilenumbrüchen und großgeschriebenen Schlüsselwörtern neu schreibt, damit sie leichter zu lesen ist. Ein SQL-Validator prüft dieselbe Abfrage auf strukturelle Fehler, etwa ein nicht geschlossenes Anführungszeichen oder eine fehlende Klammer, ohne eine Verbindung zu einer Datenbank herzustellen. Dieses Werkzeug erledigt beides. Es läuft vollständig im Browser, sodass der Abfragetext nie an einen Server gesendet wird.

So formatieren Sie eine SQL-Abfrage

  1. Fügen Sie eine SQL-Abfrage in das Eingabefeld ein oder geben Sie sie dort ein.
  2. Die formatierte Version erscheint automatisch rechts, ohne dass eine Schaltfläche betätigt werden muss.
  3. Validierungsfehler werden in einer Liste unterhalb der Ausgabe angezeigt.
  4. Eine Kopierschaltfläche kopiert die formatierte Abfrage in die Zwischenablage.

Regeln für die SQL-Formatierung

Großschreibung von Schlüsselwörtern

Der Formatierer schreibt eine feste Liste von SQL-Schlüsselwörtern überall groß, wo sie außerhalb eines Strings oder eines in Anführungszeichen gesetzten Bezeichners stehen. SQL-Schlüsselwörter unterscheiden nicht zwischen Groß- und Kleinschreibung, daher ändert dies nur das Aussehen der Abfrage, nicht ihre Wirkung. Die Liste umfasst die Hauptklauseln (SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT, OFFSET), Schlüsselwörter für Verknüpfungen (JOIN, LEFT, RIGHT, INNER, OUTER, FULL, ON), Anweisungstypen (INSERT, UPDATE, DELETE, CREATE, ALTER, DROP) sowie gängige Operatoren und Verknüpfungswörter (AND, OR, NOT, IN, BETWEEN, LIKE, AS, CASE, WHEN, THEN, ELSE, END, UNION, DISTINCT, VALUES, SET und einige weitere).

Einige Wörter, die wie Schlüsselwörter aussehen, bleiben unverändert. Aggregatfunktionen wie COUNT, SUM und AVG stehen nicht auf der Liste, daher bleibt count(*) klein geschrieben, wenn es so eingegeben wurde. Auch die Sortierrichtungen ASC und DESC sowie die Literale TRUE, FALSE und NULL für sich allein bleiben unberührt. Text innerhalb eines String-Literals ('...'), eines in Anführungszeichen gesetzten Bezeichners ("...", die Backticks von MySQL `...` oder die eckigen Klammern von SQL Server [...]) oder eines Kommentars wird nie verändert, unabhängig vom Inhalt.

Zeilenumbrüche und Einrückung

Jede Hauptklausel beginnt in einer neuen Zeile am linken Rand: SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT und OFFSET. JOIN (und seine Varianten wie LEFT JOIN) beginnt ebenfalls in einer neuen Zeile. CASE, WHEN, THEN, ELSE und END beginnen jeweils in einer neuen Zeile, und UNION (oder UNION ALL, zusammen in einer Zeile) wird durch Leerzeilen abgesetzt. Auch jedes Komma beginnt eine neue Zeile, sodass eine Spaltenliste in SELECT oder GROUP BY am Ende eine Spalte pro Zeile enthält.

Einrückungen gibt es nur innerhalb von Klammern. Der Inhalt einer Unterabfrage oder eines gruppierten Ausdrucks wird pro Verschachtelungsebene um zwei Leerzeichen eingerückt. Eine Abfrage ohne Klammern wird so formatiert, dass jede Klausel am linken Rand steht und es überhaupt keine Einrückung gibt.

Beispiel: Formatierung vorher und nachher

Vorher:

1select id, first_name, last_name, email from customers where status = 'active' order by last_name, first_name;
2

Nachher:

1SELECT id,
2first_name,
3last_name,
4email
5FROM customers
6WHERE status = 'active'
7ORDER BY last_name,
8first_name;
9

Jedes Schlüsselwort steht in Großbuchstaben, und jede Klausel sowie jede Spalte steht in einer eigenen Zeile. Da die Abfrage keine Klammern enthält, ist keine Zeile eingerückt.

Klammern ändern dies. Bei der Formatierung von (select count(*) from employees e where e.department_id = d.id) als Teil einer größeren Abfrage werden das innere SELECT, FROM und WHERE um zwei Leerzeichen eingerückt. count bleibt kleingeschrieben, weil es ein Funktionsname und kein gelistetes Schlüsselwort ist.

Was der SQL-Validator prüft

Der Validator sucht ohne Datenbankverbindung nach strukturellen Problemen:

  • Nicht geschlossene Anführungszeichen. Ein einfaches oder doppeltes Anführungszeichen, das geöffnet, aber nie geschlossen wird.
  • Nicht ausgeglichene Klammern. Die Anzahl von ( und ) außerhalb von Strings und Kommentaren muss übereinstimmen.
  • Unterabfragen ohne Klammern. Ein SELECT, das in einem anderen Muster SELECT ... FROM ... SELECT verschachtelt ist und nicht in ( ) steht.
  • WHERE beginnt mit AND oder OR. Eine führende Verknüpfung ohne vorangehenden Ausdruck.
  • JOIN ohne passende Bedingung. Ein JOIN benötigt eine ON- oder USING-Klausel. CROSS JOIN und NATURAL JOIN sind ausgenommen, da sie keine solche Klausel verwenden.
  • Leeres GROUP BY oder ORDER BY. Das Klauselschlüsselwort steht am Ende der Abfrage ohne nachfolgende Spalten.
  • Eine unvollständige WHERE-Bedingung. Ein unvollständiger Vergleich wie WHERE status = ohne Wert oder ein alleinstehendes WHERE ohne nachfolgenden Inhalt am Ende der Abfrage.
  • Ein SELECT ohne FROM. Wird nur gemeldet, wenn die Auswahlliste aus einfachen Spaltennamen besteht; ein Ausdruck, ein Funktionsaufruf oder ein Literal nach SELECT ist für sich allein gültig und wird nicht gemeldet.
  • Reihenfolge der Klauseln. Es gibt zwei konkrete Prüfungen: GROUP BY darf nicht vor WHERE stehen, und ORDER BY darf nicht vor GROUP BY stehen. Diese Prüfungen erfolgen auf der obersten Abfrageebene; Inhalte von Unterabfragen werden ignoriert.

Was nicht geprüft wird

Der Validator weiß nicht, ob Tabellen oder Spalten tatsächlich existieren, ob verknüpfte Spalten kompatible Typen haben oder wie leistungsfähig eine Abfrage ist. Er meldet auch nicht jede Regel, die eine echte Datenbank durchsetzt. Zwei Beispiele: HAVING ohne GROUP BY wird akzeptiert, weil das Vorhandensein von HAVING eine Abfrage zu einer gruppierten Abfrage macht, auch wenn kein GROUP BY vorhanden ist; der Validator gibt dafür daher keinen Fehler aus. Ebenso prüft er nicht, ob jede nicht aggregierte Spalte in der SELECT-Liste auch in GROUP BY vorkommt. Viele Datenbanken setzen diese Regel durch, aber dieses Werkzeug prüft sie nicht. Ein fehlendes Semikolon am Ende wird ebenfalls nicht gemeldet, da ein Semikolon ein Trennzeichen zwischen Anweisungen ist und kein Teil einer einzelnen Abfrage.

Beispiel: Vom Validator erkannte Fehler

1SELECT id FROM orders
2JOIN users
3WHERE status =
4

Diese Abfrage erzeugt zwei Fehler:

  1. „Bei einer oder mehreren JOIN-Anweisungen fehlt die ON-Bedingung.“ JOIN users hat weder eine ON- noch eine USING-Klausel.
  2. „Die WHERE-Bedingung ist unvollständig.“ Nach dem Gleichheitszeichen in status = steht kein Wert.

Häufig gestellte Fragen

Funktioniert dieses Werkzeug mit MySQL, PostgreSQL, SQL Server und Oracle?

Es verarbeitet die grundlegende SQL-Syntax, die diese Datenbanken gemeinsam haben: SELECT, JOIN, WHERE, GROUP BY und ähnliche Klauseln. Datenbankspezifische Syntax, etwa PostgreSQL-Array-Literale oder prozedurale T-SQL-Blöcke, bringt den Formatter nicht aus dem Tritt, erhält aber möglicherweise keine spezielle Behandlung.

Wird die SQL-Abfrage an einen Server gesendet?

Nein. Formatierung und Validierung laufen beide im Browser. Der Abfragetext wird nirgendwohin übertragen.

Werden Funktionsnamen wie COUNT, SUM und AVG großgeschrieben?

Nein. Nur Klauselschlüsselwörter, Join-Schlüsselwörter und eine festgelegte Liste von Operatoren werden großgeschrieben. Funktionsnamen wie count, sum und avg sowie die Wörter asc, desc, true, false und null bleiben genau so, wie sie eingegeben wurden.

Meldet der Validator HAVING ohne GROUP BY als Fehler?

Nein. Eine HAVING-Klausel ohne GROUP BY fasst das gesamte Ergebnis zu einer einzigen Gruppe zusammen, was gültiges SQL ist, daher behandelt der Validator sie nicht als Fehler.

Kann der Validator jeden SQL-Fehler erkennen?

Nein. Er prüft die Struktur: Klammern, Anführungszeichen, einige Regeln zur Reihenfolge der Klauseln und ein paar häufige logische Lücken wie ein JOIN ohne Bedingung. Tabellen- oder Spaltennamen, Datentypen und die Leistung einer Abfrage prüft er nicht. Um zu bestätigen, dass eine Abfrage korrekt läuft, ist weiterhin eine echte Datenbankverbindung nötig.

Ändert die Formatierung die Ausführung einer Abfrage?

Nein. Die Formatierung ändert nur Leerraum und die Großschreibung nicht in Anführungszeichen gesetzter Schlüsselwörter. Alles innerhalb eines Strings, eines in Anführungszeichen gesetzten Bezeichners oder eines Kommentars wird unverändert übernommen, sodass die Abfrage genau dieselbe Bedeutung wie zuvor hat.

Referenzen

  1. PostgreSQL Global Development Group. Lexical Structure. postgresql.org – Schlüsselwörter unterscheiden nicht zwischen Groß- und Kleinschreibung.
  2. Oracle. MySQL 8.0 Reference Manual: Schema Object Names. dev.mysql.com – Der Backtick ist das Anführungszeichen für Bezeichner in MySQL.
  3. Microsoft. Database Identifiers. learn.microsoft.com – Begrenzte Bezeichner in SQL Server verwenden eckige Klammern oder doppelte Anführungszeichen.
  4. PostgreSQL Global Development Group. SELECT. postgresql.org – HAVING macht eine Abfrage auch ohne GROUP BY zu einer gruppierten Abfrage.