SQL aus Logs für die Code-Review aufbereiten
Eine Abfrage aus einem Anwendungslog enthält oft alle Spalten, Joins und Filter in einer einzigen Zeile. Mit einem SQL-Formatter lassen sich diese Teile leichter voneinander unterscheiden. Einrückungen machen sichtbar, wo eine Unterabfrage beginnt und welche Bedingungen zusammengehören.
Fügen Sie die Abfrage ein, wählen Sie den Dialekt und stellen Sie zwei Leerzeichen, vier Leerzeichen oder Tabulatoren ein. Für Schlüsselwörter stehen Großschreibung, Kleinschreibung und die ursprüngliche Schreibweise zur Auswahl. Das Ergebnis erscheint neben dem unveränderten Ausgangstext. Nach Änderungen an Eingabe oder Optionen wird das alte Ergebnis gelöscht; formatieren Sie dann erneut.
Der Dialekt richtet sich nach der Quelle
Zur Auswahl stehen Standard-SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle SQL, BigQuery und Snowflake. Der passende Dialekt hilft dem Formatter, Bezeichner in Backticks oder eckigen Klammern und datenbankspezifische Syntax zu erkennen.
Die Auswahl ist keine Konvertierung zwischen Datenbanken. Eine MySQL-Abfrage wird durch die Einstellung PostgreSQL nicht automatisch portierbar. Funktionen und Schema bleiben unverändert; Oracle SQL bedeutet ebenfalls keine allgemeine Unterstützung für gespeicherte Prozeduren.
Lesbare Abfragen sind leichter zu prüfen
Bei Aggregationen lassen sich WHERE und HAVING durch getrennte Abschnitte schneller vergleichen. CTEs und verschachtelte Abfragen profitieren von einheitlicher Einrückung. Ob die Bedingungen fachlich stimmen, kann die Formatierung jedoch nicht entscheiden.
Die Schreibweise erkannter Schlüsselwörter lässt sich ändern; Bezeichner, Funktionsnamen und Datentypen behalten ihre Groß- und Kleinschreibung. Parameter werden nicht mit Werten befüllt. Kommentare bleiben erhalten, können aber anders angeordnet werden. Prüfen Sie das Ergebnis vor dem Einsatz mit den Werkzeugen Ihrer Datenbank.
SQL-Beispiele mit Formatierung
Die Beispiele verwenden fiktive Daten, großgeschriebene Schlüsselwörter und zwei Leerzeichen Einrückung. Beim Laden im Editor wird der passende Dialekt ausgewählt.
JOIN und Aggregation
Bezahlte Bestellungen je Kunde zusammenfassen: Join-Bedingung, Zeilenfilter und Aggregatfilter werden getrennt lesbar.
SELECT
c.id,
c.name,
count(o.id) AS order_count,
sum(o.total) AS revenue
FROM
customers c
JOIN orders o ON o.customer_id = c.id
WHERE
o.status = 'paid'
GROUP BY
c.id,
c.name
HAVING
sum(o.total) > 1000
ORDER BY
revenue DESC;Zurück zum Formatter ↑CTE und Fensterfunktion
Eine PostgreSQL-CTE mit ROW_NUMBER ordnet Bestellungen innerhalb eines Kunden. Die Einrückung zeigt die verschachtelte Struktur.
WITH
ranked_orders AS (
SELECT
id,
customer_id,
total,
row_number() OVER (
PARTITION BY
customer_id
ORDER BY
created_at DESC
) AS position
FROM
orders
WHERE
created_at >= date '2024-01-01'
)
SELECT
customer_id,
id,
total
FROM
ranked_orders
WHERE
position = 1
ORDER BY
customer_id;Zurück zum Formatter ↑INSERT und Kommentare
MySQL-Beispiel mit Backticks, Kommentar und einem Semikolon innerhalb einer Zeichenkette. Der Text bleibt ein Datenwert.
-- Fictional seed data
INSERT INTO
`products` (`sku`, `name`, `price`)
VALUES
('DEMO-01', 'Desk lamp; warm light', 29.95),
('DEMO-02', 'Reader''s notebook', 8.50);Zurück zum Formatter ↑Häufige Fragen
Wie speichere ich das Ergebnis?
Kopieren Sie das formatierte SQL oder laden Sie es als formatted.sql herunter. Mit Ctrl+Enter beziehungsweise Command+Enter unter macOS können Sie die Formatierung per Tastatur starten.
Wird meine SQL-Abfrage übertragen?
Die Formatierung läuft in einem Web Worker im Browser. Das Werkzeug sendet keine Abfragen an eine Formatierungs-API, verbindet sich nicht mit einer Datenbank und speichert die Eingabe weder dauerhaft noch in der URL.
Prüft der Formatter Syntax und Performance?
Nein. Er ordnet Leerraum und die Schreibweise von Schlüsselwörtern. Tabellen, Spalten, Datentypen, Berechtigungen und Ausführungspläne werden nicht geprüft. Auch erfolgreich formatiertes SQL kann in Ihrer Datenbank ungültig sein.
Sind mehrere Anweisungen möglich?
Ja, gewöhnliche SQL-Anweisungen können durch Semikolons getrennt werden. Semikolons innerhalb erkannter Zeichenketten bleiben Teil der Daten. Eigene DELIMITER-Befehle, Prozeduren und klientenspezifische Skripte gehören nicht zum unterstützten Ablauf.
Warum schlägt die Formatierung fehl?
Prüfen Sie zuerst Dialekt, Anführungszeichen und Klammern. Template-Ausdrücke oder Code-Interpolation können unbekannt sein. Es gelten höchstens 50.000 Zeichen und zehn Sekunden pro Durchlauf. Teilen Sie große Skripte auf.
Was passiert mit Kommentaren und Platzhaltern?
Kommentare bleiben erhalten, ihre Position oder Abstände können sich ändern. Unterstützte dialektspezifische Platzhalter werden nicht ersetzt. Kommentare zum Deaktivieren des Formatters können Bereiche von der Formatierung ausnehmen.
