Nachdem E.F. Codd seinen Bahnbrechenden Artikel A relational model of data for large shared data banks im Jahre 1970 im amerikanischen Magazin Communication of the ACM (Association of Computer Machinery) veröffentlicht hatte, in dem er das relationale Modell vorstellte, wurde SQL in einer Frühform von IBM entwickelt. Damals wurde es unter dem Namen SEQUEL (Structured English Query Language) für relationale Datenbankmanagementsysteme (RDBMS) eingeführt und sollte eine standardisierte Sprache darstellen, mit der Datenbanken angesprochen und verwaltet werden konnten, ohne eine grafische Benutzeroberfläche zu verwenden.
Dies gestaltete sich in den 1970er Jahren schließlich noch etwas anders als heute. Aus SEQUEL entstand dann später SQL, das aber noch für einige Zeit wie früher ausgesprochen wurde. Im Jahre 1979 entwickelte dann die Relational Software, Inc., die dann später unter dem Namen Oracle Corporation bekannt wurde, das erste Datenbankmanagementsystem, das mit SQL verwaltet werden konnte. In diesem Sinne lässt sich auch verstehen, warum Oracle Wert darauf legt, mit SQL besonders viele Feinheiten zu implementieren und warum die prozedurale Erweiterung eine so große Struktur erreicht hat, Datenbanksysteme wie der MS SQL Server von Microsoft mit Transact SQL (noch) nicht erreicht haben. Wie alle großen Produzenten ist Oracle selbst auch aktiv an der Entwicklung des SQL-Standards beteiligt.
Zu der Zeit, als dieses Buch geschrieben wurde, war dies immer noch der Standard von 1999, der auch unter der Kurzbezeichnung SQL99 in die Annalen der SQL- und Datenbankgeschichte eingegangen ist. In Kürze werden wir sicherlich einen weiteren Standard mit einigen Erweiterungen kennen lernen. Die beiden internationalen Organisationen American International Standards Institute (ANSI) und International Organization for Standardization (ISO) sowie die International Electrotechnical Commission (IEC) sind für die Entwicklung und Verwaltung des Standards verantwortlich. Hier hat sich insbesondere bei Vergleichen zwischen dem SQL-Standard und den in Datenbanken implementierten Versionen und Varianten der Begriff ANSI-SQL als Bezeichnung für den normgerechten SQL-Standard herausgebildet. Ein interessantes Kaffeehausgespräch ließe sich also immer auch mit der Frage beginnen, ob sich Hersteller am ANSI-Standard orientieren sollten und mit welchem Deckungsgrad er in einzelnen Systemen umgesetzt worden ist. Ein Standard wird von allen drei Organisationen gleichzeitig veröffentlicht und unterscheidet sich letztendlich nur durch die diversen Namen und Einordnungstechniken der Dokumente, nicht aber im Inhalt. Für den SQL99-Standard wären dies die Dokumente:
Die Datenbanksprache SQL (Structured Query Language Strukturierte Abfragesprache) stellt also einen De-facto-Standard für die Datenbankbenutzung in einer programmiersprachenähnlichen Form dar. Zwar gibt es noch andere Möglichkeiten, sich den Daten in einer Datenbank über andere Sprachen und grafische Unterstützungswerkzeuge zu nähern, doch ist SQL eine unverzichtbare Hilfe. Für einen Programmierer ist es ohnehin die einzige Möglichkeit, Daten für Programme und Anwendungen zu erhalten, wobei durch die Standardisierung, die SQL durch die International Organization for Standardization erhalten hat, SQL in fast allen Datenbanken zum Einsatz kommt. Typischerweise stimmt in allen Datenbanken ein Grundteil der Sprachelemente überein, sodass Sie einfache und komplexe Abfragen sowie die Standard(aggregat)funktionen auch in anderen Systemen nutzen können. Im Bereich der Unterabfragen und bei der Bezeichnung der eingebauten Funktionen gibt es zwangsläufig große Unterschiede, da hier jeder Hersteller seine eigene Variation und seine eigene Sicht der Dinge verwendet.
Die Sprache teilt sich in insgesamt drei Bereiche auf, wobei die Unterteilung weniger auf syntaktischen als auf konzeptionellen und anwendungsbezogenen Unterschieden basiert.
Die Syntaxkonzeption von SQL ist verblüffend einfach; die Komplexität, die Abfragen bisweilen erhalten können und die Kombinationsmöglichkeiten der einzelnen Sprachbereiche sind jedoch ebenso verblüffend vielfältig. In diesem Kapitel konzentrieren wir uns lediglich auf die Abfragemöglichkeiten. Genauso gut hätten wir dem Kapitel den Namen Das allmächtige SELECT geben können, da dieser Befehl alle Abfragen einleitet. Hierbei ist es egal, ob es sich um eine allein stehende Abfrage oder um eine Unterabfrage in einer Abfrage, um einen Einfügebefehl mit INSERT, eine Aktualisierung mit UPDATE oder eine Löschoperation mit DELETE handelt. Gleiches gilt für die Formulierung von Bedingungen. Die im Rahmen der Abfragen vorgestellte Syntax zur Formulierung von Bedingungen lässt sich nicht nur in Abfragen, sondern auch in den anderen Bereichen verwenden. Dadurch erhält man eine große Anzahl von Werkzeugen, die an unterschiedlichsten Stellen wieder allein oder in Kombination eingesetzt werden können. Dies wollen wir gegen Ende des Kapitels zeigen, wenn wir auf die anderen Befehle noch einmal kurz eingehen und zeigen, welche Möglichkeiten sie mit den hier vorgestellten Abfragetechniken bieten.
SQL stellt als Sprache und als Konzept einen Standard dar, sodass mit seiner Syntax beliebige Datenbanken, in die SQL integriert ist, steuerbar sind. Dies umfasst meistens den Bereich von Standard-SQL und bildet auch das Ziel des gesamten Standardisierungsprozesses, um den überaus wichtigen Bereich der Datenverwaltung, -speicherung und -untersuchung weltweit konzeptionell zu steuern. Hierbei lassen sich einige grundlegende Dimensionen in der Sprachverwendung feststellen, die zugleich auch einen deutlichen Gegensatz zu anderen (richtigen, eigentlichen) Programmiersprachen darstellen und SQL von diesen abgrenzen:
An den wohlklingenden Unterüberschriften lässt sich bereits unsere Hochachtung vor SQL erkennen, sodass wir gezwungen sind, langsam wieder auf den Boden der Datenbank-Tatsachen zurückzukommen. Dies gelänge nicht besser als mit einigen Überlegungen zu den Erscheinungsformen von SQL in unserem Lieblingsdatenbanksystem. Hier mischt sich ein mikroskopisch kleiner Wermutstropfen in unsere Passion, da abgesehen vom Standard-SQL-Bereich viele Befehle, Funktionen und Klauseln Oracle-spezifisch sind. Dies ist nicht Oracle an sich anzulasten, ist ein leidiges Phänomen, das auch in allen anderen Systemen auftritt.
Im gesamten Bereich der Abfragen, der grundlegenden Transaktionsbefehle und auch der grundlegenden Befehle für das Anlegen von Schema-Objekten (außer den Speicherplatzoptionen) deckt sich das SQL von Oracle mit ANSI-SQL bzw. mit dem SQL in anderen Datenbanksystemen. Im Bereich der eingebauten Funktionen jedoch werden Sie im Vergleich zu anderen Systemen schnell feststellen, dass einerseits besonders viele Funktionen mit beeindruckenden Eigenschaften vorhanden sind, dass Sie diese aber in vielen Fällen nur in Oracle unter diesem Namen vorfinden. SQL-Syntax, die diese Funktionen verwendet, muss also im Regelfall an andere Umgebungen angepasst werden bzw. benötigt eine Anpassung, wenn sie aus anderen Systemen in Oracle zum Einsatz kommen soll. Der gesamte Bereich von PL/SQL schließlich überrundet die Möglichkeiten in anderen Systemen um Längen, stellt allerdings notwendigerweise eine ganz eigene Programmiersprache mit eigener Syntax auf der Basis von Ada dar.
comelio.com


