DatenbankenDatenbankoperationen | |
Die wichtigsten Operationen auf Datenbanktabellen sind: Projektion, Selektion, kartesisches Produkt und Verbund. Alle vier Operationen werden in SQL in der einheitlichen Notation
| SELECT | <Spalten> | |
| FROM | <Tabellen> | |
| WHERE | <Bedingung> |
formuliert. Ergebnis einer Datenbankoperation ist in jedem Fall wiederum eine Tabelle.
Definition: Eine Projektion ist die Auswahl gewisser Spalten einer Tabelle.
R[i] ergibt eine Tabelle, die aus der i-ten Spalte der Tabelle R besteht. Statt einer Spaltennummer wird i.a. die Spaltenüberschrift angegeben: R[spalte]. Es können auch mehrere Spalten in beliebiger Reihenfolge angegeben werden: R[spalte 1, ..., spalte n].
Beispiel:
| STUD[Name, MatrNr] | Name | MatrNr |
| Meier | 10 15 20 | |
| Müller | 20 30 40 | |
| Meier | 50 60 70 | |
| Schulze | 10 20 30 |
Schreibweise in SQL:
| SELECT | Name, MatrNr | |
| FROM | STUD |
Definition: Eine Selektion ist die Auswahl gewisser Zeilen einer Tabelle.
R[b] ist eine Tabelle, die aus allen Zeilen der Tabelle R besteht, die der Bedingung b genügen.
Beispiel:
STUD[Name 'Meier'] | MatrNr | Name | GebDat |
| 20 30 40 | Müller | 10.05.1971 | |
| 10 20 30 | Schulze | 06.01.1975 |
Schreibweise in SQL:
| SELECT | * | |
| FROM | STUD | |
| WHERE | Name<>'Meier' |
Der * steht in SQL für "alle Spalten der Tabelle".
Definition: Das kartesische Produkt R
S zweier Tabellen R und S ergibt eine Tabelle, deren Zeilen aus allen Kombinationen von Zeilen aus R und S bestehen.
Beispiel:
|
|
|
Schreibweise in SQL:
| SELECT | * | |
| FROM | R, S |
In den seltensten Fällen wird man das kartesische Produkt als alleinige Operation anwenden. Dagegen spricht schon die Größe der Ergebnistabelle. Sinnvoll ist das kartesische Produkt nur im Zusammenhang mit einer gleichzeitigen Selektion. Die sich daraus ergebende Operation ist der Verbund.
Definition: Ein Verbund zwischen zwei Tabellen R und S ist eine Selektion von gewissen Zeilen des kartesischen Produkts R
S, die einer bestimmten Bedingung genügen. D.h. es werden nur bestimmte Kombinationen von Zeilen von R bzw. S gebildet.
R[b]S ist eine Tabelle mit allen Zeilen aus R
S, die der Bedingung b genügen. R[b]S ist also eine andere Schreibweise für (R
S)[b].
Beispiel: R[a>S.c]S liefert alle Zeilen des kartesischen Produkts, in denen Wert von a größer als der Wert von S.c ist.
|
|
|
Schreibweise in SQL:
| SELECT | * |
| FROM | R, S |
| WHERE | a>S.c |
Beispiel: R[R.c
S.c
d>7]S liefert alle Zeilen, in denen der Wert von R.c größer oder gleich dem Wert von S.c und der Wert von d größer als 7 ist.
R[R.c S.c d>7]S | a | b | R.c | S.c | d |
| 4 | 5 | 6 | 4 | 8 | |
| 4 | 5 | 6 | 6 | 9 |
Schreibweise in SQL:
| SELECT | * |
| FROM | R, S |
| WHERE | R.c>=S.c |
| AND | d>7 |
Am häufigsten wird der Verbund zur Verknüpfung von Tabellen benutzt, die durch Beziehungen miteinander verbunden sind. Als Beispiel sei hier folgendes Entity-Relationship-Diagramm zugrundegelegt:
| |
Die Umsetzung dieses Konzeptes ergibt dann beispielweise folgende Tabellen:
|
| ||||||||||||||||||||||||||||||||||||
|
Die Tabellen STUD und VERANST haben als Schlüssel die Attribute MatrNr bzw. Nr. Die Beziehung HÖRT wird durch eine Tabelle realisiert, in der diese Attribute als Fremdschlüssel aufgeführt werden. Zum Beispiel hört der Student mit der Matrikelnummer 10 15 20 die Veranstaltungen Nr. 83200 und 87500.
Um nun aber die Namen derjenigen Studenten herauszufinden, die etwa die Veranstaltung INF3 besuchen, müssen die Tabellen miteinander verknüpft werden. Aus der Tabelle HÖRT allein geht dies nicht hervor; es muss in diesem Fall ein Verbund von drei Tabellen hergestellt werden. Kombiniert werden jeweils die Zeilen der drei Tabellen, in denen die Matrikelnummer und die Veranstaltungsnummer übereinstimmen. Eingeschränkt wird das ganze auf die Zeilen, in denen die Bezeichnung der Veranstaltung INF3 lautet.
Das SQL-Kommando lautet:
| SELECT | Name | |
| FROM | STUD, HÖRT, VERANST | |
| WHERE | STUD.MatrNr=HÖRT.MatrNr | |
| AND | VeranstNr=VERANST.Nr | |
| AND | Bez='INF3' |
Das Ergebnis ist die Tabelle:
| Name | |
| Meier | |
| Müller |
Weiter mit: [Schlüssel und Normalform] oder 