Modern SQL: Eröffnungs-Artikel


Gerade eben habe ich meine neue Webseite modern-sql.com in Betrieb genommen. Sie ist momentan noch sehr klein – nur sechs Seiten mit echtem Inhalt – wird aber in den nächsten Monaten und Jahren wachsen und schlussendlich vielleicht ein Buch werden, genauso wie auch aus Use-The-Index-Luke.com ein Buch wurde. Daher dachte mich mir, ich hole dich jetzt gleich mit an Board, damit du mit der Seite wachsen kannst.

Was ist also modern SQL? Noch eine SQL-Referenz? Mitnichten. Es gibt bereits genügend Referenzen im Internet. Und alle leiden an denselben Problemen:

  • Sie decken kaum mehr als entry-levelSQL-92 ab. Manche Anleitungen erwähnen nicht einmal, dass sie eigentlich einen proprietären Dialekt beschreiben.

  • Die Beispiele zeigen nur die Syntax, aber nicht wie man damit reale Probleme löst.

  • Sie dokumentieren nicht, welche Datenbanken welche Funktionen unterstützen.

Modern SQL ist anders:

  • Modern SQL basiert auf SQL:2016 – der aktuellen Version des ISO-Standards. Dennoch berücksichtigt modern SQL, dass manche Datenbanken noch gegen ältere Standards entwickelt werden oder nur einen Teil der Standard-Funktionen unterstützten.

  • Modern SQL zeigt, wie man reale Probleme mit aktuellen SQL-Funktionen löst. Es zeigt jedoch auch „konforme Alternativen“ um dasselbe Problem mit anderen (oft älteren) Standard-Methoden zu lösen. Wenn nötig und möglich werden auch „proprietäre Alternativen“ aufgezeigt.

    Beachte, dass es hier eine Hierarchie gibt: die empfohlene (die idiomatischste) Lösung zuerst, standardkonforme Alternativen danach und nur wenn nötig proprietäre Alternativen.

  • Modern SQL dokumentiert die Verfügbarkeit der SQL-Funktionen in sechs SQL-Datenbanken (Beispiel aus values):

BigQuery 2025-09-02aDb2 (LUW) 12.1.2aaacMariaDB 12.0.2aaaaMySQL 9.4.0bbbOracle DB 23.9aacPostgreSQL 17aaaaSQL Server 2022aaSQLite 3.50.0aaaaMehrzeilen insert … valuesValues als eigene AnweisungFrom|Join (values …) tWith t as (values …)
  1. Nur ohne Schlüsselwort row
  2. Nur mit Schlüsselwort row: values row('r1c1','r1c2'), row('r2c1', 'r2c2')
  3. Erfordert Spaltennamen in der With-Klausel: with x (c1,c2) as (values …) • Nur ohne Schlüsselwort row

Klick auf eine Funktion (z. B. „gültig, wo select gültig ist“) um zu sehen, wie sich die Verfügbarkeit entwickelt hat.

Hier kann man sehen, dass SQLite values erst seit Kurzem überall akzeptiert, wo select gültig ist. In dieser Ansicht ist für die Datenbanken, die eine Funktion nicht unterstützen, auch festgehalten welche Version geprüft wurde.

modern SQL wird unweigerlich beides werden: eine Hommage an den SQL-Standard und eine Beschwerde über die mangelnde Umsetzung. Die Verfügbarkeitsdokumentation und die oben erwähnten alternativen Lösungen (konforme und proprietäre) sorgen dafür, dass das Jammern produktiv bleibt. Sieh dir zum Beispiel select ohne from an.

Dies ist nur der erste Schritt einer langen Reise. Ich lade dich ein, dieser Reise per Twitter, E-Mail oder RSS zu folgen.

20 Jahre SQL-Evolution kann man nicht an einem Tag nachholen. Abonniere den Newsletter via E-Mail, Bluesky oder RSS, um sukzessive aufzuholen und modern-sql.com am Radar zu behalten.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Neuigkeiten Abonnieren

Markus Winands MailinglistenMarkus Winands RSS-FeedMarkus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf TwitterMarkus Winand auf Bluesky
Copyright 2015-2025 Markus Winand. Alle Rechte vorbehalten.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO