![]() |
![]() |
Datenbanken -
|
G.Eichelsdörfer - Staatliche Technikerschule Weilburg |
Die letzte Anwendung erforderte mehrere Abfragen nacheinander in verschiedenen Tabellen. Dazu wurden Fremdschlüssel als Referenzen zu anderen Tabellen verwendet. Dies war erforderlich, weil wir ausschließlich Abfragen in jeweils einer Tabelle an das DBMS senden konnten. Diese Vorgehensweise kann vereinfacht werden, wenn in einer Abfrage auf mehrere Tabellen zugegriffen wird. Dazu sind die Kenntnisse von "qualifizierten Bezeichnern" erforderlich und von "Aliasnamen" hilfreich.
Mit qualifizierten Bezeichnern können die Lokalitäten von Tabellen und Spalten absolut angegeben werden.
Eine Spalte gehört zu einer Tabelle und eine Tabelle zu einer Datenbank.
Um eine Spalte (Attribut) absolut und genau anzugeben, sind die Nennungen der Datenbank
und der Tabelle erforderlich. Hierzu wird die vielfach gebräuchliche Punktnotation verwendet.
Form: Datenbank.Tabelle.Spalte
Beispiel für qualifizierte Bezeichner:
Um die Attributwerte der Spalte "Titel" in der Tabelle "Buch" der
Datenbank "Buchverleih" abzufragen, kann folgende SQL-Anweisung gesendet
werden:
SELECT Buchverleih.Buch.Titel FROM Buchverleih.Buch
Wenn die Datenbank "Buchverleih" bereits ausgewählt ist genügt auch
SELECT Buch.Titel FROM Buch
Darin sind "Buchverleih.Buch", "Buchverleih.Buch.Titel" und
"Buch.Titel" qualifizierte Bezeichner.
Die vollständig qualifizierten Bezeichner "Buchverleih.Buch" und
"Buchverleih.Buch.Titel" sind für Datenbank übergreifende Abfragen erforderlich
oder zumindest hilfreich. Der teilweise qualifizierte Bezeichner "Buch.Titel"
ist auch dann aus der zugehörigen Datenbank heraus erforderlich, wenn mehrere Tabellen mit
einer SQL-Anweisung abgefragt werden sollen.
Um in einer Abfrage mehrere Tabellen und Spalten unterzubringen ist jede Spalte qualifiziert zu bezeichnen.
Form: SELECT Tabelle1.Spalte1,Tabelle1.Spalte2,Tabelle2.Spalte1 ... FROM Tabelle1,Tabelle2 ... WHERE ...
In der Datenbank "Buchverleih" sollen alle Bücher in der folgenden Form aufgelistet werden:
Autorname Buchtitel Verlagsname
Die gewünschten Daten liegen in den Tabellen "Buch", "Autor" und "Verlag".
Um diese Daten mit einer einzigen SQL-Anweisung zu holen, kann die folgende SQL-Anweisung verwendet werden:
SELECT Autor.Name,Buch.Titel,Verlag.Name FROM Autor,Buch,Verlag
WHERE (Buch.AutorNr=Autor.Id) AND (Buch.VerlagNr=Verlag.Id)
Der MySQL-Monitor liefert beispielsweise die folgende Ausgabe:
Schenk C++ Programmieren mit einfachen Beispielen Springer-Verlag Buchholz Die C++ Standardbibliothek Wesel-Verlag Lustig Loewenzahn Broesel-Verlach Liebmann Lichtschranken Stam-Verlag Buchholz Kochbuch Wesel-Verlag
In der obigen SQL-Anweisung sind die gewünschten Spalten eindeutig durch ihre qualifizierten Bezeichner identifiziert. Die Reihenfolge der Ausgabe wird durch die Reihenfolge der Spalten in der Spaltenliste zwischen SELECT und FROM festgelegt. Die Reihenfolge der Tabellen hinter FROM kann hier nach Belieben geändert werden. Mit Aliasnamen kann die SQL-Anweisung etwas kürzer notiert werden.
Aliasnamen werden hinter den tatsächlichen Tabellennamen definiert. Sie dienen entweder einer kürzeren Schreibweise oder zur Steigerung der Verständlichkeit einer SQL-Anweisung.
Definition eines Aliasnamens: ... Tabellenname Aliasname ...
Nach der Definition kann ein Aliasname ebenso verwendet werden wie dessen Original-Tabellenname.
Zum obigen SQL-Beispiel - Aliasnamen sind hier a,b und v:
SELECT a.Name,b.Titel,v.Name FROM Autor a,Buch b,Verlag v
WHERE (b.AutorNr=a.Id) AND (b.VerlagNr=v.Id)
Vereinfachen Sie die letzte Anwendung durch gleichzeitiges Abfragen mehrerer Tabellen!
Sie sollten auch einmal Aliasnamen verwenden!