Wie Sie SQL-Abfragen formatieren

· 7 Min. Lesezeit

Unordentliches SQL ist eine der schnellsten Möglichkeiten, Fehler einzuführen. Wenn eine Abfrage eine einzige lange Zeile ohne Einrückung ist, ist es schwer zu sehen, welche Bedingungen für welche Joins gelten, wo Unterabfragen beginnen und enden, oder ob die Logik korrekt ist. Ein browserbasierter Formatierer erledigt die gesamte Arbeit lokal, ohne Ihre Abfragen auf einen Server hochzuladen.

Warum Formatierung wichtig ist

So formatieren Sie SQL

  1. Fügen Sie Ihr SQL ein: Geben Sie eine minifizierte oder unordentliche Abfrage in den Formatierer ein. Er behandelt SELECT, INSERT, UPDATE, DELETE, CREATE TABLE und komplexe Abfragen mit Unterabfragen und Joins.
  2. Optionen konfigurieren: Wählen Sie die Einrückungsgröße und ob Schlüsselwörter in Großbuchstaben geschrieben werden sollen. Diese Einstellungen entsprechen dem Styleguide Ihres Projekts.
  3. Ergebnis kopieren: Das formatierte SQL ist bereit, in Ihren Editor, Datenbankclient oder Ihre Dokumentation zurückgepasten zu werden.

Wie gute Formatierung aussieht

Eine Abfrage wie select u.name, o.total from users u join orders o on u.id = o.user_id where o.total > 100 and u.active = 1 order by o.total desc wird zu:

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

Jede Klausel beginnt in ihrer eigenen Zeile. Bedingungen sind unter ihrer übergeordneten Klausel eingerückt. Joins und ihre ON-Bedingungen sind klar gepaart.

Eine kurze Geschichte der SQL-Formatierungskonventionen

SQL wurde 1974 von den IBM-Forschern Donald Chamberlin und Raymond Boyce entwickelt, ursprünglich SEQUEL (Structured English Query Language) genannt. Das «QL» im ursprünglichen Namen spiegelte die Absicht wider, dass sich die Sprache wie Englisch lesen sollte. Von Anfang an implizierte dieses menschenlesbare Design eine Konvention: Rücken Sie Ihre Klauseln ein, damit sie von oben nach unten wie Sätze gelesen werden.

Während des größten Teils der 1980er und 1990er Jahre wurde SQL von Hand in Texteditoren geschrieben und die Formatierung war persönlich. Einige Werkstätten übernahmen den «Fluss-Stil» (bei dem jedes Schlüsselwort vertikal an der rechten Seite einer virtuellen Spalte ausgerichtet ist), andere verwendeten den «ägyptischen Stil» (geschweifte-Klammer-in-derselben-Zeile-Äquivalent), und die meisten verwendeten einfach das, was der Autor bevorzugte.

Der erste weit verbreitete SQL-Formatierer war Apex SQL Formatter (2000), gefolgt von Devarts SQL Complete (2002) und Red Gates SQL Prompt (2003). Diese Tools brachten Formatierung auf IDE-Ebene zu SQL Server- und Oracle-Entwicklern. Bis 2010 hatte jede große IDE (SSMS, DataGrip, DBeaver) integrierte SQL-Formatierung, und Online-Formatierer wurden Standard für ad-hoc-Bereinigung.

2017 änderte sich das Formatierer-Ökosystem mit sql-formatter (npm), einer Open-Source-JavaScript-Bibliothek, die die meisten browserbasierten SQL-Formatierer heute antreibt, einschließlich diesem. Moderne Formatierer behandeln Dialekt-Unterschiede (MySQL-Backticks, PostgreSQL-Fensterfunktionen, SQL-Server-eckige-Klammern) und produzieren konsistente, konfigurierbare Ausgabe.

Von großen Unternehmen verwendete SQL-Styleguides

Die meisten professionellen Codebasen folgen einem von mehreren veröffentlichten SQL-Styleguides:

StyleguideHerkunftSchlüsselkonventionen
Mozilla SQL StyleMozillaGROSSBUCHSTABEN-Schlüsselwörter, snake_case-Namen, 2-Leerzeichen-Einrückung
GitLab SQL StyleGitLab Data TeamGROSSBUCHSTABEN-Schlüsselwörter, Kleinbuchstaben-Namen, 4-Leerzeichen-Einrückung, führende Kommas
Holistics SQL StyleHolisticsGROSSBUCHSTABEN-Schlüsselwörter, snake_case, 2 Leerzeichen, nachgestellte Kommas
Simon Holywell SQLPersönlich/beliebt«Fluss»-Ausrichtung, Großbuchstaben-Schlüsselwörter
dbt SQL Styledbt LabsKleinbuchstaben-Schlüsselwörter (moderner Dialekt), snake_case, führende Kommas
PostgreSQL Wiki StylePostgreSQL-CommunityKleinbuchstaben-Schlüsselwörter, snake_case, K&R-Stil-Einrückung

Wenn Sie ein neues Projekt starten, wählen Sie einen der etablierten Guides. Wenn Sie einer bestehenden Codebasis beitreten, folgen Sie dem, was bereits da ist. Konsistenz innerhalb eines Projekts ist wichtiger als irgendein spezifischer Stil.

Häufige Formatierungsoptionen

Dialekt-Unterschiede

SQL-Formatierer müssen dialektspezifische Syntax behandeln:

DialektUnterscheidende Merkmale
PostgreSQLFensterfunktionen, LATERAL JOINS, Dollar-quotierte Strings ($$), CTE-intensiver Stil
MySQL/MariaDBBacktick-Bezeichner, LIMIT-Klausel-Syntax, REPLACE INTO
SQL Server (T-SQL)Eckige-Klammer-Bezeichner, TOP-Klausel, OUTPUT-Klausel, MERGE
Oracle (PL/SQL)DUAL-Tabelle, ROWNUM, hierarchischer CONNECT BY, Punkt-suffigierte Paketaufrufe
SQLiteBegrenztes Typsystem, REPLACE/UPSERT, Einzeldatei-Datenbank
SnowflakeVariant-Datentypen, QUALIFY-Klausel, COPY INTO
BigQueryBacktick-Bezeichner, ARRAY/STRUCT-Typen, EXCEPT/REPLACE-Spaltenlisten
RedshiftVon PostgreSQL abgeleitet, aber unterscheidende DDL, COPY von S3

Ein guter Formatierer erkennt oder akzeptiert einen Dialekt-Hinweis und behandelt dann Syntax, die andere Dialekte ablehnen würden.

Häufige Stolperfallen

Tipps

Datenschutz und vertrauliche Abfragen

Der SQL-Formatierer läuft vollständig in Ihrem Browser. Die Abfragen, die Sie einfügen, die Zwischenverarbeitung und die formatierte Ausgabe bleiben alle auf Ihrem Gerät. Nichts wird auf einen Server hochgeladen, protokolliert oder mit irgendjemandem geteilt.

Dies ist wichtig, weil SQL-Abfragen oft extrem sensible Informationen enthalten: Tabellennamen, die die Produktarchitektur enthüllen, Spaltennamen, die Geschäftslogik und Metriken offenlegen, echte Kunden-IDs in WHERE-Klauseln, interne API-Endpunkte in Stored Procedures, SSNs und Kreditkartennummern in Testdaten, Mitarbeitervergütung in HR-Abfragen, Finanzzahlen in Analytics-Abfragen, Kunden-E-Mail-Adressen in Marketing-Abfragen. Cloud-SQL-Formatierer protokollieren jede Abfrage in ihren Anfrageprotokollen, behalten sie manchmal zur «Service-Verbesserung» und waren an echten Verstößen beteiligt, bei denen eingefügte Produktionsabfragen sensible Schemata und Daten preisgaben. Ein browserbasierter Formatierer hat null Exposition: Die Abfrage verlässt niemals Ihren Computer.

Browserbasierte Formatierung funktioniert auch offline, sobald die Seite geladen ist, nützlich für die Formatierung von Abfragen in Flugzeugen, in sicheren Umgebungen ohne Internetzugang oder überall dort, wo Sie eine Datenbankabfrage nicht in einen Drittanbieterdienst einfügen können oder sollten.

Häufig gestellte Fragen

Sollten SQL-Schlüsselwörter großgeschrieben werden?

Es ist eine weit verbreitete Konvention, SQL-Schlüsselwörter (SELECT, FROM, WHERE) groß und Tabellen- oder Spaltennamen klein zu schreiben. Damit lassen sich Abfragen visuell schneller erfassen. Die meisten Style-Guides empfehlen das, doch keine Datenbank-Engine erzwingt es.

Verändert das Formatieren die Ausführung der Abfrage?

Nein. Leerräume und Einrückung haben keinen Einfluss auf die SQL-Ausführung. Das Formatieren dient ausschließlich der menschlichen Lesbarkeit. Eine minimierte und eine schön eingerückte Abfrage liefern dasselbe Ergebnis.

Welche Einrückungsgröße soll ich verwenden?

Zwei oder vier Leerzeichen sind beide üblich. Wählen Sie, was Ihr Team verwendet, und bleiben Sie konsistent. Die meisten SQL-Formatter lassen das konfigurieren.

Wird mein SQL an einen Server gesendet?

Nein. Die Formatierung erfolgt vollständig in Ihrem Browser. Ihre Abfragen verlassen Ihr Gerät nie.