TUT4 Flashcards
SELECT * FROM
SELECT projeziert Spalten
FROM definiert die benutzten Spalten
Obligatorischen Klauseln der SELECT-Anweisung.
SELECT spezifiziert, welche Spalten die Ergebnismenge dieser Anfrage aufweist und wie diese Spalten heißen. Dies entspricht der Projektion in der relationalen Algebra bzw. der Umbenennung, wenn mittels der AS-Option für einen Spaltenausdruck ein neuer Name vergeben wird.
FROM-Klausel: Eine der beiden obligatorischen Klauseln der SELECT-Anweisung. In ihr wird angegeben, aus welchen Tabellen bzw. Sichten die zu selektierenden Daten stammen.
Beispiel
SELECT Kun_Nr, Vorname, Nachname, Ort
FROM Kunden;
SELECT * FROM WHERE
WHERE selektiert aufgrund einer Suchbedingung bestimmte Zeilen der Tabellen
WHERE-Klausel: liegt Suchbedingungen fest, welche Zeilen (Datensätze) aus einer oder mehreren Zeilen auswählen. Sie werden in SELECT-, DELETE- und UPDATE-Anweisungen eingesetzt. Suchbedingungen sind meist eine Folge von Prädikaten, die durch logische Operatoren AND oder OR verbunden sind. Die Priorisierung bzw. Klammerung bestimmt dabei die Reihenfolge der Abarbeitung.
SELECT Kun_Nr, Vorname, Nachname, Ort
FROM Kunden
WHERE Ort = ‘Gummersbach’;
SELECT Nachname, Gehalt, Abzuege
FROM Angestellte
WHERE Abzuege > Gehalt * 0,4;
SELECT Nachname, Ort
FROM Kunden
WHERE Ort = ‘Köln’
OR NOT (Ort = ‘Gummersbach’);
SELECT * FROM GROUP BY
GROUP BY gruppiert Zeilen auf Basis gleicher Spaltenwerte
SELECT * FROM HAVING
HAVING
selektiert nur Gruppen, die der HAVING-Bedingung entsprechen
SELECT * FROM ORDER BY
ORDER-BY
Sortiert Ausgabe der SELECT-Anweisung.
Klausel ist nur auf der obersten (äußersten) Ebene der SELECT-Anfragen möglich, nicht für die Zwischenergebnismengen der Unterabfragen, die innerhalb eines SELECTs geschachtelt sind.
Gib alle Angestellten aus, dessen Abzüge größer sind als 40% ihres Gehaltes.
Gib alle Angestellten aus, bei denen das Gehalt zwischen 3000 und 3600 ist.
SELECT * FROM Angestellte
WHERE Abzuege > Gehalt *0,4;
SELECT * FROM Angestellte
WHERE Gehalt BETWEEN 3000 AND 3600;
Gib die Kunden aus, bei dem Ort = ‘Köln’ ist ODER die nicht aus Gummersbach kommen.
SELECT * FROM Kunden
WHERE Ort = ‘Köln’
OR NOT (Ort = ‘Gummersbach’);
WHERE
LIKE Definition
Selektiere die Angestellten, bei denen Nachname mit einem W beginnt.
LIKE
dient in Suchbedingungen zum Abfragen von Textmustern über Schablonen und Wildcards. Ist der alphanumerische Ausdruck NULL, dann ist das Ergebnis des Vergleichs im Sinne der dreiwertigen Logik UNKNOWN.
SELECT Nachname
FROM Angestellte
WHERE Nachname LIKE ‘W%’;
WHERE
IN & NULL
IN Bsp: Selektiere alle Kunden, die im Ort Köln oder Gummersbach sind.
NULL Bsp: Selektiere alle Angestellte, die keine Abt_Nr haben.
Es wird eine Domäne angegeben, aus der etwas ausgewählt werden soll
Man kann auch angeben “Abt_Nr IS NULL, was besonders wichtig für die OUTER JOINS* ist.
*LEFT OUTER JOIN, FULL OUTER JOIN oder RIGHT OUTER JOIN.
SELECT * FROM Kunden
WHERE Ort IN (‘Köln’, ‘Gummersbach’)
SELECT * FROM Angestellte
WHERE Abt_Nr IS NULL;
Selektiere die Anzahl der Angestellte, die in Abt_Nr 2 sind.
SELEKT COUNT(\*) FROM Angestellte WHERE Abt\_Nr = 2;
SUM Beispiel
SELECT SUM(Gehalt) * 12;
FROM Angestellte
WHERE Abt_Nr = 2;
Selektiere den Durchschnitt des Gehaltes der Angestellte, bei denen Beruf = ‘Informatiker’ ist.
SELECT AVG(Gehalt)
FROM Angestellte
WHERE Beruf = ‘Informatiker’;
GROUP BY Definition
GROUP-BY
Ergebnissdatensätze einer SELECT-Anweisung werden nach Bearbeitung der WHERE-Klausel in Gruppen eingeteilt, in denen die Werte der GROUP-BY-Spalten gleich sind. Über die GROUP-BY-Spalten wird aufsteigend sortiert.
Nachfolgend dieser Klausel kann optional eine HAVING-Klausel programmiert werden.
!!! GROUP BY Beispiel
Selektiere die Abt_Nr, die mindestens 5 Angestellte haben.
SELECT Abt_Nr
FROM Angestellte
GROUP BY Abt_Nr
HAVING COUNT(*) >=5;
Man liest (wie beim Baum) immer von innen nach außen.
Erst wird die Tabelle “Angestellter” genommen und dann selektiert man die Abt_Nr.
Dann kommt die Gruppierung nach der Abt_Nr.
Und während gruppiert wird, wird die Bedingung HAVING … gecheckt.
ORDER BY Beispiel
Selektiere Ort, Nachname und Vorname von Kunden.
Ordne dabei den Ort absteigend und den Nachnamen aufsteigend.
SELECT Ort, Nachname, Vorname
FROM Kunden
ORDER BY Ort DESC, Nachname ASC;
DESC = Descending = Absteigend
ASC = Ascending = Aufsteigend
(INNER) JOIN
(INNER) JOIN = Durchschnitt
Gibt Datensätze zurück, deren Werte in beiden Tabellen übereinstimmen.
LEFT (OUTER) JOIN &
RIGHT (OUTER) JOIN
LEFT (OUTER) JOIN
Gibt alle Datensätze aus der linken Tabelle und die übereinstimmenden Datensätze aus der rechten Tabelle zurück.
RIGHT (OUTER) JOIN
Gibt alle Datensätze aus der rechten Tabelle und die übereinstimmenden Datensätze aus der linken Tabelle zurück
FULL (OUTER) JOIN
FULL (OUTER) JOIN = Union
Gibt alle Datensätze zurück, wenn es entweder in der linken oder der rechten Tabelle eine Übereinstimmung gibt.

JOIN
USING Klausel
Die USING-Klausel
Wird verwendet, wenn mehrere Spalten denselben Namen haben, aber Sie aber nicht alle diese gemeinsamen Spalten für den Join verwenden wollen.
Die in der USING-Klausel aufgeführten Spalten dürfen keine Qualifizierer in der Anweisung haben, auch nicht in der WHERE-Klausel.
SELECT *
FROM Tab1 JOIN Tab2 USING(Spalte);
Die Ausgabe bei ON und USING ist gleich.
JOIN
ON Klausel
ON-Klausel
Verknüpft Tabellen, bei denen die Spaltennamen in beiden Tabellen nicht übereinstimmen.
Join-Bedingungen werden aus den Filterbedingungen in der WHERE-Klausel entfernt.
Die gejointen Tabellen werden mit “ON” auf diese bestimmte Spalte gejoint.
SELECT *
FROM Tab1 JOIN Tab2
ON Tab1.Spalte1 = Tab2.Spalte2;
Die Ausgabe bei ON und USING ist gleich.
WHERE EXISTS (Unterabfrage)
SELECT DISTINCT TNr, Bezeichnung
FROM Artikel a
WHERE EXISTS (
SELECT * FROM Auftragspositionen b WHERE a.TNr = b.TNr);
SELECT DISTINCT wird verwendet, um nur unterschiedliche Werte zurückzugeben.
In einer Tabelle enthält eine Spalte oft viele doppelte Werte, und manchmal möchte man nur die unterschiedlichen (unterschiedlichen) Werte auflisten.
UNION ALL
Vereinige alle Nachnamen der Tabelle Angestellte
mit allen Nachnamen der Tabelle Kunden.
SELECT Nachname
FROM Angestellte
UNION ALL
SELECT FROM Kunden;
Vereinigt alle Nachnamen der Tabelle Angestellte mit allen Nachnamen der Tabelle Kunden.

MINUS
Selektiere alle Nachnamen der Tabelle Angestellte,
die nicht in der Tabelle Kunden sind.
SELECT Nachname
FROM Angestellte
MINUS
SELECT Nachname
FROM Kunden;
Selektiert alle Nachnamen der Tabelle Angestellte,
die nicht in der Tabelle Kunden sind.
INTERSECT
Selektiere alle Nachnamen der Angestellte, die auch Kunde sind.
SELECT Nachname
FROM Angestellte
INTERSECT
SELECT Nachname
FROM Kunden;
INTERSECT nimmt den Durchschnitt.
Also alle Nachnamen der Angestellte, die auch Kunde sind.
CONNECT BY
SELECT OTeil, UTeil
FROM Struktur
START WITH OTeil = 60
CONNECT BY PRIOR UTeil = OTeil;
START WITH = Spaltenname (= Konstante, it der begonnen werden soll)
CONNECT BY (Bedingung)
PRIOR legt den Vater-Knoten in CONNECT-BY Bedingung fest
LEVEL ist eine Pseudospalte, in der die Tiefe der Auflösung festgehalten wird