Wetterfest

Wenn heute noch ein Standard in der Informationstechnik mehr Bedeutung als XML oder HTML hat, ist es die Datenbanksprache SQL. Deren neue Version ist seit Ende 2003 verabschiedet und dürfte demnächst Eingang in die großen DBMS finden - unter anderem mit XML-Erweiterungen.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Rainer Unland

Die Structured Query Language (SQL) hat sich seit ihrem ersten Erscheinen im Jahr 1987 zu einem der wirklich wichtigen Standards in der Informationstechnik entwickelt. Als Gremien kümmern sich ISO und IEC in ihrem Arbeitsausschuss „JTC 1/SC 32 Datenmanagement und Datenaustausch des Internationalen Komitees ISO/IEC JTC 1 Informationstechnik“ um die kontinuierliche Weiterentwicklung der ISO/IEC 9075-Norm, wie SQL im Standardisierungsjargon heißt.

Im Dezember vorigen Jahres erschien nach 1986, 1989, 1992 und 1999 die mittlerweile fünfte Version dieses Standards, SQL:2003. Nach der Einführung der Sprache war die 1999er-Version (SQL:1999) der mit Abstand größte Schritt nach vorn. Er stellte insofern einen revolutionären Schritt dar, als er die Einführung der Objektorientierung in SQL markierte. Vieles war gut, aber es hatten sich eine Reihe von Fehlern, Ungereimtheiten und Widersprüchen in den Standard eingeschlichen. Von daher dient SQL:2003 zunächst dem Ziel, diese negativen Begleiterscheinungen zu beseitigen. Zusätzlich schließt SQL:2003 auf der Modellierungsebene mit der Einführung des MULTISET-Typkonstruktors eine große Lücke, deren Beseitigung der Standardisierungskommission bei der letzten Version noch nicht gelungen war - wenn auch ein wenig halbherzig, da weder der Typkonstruktor SET noch LIST direkt eingeführt wurden. Während dies die vielleicht wichtigste Ergänzung des Kerns von SQL darstellt, haben ISO und IEC mit SQL/MED und SQL/XML zwei wichtige Erweiterungen erstmals festgeschrieben.

SQL/MED (Management of External Data) führt Sprachkonstrukte ein, die es dem Benutzer erlauben, aus SQL heraus extern gespeicherte Daten zu erfragen und zu manipulieren. Unter externen Daten versteht man solche, die nicht das zugrunde liegende SQL-Datenbanksystem (DBMS) verwalten, sondern ein anderes (Netzwerk- oder hierarchisches) DBMS in normalen Betriebssystemdateien oder in Speicherungssystemen ablegt.

SQL/XML ist die zweite wesentliche Erweiterung. Teil 14 des Standards führt den XML-Datentyp ein, liefert Funktionen, um XML-Dokumente aus SQL-Daten zu erzeugen, und definiert eine Abbildung von SQL-Tabellen auf XML-Dokumente. Damit können Anwendungen XML-Dokumente in SQL-Datenbanken speichern oder, umgekehrt, XML-Dokumente aus relationalen Daten erzeugen.

Neben SQL/MED und SQL/XML enthält SQL:2003 eine Reihe von Neuerungen, die wichtigsten sind:

  • Sequenzgeneratoren;
  • MERGE-Anweisung;
  • TABLESAMPLE-Klausel;
  • Tabellenerzeugung durch Funktionen oder Anfragen;
  • neue Spaltenarten (Identitäts- und generierte Spalten);
  • Datentypen;
  • Typkonstruktoren.

Der Sequenzgenerator erzeugt eine auf- oder absteigende Folge numerischer Werte, die beispielsweise dazu dienen können, automatisch Schlüsselwerte oder Identitätsspalten (siehe unten) zu erzeugen. Initialwert, Inkrement, Minimal- und Maximalwert sowie eine zyklische Wertvergabe lassen sich festlegen. Letzteres bedeutet, dass, sobald die festgelegte Sequenz (vom Minimal- zum Maximalwert) abgearbeitet ist, sie (zyklisch) erneut durchlaufen wird. Noch genutzte Werte darf man allerdings beim erneuten Durchlauf nicht wieder vergeben, wenn der Sequenzoperator für eine Identitäts- oder Schlüsselspalte zum Einsatz kommen soll (dies ist zu beachten, denn der Sequenzoperator stellt es nicht sicher).

Nach der INSERT-, UPDATE- und DELETE-Anweisung ist MERGE die vierte, die es erlaubt, eine bestehende Datenbank zu modifizieren. Dies unterstellt, dass es innerhalb der Datenbank schon eine (im konzeptuellen Schema definierte) Basistabelle gibt, in die man eine temporär erzeugte Tabelle hineinmischen will. Mischen bedeutet, noch nicht existierende Zeilen vollständig, bei existierenden Zeilen die Änderungen aus der temporären Tabelle zu übernehmen.

Gerade im Zusammenhang mit Statistiken ist es nicht immer notwendig, gewünschte Auswertungen auf Basis der Gesamtdatenmenge vorzunehmen. Das in der FROM-Klausel zu verwendende TABLESAMPLE erlaubt es, automatisch aus der Ausgangstabelle einer Anfrage eine Stichprobe zu erzeugen, die als Basis für eine statistische Analyse dienen kann. Statistiken lassen sich damit ohne großen Zusatzaufwand schnell erzeugen.

Den vollständigen Text finden Sie in der aktuellen Printausgabe. (hb)