SQL

SQL (Structured Query Language) ist eine Abfragesprache für relationale Datenbanken. Sie hat eine relativ einfache, an die Umgangssprache angelehnte, Syntax und stellt eine Reihe mächtiger Befehle zur Definition von Datenstrukturen (nach der relationalen Algebra), zur Manipulation von Datenbeständen (Anfügen, Bearbeiten und Löschen von Datensätzen) und zur Abfrage von Daten zur Verfügung. Durch ihre Rolle als Quasi-Standard ist SQL von großer Bedeutung, da eine weitgehende Unabhängigkeit von der benutzten Software erzielt werden kann. Allerdings weichen in der Praxis die einzelnen (insbesondere proprietären) Implementierungen voneinander ab (z.B. Microsofts JetSQL, das in neueren Versionen von Access verwendet wird, oder Oracle Sql). Es gibt auch Open Source-Datenbanksysteme, wie z.B. MySQL oder PostgreSQL, die beide gerne im Zusammenhang mit der Programmiersprache PHP und dem Webserver Apache benutzt werden. Dafür stehen dann im Zusammenhang mit MySQL die Abkürzungen WAMP (W Windows) beziehungweise LAMP (L Linux).

Table of contents
1 Geschichte
2 Sprachelemente und Beispiele
3 SQL-Datentypen
4 SQL-Datenbanksysteme
5 Literatur
6 Weblinks

Geschichte

Die Grundlage aller relationalen Datenbanken legte 1970 Edgar F. Codd mit seinem Artikel "A Relational Model of Data for Large Shared Data Banks". Codd arbeitete damals im IBM-Forschungslabor in San Jose Kalifornien. Bei den auf diesen Artikel folgenden weltweiten Forschungsarbeiten war ein Aspekt die Entwicklung relationaler Sprachen. Die Bedeutendste von der kommerziellen Sichtweise her war die "Structured English Query Language" SEQUEL, die in den IBM Forschungslabors 1974 entwickelt wurde. 1976 wurde SEQUEL /2 definiert und aus rechtlichen Gründen in SQL umbenannt. Der Prototyp System R wurde 1977 funktionsfähig implementiert und enthielt einen Großteil der Sprache SQL.

Nach den Erfolgen bei den Benutzern von System R beschlossen mehrere Firmen SQL-basierte Datenbanken auf den Markt zu bringen. Das System ORACLE der Firma Relational Software Inc (später in Oracle Corporation umbenannt) kam 1980 vor IBMs SQL/DS (1981) auf den Markt. Die Urversion der noch aktuell verfügbaren SQL-Implementierung DB2 von IBM entstand 1983. INGRES folgte im Jahre 1985, SYBASE 1986. SQL hatte sich innerhalb von 10 Jahren zum de-facto-Standard in der Welt der Datenbanken etabliert.

Das American National Standards Institute (ANSI) beauftragte 1982 die Standardisierung einer relationalen Sprache, die 1986 ratifiziert wurde und zum guten Teil aus dem IBM-Dialekt von SQL bestand. 1987 wurde SQL/86 auch als ISO-Standard akzeptiert. Aktualisierungen und Erweiterungen erfolgten mit SQL/89, SQL/92 und SQL/99.

Sprachelemente und Beispiele

Die SQL-Befehle lassen sich in 4 Bereiche untergliedern: Datenabfrage, Datendefinition, Datenmanipulation und Rechteverwaltung

Befehle zur Datenabfrage: SELECT

Wählt alle Einträge aus der Tabelle Adressen, bei denen in der Spalte Name der Wert Müller steht. Zeigt die Spalte Name aus der Tabelle Adressen an. Da die abgefragten Datensätze im Normalfall nicht geordnet werden, muss ein Ordnungsbegriff (hier der Name) ausdrücklich angegeben werden. Gibt die Anzahl der Datensätze in der Tabelle Adressen aus. Die Ausgabe besteht lediglich aus einer Zeile und einer Spalte, welche die Überschrift Anzahl_Adressen trägt.

Befehle zur Datenmanipulation: INSERT, UPDATE, DELETE

Fügt eine Zeile mit den geg. Werten für die Spalten Name, Vorname und Ort in die Tabelle Adressen hinzu. Ändert das Feld Ort aller Einträge mit Namen "Schroeder" auf "Berlin". Löscht alle Einträge aus der Tabelle Adressen Löscht alle Datensätze aus der Tabelle Adressen mit dem Namen Müller.

Befehle zur Datendefinition: CREATE, ALTER, DROP

Erzeugt eine neue Tabelle namens Laender mit den Spalten Kuerzel_ISO und Land_Name, wobei Kuerzel_ISO der Primärschlüssel ist und in keiner der Spalten leere Felder erlaubt sind. Definiert eine neue Spalte namens Kuerzel_Auto in der Tabelle Laender. Löscht die gesamte Tabelle Adressen. Legt einen Index auf die Spalte Name der Tabelle Adressen. der Index bekommt die Bezeichnung idx_Adressen und beschleunigt die Suche nach Datensätzen in der Tabelle Adressen, wenn der Name als Suchkriterium angegeben wird. Löscht den Index idx_Adressen.

SQL-Datentypen

In den oben vorgestellten Befehlen create table und alter table wird bei der Definition jeder Spalte angegeben, welches Datenformat sie unterstützen soll. Dazu liefert SQL eine ganze Reihe standardisierter Datentypen mit. Dies sind die wichtigsten von ihnen:

Ganzzahl (positiv oder negativ) Ganzzahl (positiv oder negativ) mit maximal n Stellen Festkommazahl (positiv oder negativ) mit maximal n Stellen, davon m nach dem Komma Gleitkommazahl (positiv oder negativ) mit maximal m Stellen nach dem Komma Zeichenkette (also Text) mit n druckbaren und/oder nicht druckbaren Zeichen Zeichenkette (also Text) mit maximal n druckbaren und/oder nicht druckbaren Zeichen. Die Variante varchar2 ist für Oracle spezifisch. Datum (bei Oracle inklusive Uhrzeit) Boolesche Variable (kann die Werte true (wahr) oder false (falsch) annehmen). Dieser Datentyp fehlt in Oracle. Binärdaten von maximal n Bytes Länge

SQL-Datenbanksysteme

  1. Adabas
  2. DB2
  3. dBase IV
  4. Firebird (Datenbank)
  5. GUPTA
  6. INGRES
  7. InterBase
  8. JetSQL
  9. Microsoft Access
  10. Microsoft SQL Server
  11. MySQL
  12. PostgreSQL (Linux/Unix)
  13. Oracle
  14. SAPDB
  15. SQLite
  16. SYBASE
  17. T-SQL

Literatur

Obwohl bereits etwas betagt, ist dieses Buch gerade als wissenschaftlich fundierte und trotzdem leicht verständliche Einführung in SQL sehr zu empfehlen.

Weblinks