Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Lexikon Informations-, Daten- und Wissensmanagement Datenmanagement Datenbanksystem Structured Query Language

Structured Query Language

Structured Query Language, kurz SQL, ist eine seit vielen Jahren standardisierten Sprache zur Definition, Manipulation, Formulierung von Anfragen und Verwaltung von Datenbanken. Sie liegt heute allen kommerziellen und nicht-kommerziellen Datensystemen zu Grunde und hat im Laufe der Zeit zahlreiche Ergänzungen und Erweiterungen erfahren.

SQL aus Benutzersicht

Aus Sicht eines Benutzers ist SQL eine Sprache zum Umgang mit relationalen Datenbanken, die auf einem hohen Abstraktionsniveau angesiedelt ist und insbesondere von einer Beschäftigung mit Einzelheiten der Datenspeicherung befreit. Die Entwicklung von SQL geht auf IBM zurück und wurde zu Beginn der 70er Jahre begonnen. SQL (zu dieser Zeit ein Akronym für Structured English Query Language) wurde 1986 als SQL1  bzw. SQL86  von der ISO standardisiert, in den Folgejahren mehrfach ergänzt und erweitert (1989 Addendum-1 bzw. SQL89, 1992 SQL2 bzw. SQL92, 1999 SQL3 bzw. SQL:1999, aktueller Stand ist SQL:2011).

Aus Benutzersicht werden folgende Aktivitäten im Umgang mit einer Datenbank von SQL unterstützt:

  • Datenbankdefinition (mit Kommandos wie create table oder drop table) auf der Ebene des zugrunde liegenden Datenbankschemas,
  • Manipulation und Anfrage (mit Kommandos wie select, insert, delete oder update),
  •  Verwaltung und Administration (z. B. Transaktionssteuerung mit Kommandos wie commit oder rollback, Zugriffskontrolle mit Kommandos wie grant oder revoke oder interne Verwaltung mit Kommandos wie create/drop index),
  • Programmiersprachern-Einbettung bzw. –Anbindung (über SQLJ bzw. das SQL Call Level Interface SQL/CLI).

Schnittstellen zu Programmiersprachen erlauben ferner eine direkte Übergabe von SQL-Befehlen an ein Datenbanksystem über einen Funktionsaufruf (z.B. per ODBC oder JDBC).

Eine Verwendung von SQL unterstellt einen abgeschlossenen Datenbankentwurf, im Rahmen dessen ein Datenbankschema erstellt wurde, dem einzelne Tabelle zugeordnet sind. Diese lassen sich mit dem Kommando CREATE TABLE anlegen, durch welches eine (neue) Tabelle einen Namen bekommt sowie Attribute und Integritätsbedingungen. Attribute, haben jeweils einen Wertebereich, der festlegt, welchen Typ Daten die entsprechende Tabellenspalte aufnehmen kann. Wertebereiche sind z. B. CHAR(n) bzw. VARCHAR(n) für Zeichenreihen fester oder variable Länge n, INTEGER für ganze Zahlen, DATE für Datumswerte oder XML für Werte, die XML-Dokumente darstellen. Als Integritätsbedingungen lassen sich Wertebereichs-Bedingungen, Primär- sowie Fremdschlüssel, Check-Klauseln sowie allgemeine Assertions festlegen. Durch die so genannten objekt-relationalen Erweiterungen, die SQL im Rahmen von SQL:1999 sowie SQL:2003 erfahren hat, lassen sich neben „flachen“ Wertebereichen auch strukturierte definieren, und es kann zwischen ungetypten und getypten Tabellen unterschieden werden.

Das zentrale Kommando zur Formulierung von Anfragen ist der SELECT-Befehl mit der einfachen Grundform

SELECT Attribute
FROM   Relation(en)
WHERE Bedingung

Hierbei spezifiziert die erste Zeile die Ausgabe, die zweite die Eingabe, aus welcher Daten entnommen werden sollen (also typischerweise Tabelle oder Sichten) und die optionale dritte die Bedingungen, welchen die Ausgabe zu genügen hat. Alle drei Klauseln der SELECT-Grundform lassen vielfältige Ausdrücke zu. So kann man z. B. in der SELECT-Klausel Umbenennungen von Attributen oder Umformatierungen (CAST) von Werten vornehmen. Als Eingabe in einer FROM-Klausel kann jedes Konstrukt dienen, das sich zu einer Tabelle auswerten lässt. Bedingungen in einer WHERE-Klausel schließlich können sich unterschiedlichster Funktionen und Vergleichsoperatoren bedienen.

Über die Grundform hinaus kennt der SELECT-Befehl eine optionale Group By- sowie eine optionale HAVING-Klausel. In ersterer sind heute OLAP-Operatoren wie ROLLUP und CUBE zugelassen, die im Zusammenhang mit Data Warehouse-Anwendungen von Bedeutung sind.

Durch die Erweiterung der SQL-Datentypen um XML ist die Notwendigkeit entstanden, auch XML-Sprachfunktionalität auf SQL-Ebene bereitzustellen. Dies erfolgt heute insbesondere über die Erweiterung SQL/XML.

SQL aus Systemsicht

Aus der Sicht eines Datenbanksystems handelt es sich bei SQL um eine Hochsprache, in welcher von allen Einzelheiten der Datenspeicherung oder internen Datenorganisation abstrahiert ist. Dementsprechend enthält die Sprache Redundanzen, die es dem Anwender ermöglichen, gleiche Anfragen auf unterschiedliche Weise auszudrücken. Systemseitig wird daher stets eine Optimierung von Benutzeranfragen vorgenommen, bevor diese zur Ausführung gelangen. Ferner ist es notwendig, Anbindungen an Programmiersprachen wie Java vorzusehen, damit von Anwendungsprogrammen aus über statisches oder dynamisches SQL auf eine Datenbank zugegriffen werden kann. Besonders relevant sind derartige Anbindungen heute im Zusammenhang mit Web-Anwendungen, welche häufig auf (nach außen nicht sichtbaren) Datenbanken basieren.

Literatur

Elmasri, R., Navathe, S.B.: Fundamentals of Database Systems, 7th ed.. New York: Pearson Education, 2016.

Autor


 

Prof. Dr. Gottfried Vossen, Westfälische Wilhems-Universität Münster, Department of Information Systems, Database Group, Leonardo-Campus 3, 48149 Münster

Autoreninfo


Zuletzt bearbeitet: 22.11.2016 18:01
Letzter Abruf: 26.07.2017 18:38
Artikelaktionen