Zurück zur Artikelliste Artikel
11 Leseminuten

Die Geschichte der SQL-Standards

Hat sich der SQL-Standard in den mehr als 30 Jahren, die es ihn gibt, verändert? Auf jeden Fall! Erfahren Sie mehr über den Weg von SQL-86 zum modernen SQL, der heutigen Standard-Datensprache.

SQL wurde in den frühen 1970er Jahren von IBM entwickelt. Im Jahr 1974 veröffentlichten Donald Chamberlin und Raymond Boyce den Artikel SEQUEL: A Structured English Query Language, mit dem SQL der Welt vorgestellt wurde. Der Artikel enthielt die BNF-Grammatik (eine detaillierte technische Beschreibung der Sprachsyntax) für die Sprache, was IBM später als Fehler ansah. Die Veröffentlichung der Grammatik ermöglichte es verschiedenen Anbietern, SQL in ihren eigenen Datenbankmaschinen zu implementieren. Die SQL-Implementierungen der verschiedenen Anbieter wichen jedoch stark voneinander ab, da jeder Anbieter seine eigenen Erweiterungen für SQL einführte. Mitte der 1980er Jahre kam es zu erheblichen Inkompatibilitäten zwischen den verschiedenen SQL-Versionen.

Ebenfalls in den 1980er Jahren begann das American National Standards Institute (ANSI) mit der Arbeit an einem SQL-Standard. Ziel der Einführung eines Standards war es, die Portabilität von SQL-Anwendungen zwischen konformen Produkten zu ermöglichen.

SQL-86

Der erste SQL-Standard war SQL-86. Er wurde 1986 als ANSI-Norm und 1987 als Norm der Internationalen Organisation für Normung (ISO) veröffentlicht. Ausgangspunkt für den ISO-Standard war die SQL-Standardimplementierung von IBM. Diese Version des SQL-Standards ist auch als SQL 1 bekannt.

Der SQL-86-Standard umfasst 120 Seiten. Er enthält die Syntax für die Anweisungen SELECT, INSERT, UPDATE und DELETE. Die SELECT -Syntax ermöglicht die Filterung mit WHERE, die Verwendung von GROUP BY mit mehreren Spalten (aber nicht nach Ausdrücken) und die Filterung von Gruppen mit HAVING. Es gibt keine explizite JOIN Syntax; Sie können mehrere Tabellen in der FROM Klausel auflisten, um im Wesentlichen eine Kreuzverknüpfung zu erhalten, die Sie später mit WHERE filtern können. Es gibt keine Möglichkeit, OUTER JOINs mit dieser Syntax zu verwenden. Die SELECT -Syntax lässt jedoch Unterabfragen zu.

Der Standard verfügt auch über eine Schemadefinitionssyntax: Sie können Tabellen erstellen (nur mit den Einschränkungen UNIQUE und NOT NULL ), Ansichten erstellen und Zugriffsrechte gewähren. Die im Standard eingeführten Datentypen sind Zeichenketten und Zahlen (NUMERIC, DECIMAL, INTEGER, SMALLINT, FLOAT, REAL und DOUBLE PRECISION). Es gibt keine ALTER, DROP, oder REVOKE Anweisungen. Es gibt auch Einbettungen von SQL in verschiedene Programmiersprachen (Cobol, Fortran, Pascal und PL/1).

Im Allgemeinen können Sie die Standarddokumente von ISO oder ANSI kaufen, auch alte und zurückgezogene Versionen. Wie Evan Carroll in seinem Stack Overflow-Beitrag berichtet, ist es jedoch nicht einfach, den SQL-86-Standard heutzutage zu bekommen. Aber wenn Sie Interesse haben, können Sie SQL-86 unter dem Namen FIPS-127 finden.

SQL-89

Der nächste SQL-Standard war SQL-89, der 1989 veröffentlicht wurde. Dabei handelte es sich um eine geringfügige Überarbeitung des früheren Standards, eine Obermenge von SQL-86, die SQL-86 ersetzte. Der Umfang des Standards änderte sich nicht.

Die wichtigsten neuen Funktionen waren Integritätseinschränkungen: Zusätzlich zu den bereits vorhandenen Optionen UNIQUE, NOT NULL und Check in Views wurden Primärschlüssel, Fremdschlüssel sowie die Einschränkungen DEFAULT und CHECK hinzugefügt. Der Standard fügte auch neue Sprachbindungen für C und Ada hinzu.

SQL-92

Die nächste Überarbeitung des Standards war SQL-92 - und es war eine große Überarbeitung. Die mit SQL-92 eingeführte Sprache wird manchmal auch als SQL 2 bezeichnet. Das Standarddokument wuchs von 120 auf 579 Seiten. Ein Großteil des Zuwachses war jedoch auf die genauere Spezifikation bestehender Funktionen zurückzuführen.

Die wichtigsten neuen Merkmale waren:

  • Eine explizite JOIN -Syntax und die Einführung von Outer-Joins: LEFT JOIN, RIGHT JOIN, FULL JOIN.
  • Die Einführung von NATURAL JOIN und CROSS JOIN
  • Die Einführung von Mengenoperationen (Mengenvereinigung, Mengenüberschneidung und Mengendifferenz).
  • Die Einführung des bedingten Ausdrucks CASE WHEN.
  • Neue skalare Operationen: String-Verkettung, Teilstring-Extraktion und Datums- und Zeitmathematik.
  • Der CAST Operator, der das explizite Casting von Werten in Typen ermöglicht.

SQL-92 führte auch neue Datendefinitionsanweisungen ein: ALTER und DROP für Tabellen und Ansichten sowie neue Datentypen (date, time, timestamp, interval, bit string, varchar string, und national character strings). Diese Version fügte ein Informationsschema hinzu (die Standardmethode zum Abrufen von Datenbank-Metadaten, wie Tabellennamen, Tabellenspalten, Spaltentypen und Tabellenbeschränkungen). Außerdem wurden temporäre Tabellen, Transaktionsisolationsebenen und die dynamische Ausführung von Abfragen (dynamisches SQL) eingeführt.

Der SQL-Standard wurde in drei Konformitätsstufen unterteilt: Einstiegsstufe (die Einstiegsstufe SQL-92 ähnelte SQL-89 mit Integritätseinschränkungen), Zwischenstufe und vollständige Stufe.

SQL-92 ist die Grundlage der Abfragesprache, die heute in relationalen Datenbanken verwendet wird. Wenn von "SQL" die Rede ist, meinen die meisten Leute SQL-92. Datenbanken, die bereits 1992 existierten, änderten ihre SQL-Implementierung, um mit dem Standard konform zu sein. Neuere Datenbanken verwenden den Standard als Referenz für ihre Implementierung.

SQL-92 ist immer noch das, was in den Schulen als "SQL" gelehrt wird. Und das zu Recht - SQL-92 ist ein sehr guter Ausgangspunkt für das Erlernen von SQL. Für viele Leute ist es ausreichend, um ihre tägliche Arbeit zu erledigen. Erweiterte Funktionen können Sie später lernen, wenn Sie sie brauchen. Und die meisten Datenbanken unterstützen SQL-92. Keine Implementierung ist zu 100 % konform mit dem Standard, aber die Inkompatibilitäten sind nicht so wichtig, vor allem, wenn man gerade erst anfängt.

Bei LearnSQL.de ist Standard-SQL der wichtigste Dialekt, den wir unterrichten. Wir sind der Meinung, dass Sie mit der Standardsprache mit den meisten Datenbanken arbeiten können, wenn Sie sie lernen. Sie ist die Grundlage unserer Einsteigerkurse; SQL für Anfänger lernen Sie die Anweisung SELECT mit allen in SQL-92 verfügbaren Funktionen, einschließlich verschiedener Arten von JOIN, GROUP BY, Mengenoperationen und Unterabfragen. Der Kurs Wie man Daten in einer Datenbank in SQL ändert lernen Sie die Anweisungen INSERT, UPDATE und DELETE, während SQL-JOINs werden Sie verschiedene Arten von JOINs üben können.

Wenn Sie sich für die Erstellung von Tabellen interessieren, empfehlen wir Ihnen unsere Lernreihe zur Erstellung von Datenbankstrukturen. Der Track besteht aus fünf Kursen, in denen Sie lernen, wie man Tabellen erstellt, Einschränkungen definiert, geeignete Datentypen auswählt und Ansichten mit der Standard-SQL-Syntax erstellt, die leicht zwischen verschiedenen Datenbank-Engines übertragbar ist.

SQL:1999

SQL:1999 (auch SQL 3 genannt) war die vierte Überarbeitung des SQL-Standards. Ab dieser Version wurde im Namen der Norm ein Doppelpunkt anstelle eines Bindestrichs verwendet, um mit den Namen anderer ISO-Normen konsistent zu sein. Diese Norm wurde in mehreren Teilen zwischen 1999 und 2002 veröffentlicht.

Die erste Ausgabe von SQL:1999 bestand aus fünf Teilen:

  • Teil 1: SQL/Framework (100 Seiten) definierte die grundlegenden Konzepte von SQL.
  • Teil 2: SQL/Foundation (1050 Seiten) definierte die grundlegende Syntax und die Operationen von SQL: Typen, Schemata, Tabellen, Ansichten, Abfrage- und Aktualisierungsanweisungen, Ausdrücke usw. Dieser Teil ist der wichtigste für regelmäßige SQL-Benutzer.
  • Teil 3: SQL/CLI (Call Level Interface) (514 Seiten) definiert eine Anwendungsprogrammierschnittstelle für SQL.
  • Teil 4: SQL/PSM (Persistent Stored Modules) (193 Seiten) definiert Erweiterungen, die SQL prozedural machen.
  • Teil 5: SQL/Bindings (270 Seiten) definierte Methoden zur Einbettung von SQL-Anweisungen in Anwendungsprogramme, die in einer Standardprogrammiersprache geschrieben wurden.

Drei weitere Teile, die ebenfalls als Teil von SQL:1999 gelten, wurden später veröffentlicht.

Mit SQL:1999 wurden viele wichtige Funktionen eingeführt, die Bestandteil des modernen SQL sind. Zu den wichtigsten gehören die Common Table Expressions (CTEs). Dies ist eine sehr nützliche Funktion, mit der Sie lange und komplexe SQL-Abfragen organisieren und lesbarer machen können. Wenn die Syntax WITH [RECURSIVE] verwendet wird, können CTEs auch rekursiv hierarchische Daten verarbeiten. Wie man rekursive Abfragen in SQL schreibt, können Sie in dem interaktiven Kurs LearnSQL.deRekursive Abfragen Kurs.

Mit SQL:1999 wurden auch OLAP-Funktionen (Online Analytical Processing) eingeführt, die bei der Erstellung von Geschäftsberichten hilfreich sind. Die Erweiterungen GROUP BY ROLLUP , CUBE und GROUPING SETS wurden zu diesem Zeitpunkt in den Standard aufgenommen. Sie können sie in unserem Kurs GROUP BY Extensions erlernen (oder lesen Sie über den Kurs und die Erweiterungen in unserem Artikel der Kurs des Monats Serie für November 2020).

Einige kleinere Ergänzungen zu SQL im SQL:1999-Standard umfassen die Verwendung von Ausdrücken in ORDER BY, die Aufnahme von Datentypen für große binäre Objekte (LOB und CLOB) und die Einführung von Triggern.

Der Umfang des SQL-Standards ist zwischen 1992 und 1999 erheblich gewachsen. Der SQL-92-Standard umfasste fast 600 Seiten, war aber dennoch für normale SQL-Benutzer zugänglich. In Büchern wie A Guide to the SQL Standard von Christopher Date und Hugh Darwen wurde der SQL-92-Standard diskutiert und erläutert.

Ab SQL:1999 war der Standard - jetzt über 2.000 Seiten - für normale SQL-Anwender nicht mehr zugänglich. Er ist zu einer Ressource für Datenbankexperten und Datenbankanbieter geworden. Der Standard ist die Richtschnur für die Entwicklung von SQL in den wichtigsten Datenbanken; er zeigt, welche neuen Sprachfunktionen implementiert werden sollten, um auf dem neuesten Stand zu bleiben. Er standardisiert auch die Syntax neuer SQL-Funktionen und stellt sicher, dass die wichtigsten Datenbanken sie auf ähnliche Weise implementieren und eine ähnliche Syntax und Semantik verwenden.

Die veränderte Rolle des SQL-Standards wird durch die Tatsache unterstrichen, dass es keine offizielle Stelle mehr gibt, die die Einhaltung des Standards zertifiziert. Bis 1996 bescheinigte das Datenmanagement-Normenprogramm des National Institute of Standards and Technology (NIST) die Übereinstimmung von SQL-DBMS mit dem SQL-Standard. Jetzt zertifizieren die Hersteller die Konformität ihrer Produkte selbst.

SQL:2003 und darüber hinaus

Im 21. Jahrhundert wurde der SQL-Standard regelmäßig aktualisiert.

Der Standard SQL:2003 wurde am 1. März 2004 veröffentlicht. Die wichtigste Neuerung waren die Fensterfunktionen, eine leistungsstarke analytische Funktion, die es ermöglicht, zusammenfassende Statistiken zu berechnen, ohne Zeilen zusammenzufassen. Die Fensterfunktionen haben die Ausdruckskraft von SQL erheblich gesteigert. Sie sind äußerst nützlich bei der Erstellung aller Arten von Geschäftsberichten, der Analyse von Zeitreihendaten und der Analyse von Trends. Die Aufnahme von Fensterfunktionen in den Standard fiel mit der Popularität von OLAP und Data Warehouses zusammen. Man begann, Datenbanken zu nutzen, um datengestützte Geschäftsentscheidungen zu treffen. Dieser Trend gewinnt dank der wachsenden Datenmengen, die alle Unternehmen sammeln, immer mehr an Fahrt. Sie können Fensterfunktionen mit unserem Fensterfunktionen Kurs.(Lesen Sie hierüber den Kurs oder warum es sich lohnt, SQL-Fensterfunktionen zu lernen.) Mit SQL:2003 wurden auch XML-bezogene Funktionen, Sequenzgeneratoren und Identitätsspalten eingeführt.

Nach 2004 gab es keine größeren bahnbrechenden Ergänzungen der Sprache. Die Änderungen im SQL-Standard spiegelten die damaligen technologischen Veränderungen wider. Mit SQL:2003 wurden XML-bezogene Funktionen eingeführt, um die Interoperabilität zwischen Datenbanken und XML-Technologien zu ermöglichen, die in den frühen 2000er Jahren der letzte Schrei waren. In SQL:2006 wurde die Verwendung von SQL mit XML weiter spezifiziert. Es handelte sich dabei nicht um eine Überarbeitung des gesamten SQL-Standards, sondern nur um Teil 14, der sich mit der Interoperabilität von SQL und XML befasst.

Die nächsten Überarbeitungen des Standards brachten kleinere Verbesserungen an der Sprache. SQL:2008 legalisierte die Verwendung von ORDER BY außerhalb von Cursor-Definitionen(!) und fügte INSTEAD OF Trigger, die Anweisung TRUNCATE und die Klausel FETCH hinzu. SQL:2011 fügte temporale Daten und einige Verbesserungen an Fensterfunktionen und der FETCH Klausel hinzu.

SQL:2016 fügte den Zeilenmusterabgleich und polymorphe Tabellenfunktionen sowie die lang erwartete JSON-Unterstützung hinzu. In den 2010er Jahren löste JSON XML als gängiges Datenaustauschformat ab; moderne Internetanwendungen verwenden JSON anstelle von XML als Datenformat. Die aufkommende NoSQL-Bewegung hat JSON ebenfalls populär gemacht; Dokumentendatenbanken speichern JSON-Dateien, und Key-Value-Stores sind mit dem JSON-Format kompatibel. Der SQL-Standard fügte JSON-Unterstützung hinzu, um die Interoperabilität mit modernen Anwendungen und neuen Arten von Datenbanken zu ermöglichen.

Der aktuelle SQL-Standard ist SQL:2019. Darin wurde Teil 15 hinzugefügt, der die Unterstützung mehrdimensionaler Arrays in SQL definiert.

Was ist Ihre Zukunft mit SQL?

Wenn Sie auf die über 30-jährige Geschichte von SQL zurückblicken, können Sie die verschiedenen Phasen seiner Entwicklung erkennen. SQL 1 in den 1980er Jahren (SQL-86, SQL-89) war der erste Versuch, die Definition der Sprache zu standardisieren und zu formalisieren. SQL-92 bildete die Grundlage für die stabile Sprache, die wir heute kennen und die heute die Standardsprache für alle wichtigen Datentechnologien ist.

SQL:1999 und SQL:2003 bildeten die Grundlage für modernes SQL, mit der Hinzufügung von Fensterfunktionen, Common Table Expressions und GROUP BY Erweiterungen. Nach 2003 erreichte die Sprache die Phase der Stabilität und Reife. Die Kernsprache ändert sich nicht mehr, aber es werden neue Funktionen hinzugefügt, um die bestehende Sprache zu verbessern und neue Technologien wie XML oder JSON zu unterstützen.

Infografik

Der SQL-Standard ist für normale SQL-Benutzer keine Referenz mehr. Die Vorteile eines Standards sind jedoch zahlreich. Der Standard:

  • Er zeigt auf, welche Spracherweiterungen wichtig und nützlich sind.
  • Leitfaden für die Entwicklung von SQL-Implementierungen in Datenbanken und anderen Datenverarbeitungstechnologien.
  • Er stellt die gemeinsame Syntax und Semantik bereit, die von den meisten Datenverarbeitungstechnologien implementiert wird.

Der Standard garantiert nicht, dass alle SQL-Implementierungen perfekt kompatibel sind, aber er garantiert, dass sie größtenteils aufeinander abgestimmt sind und sich alle in dieselbe Richtung entwickeln.

Auf LearnSQL.de können Sie alle modernen SQL-Funktionen in unseren interaktiven Kursen erlernen:

Nun, da Sie die Geschichte von SQL kennen, wie wird Ihre Zukunft mit dieser Sprache aussehen? Wir hoffen, dass Sie es lernen und selbst erleben werden, wie leistungsfähig und effizient SQL ist!

Quellen: