Ueb05 - oth

Werbung
Datenbanken
5. Übung
Aufgabe: Abfragen an die relationale Datenbank für das Personalwesen
Lösungsschritte: Abfragen an die relationale Datenbank werden mit dem SQL-Befehl SELECT ...
ausgeführt:
select <spalten>
from <tabellen>
[where <bedingung> ...]
[group by <spalten> ... [
[order by <spalten>]
/* 1. Klausel */
/* 2. Klausel */
/* 3. Klausel */
having <bedingung> ] ]
Die 1. Klausel legt fest, welche Spalten (Attribute) im Ergebnis (Abbildungsbereich) berücksichtigt
werden sollen. Die 2. Klausel bezeichnet die Tabellen und Views (Sichten), aus denen Zeilen und
Spalten abgefragt werden sollen. Die 3. Klausel ist optional und bestimmt, daß nur diejenigen Zeilen
im Ergebnis angezeigt werden sollen, die einer bestimmten Bedingung genügen.
Insgesamt besteht der SELECT-Befehl aus 6 Komponenten:
Mit
FROM /* 2. Klausel */
werden die Datensätze der Tabellen (Definitionsbereich) ausgewählt. Sie werden um die Datensätze
vermindert, die die bei
WHERE /* 3. Klausel */
angegebene(n) Bedingung(en) nicht erfüllen. Durch
GROUP BY
werden
Datensätze
(Tupel)
mit
gleichen
Attributen
zusammengefaßt.
Gemeinsame
Gruppeneigenschaften können unter
HAVING
angegeben sein. Die so ausgewählten Datensätze werden auf die nach
SELECT /* 1. Klausel */
angegebenen Spalten (Abbildungsbereich) projiziert. Schließlich werden die Datensätze (Tupel) für
die Ausgabe sortiert, wie bei
ORDER BY
festgelegt.
Select-Anweisungen können unterschiedliche Ausprägungen annehmen. Das folgende
Klassifizierungsschema ordnet die Anweisungen und zeigt, was die select-Anweisung leistet:
Selektion und Projektion, Einfache Bedingungen, Komplexe Bedingungen, Verbundanweisungen
(Verknüpfung mehrerer Tabellen, Verknüpfung einer Tabelle mit sich selbst (SELF JOIN)),
Unterabfragen (Unterabfragen mit einem oder mehreren Ergebnissen, Unterabfragen mit EXISTS),
Aggregat-Funktionen, GROUP-BY- und HAVING-Klausel, Operatoren der relationalen Algebra
(MINUS, INTERSECT, UNION), Erzeugen bzw. Löschen von Tabellen, Sichten (Views),
Kreuztabellenabfrage (mit DECODE).
Suchbedingungen in select-Anweisungen
Im Mittelpunkt von select-Anweisungen steht die Suchbedingung. Sie wird mit der where<bedingung> zur Auswahl (bzw. zum Eliminieren) von Tabellenzeilen und in der having-<bedingung>
zur Auswahl (bzw. zum Eliminieren) von Gruppen benutzt. Eine Suchbedingung ist zusammengesetzt
aus Ausdrücken (arithmetisch, Zeichenketten, Namen) und Prädikaten.
Arithmetischer Ausdruck
Konstante
Spaltenname
Qualifizierer.Spaltenname
Arithm._Ausdruck arithm._Operator Arithm._Ausdruck
(arithm._Ausdruck)
1
Bsp.
6, 7.00
gehalt
job.gehalt
gehalt + 0.1 * gehalt
(gehalt + 0.1 * gehalt)
Datenbanken
Funktion(arithm._Ausdruck)
Aggregatsfunktion(arithm._Ausdruck)
sqrt(gehalt)
sum(gehalt)
Zeichenkette bzw. Name
Konstante
Spaltenname
Qualifizierer.Spaltenname
Funktion(Zeichenkette_bzw._Name)
Aggregatsfunktion(Zeichenkette_bzw._Name)
Bsp.
‘Konstruktion‘
abt_id, ang_id, gebdatum
angestellte.abt_id
count(angestellte.ang_id)
Der SQL-Standard umfaßt 7 Ausprägungen von Prädikaten. Ausgewertet nehmen die Prädikate die
Werte „true“, „false“ oder „unknown“ an.
Prädikat
Vergleichsprädikat
Format
between
ausdr1
[not]
between
ausdr2 and ausdr3
Qualifiziertes Prädikat
ausdr[all / any ]( Subselect )
IN-Praedikat
ausdr [not] in (wert {,
wert}
[not] exists (Subselect)
spaltenname
is
[not]
null
spaltenname [not] like
‘muster‘
exists-Praedikat
is null - Prädikat
like-Prädikat
Bsp.
ausdr1(ausdr 2 / Subselect ) 1 >(Subselect)
>= all (Subselect)
Mit diesen Prädikaten kann die Suchbedingung so festgelegt werden:
Suchbedingung
Praedikat
(Suchbedingung)
not Suchbedingung
Suchbedingung AND Suchbedingung
Suchbedingung OR Suchbedingung
1
Bsp.
exists (Subselect)
not exists (Subselect)
 ist einer der Vergleichsoperatoren =, <>, !=, >, >=, <, <=
2
Herunterladen