Warum SQL formatieren?
Gut formatierter SQL-Code ist leichter zu lesen, zu debuggen und zu warten. Besonders bei komplexen Abfragen mit mehreren JOINs, Unterabfragen oder CASE-Statements ist übersichtliche Formatierung unverzichtbar.
Formatierungsregeln
Keywords in Großbuchstaben
SELECT, FROM, WHERE, JOIN, ORDER BY etc. werden groß geschrieben. Das unterscheidet sie optisch von Tabellen- und Spaltennamen.
Neue Zeile für Hauptklauseln
Jede Hauptklausel beginnt auf einer neuen Zeile:
SELECT
spalte1,
spalte2
FROM
tabelle
WHERE
bedingung = 'wert'
ORDER BY
spalte1Einrückung bei Unterabfragen
Unterabfragen und verschachtelte Strukturen werden eingerückt:
SELECT *
FROM kunden
WHERE id IN (
SELECT kunde_id
FROM bestellungen
WHERE datum > '2024-01-01'
)Best Practices für SQL
- Aussagekräftige Aliase:
SELECT u.name FROM users u - Explizite JOINs:
INNER JOINstatt impliziter Joins - Spalten auflisten:
SELECT a, b, cstattSELECT * - Kommentare: Bei komplexer Logik erklären
SQL-Dialekte
- MySQL: LIMIT, IFNULL, AUTO_INCREMENT
- PostgreSQL: LIMIT, COALESCE, SERIAL
- SQL Server: TOP, ISNULL, IDENTITY
- Oracle: ROWNUM, NVL, SEQUENCES
- SQLite: LIMIT, IFNULL, AUTOINCREMENT
Beispiel: Vorher/Nachher
Unformatiert:
select k.name,k.email,count(b.id) as anzahl from kunden k left join bestellungen b on k.id=b.kunde_id where k.aktiv=1 group by k.id having count(b.id)>5 order by anzahl desc
Formatiert:
SELECT
k.name,
k.email,
COUNT(b.id) AS anzahl
FROM kunden k
LEFT JOIN bestellungen b
ON k.id = b.kunde_id
WHERE k.aktiv = 1
GROUP BY k.id
HAVING COUNT(b.id) > 5
ORDER BY anzahl DESCHäufig gestellte Fragen
Verändert der Formatter die Abfrage?
Nein, die Logik bleibt unverändert. Es werden nur Whitespace, Zeilenumbrüche und Groß-/Kleinschreibung angepasst. Die Abfrage liefert exakt das gleiche Ergebnis.
Sollte ich auch in Produktionscode formatieren?
Ja! Formatierter Code ist besser wartbar. In vielen Teams gibt es SQL-Style-Guides. Für dynamisch generiertes SQL ist Formatierung weniger wichtig.
Gibt es Performance-Unterschiede?
Nein, Whitespace und Formatierung haben keinen Einfluss auf die Performance. Der Datenbank-Parser ignoriert Formatierung komplett.