Formaler Datenbankentwurf - Informatixx
Formaler Datenbankentwurf - Informatixx
Formaler Datenbankentwurf - Informatixx
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
c Professor Dr. Georg Lausen, 2001: Vorlesung Datenbanken SQL: Tabellenausdrücke.4<br />
Mengenoperationen<br />
Welche Länder sind Teil von Europa und von Asien?<br />
(SELECT country<br />
FROM encompasses<br />
WHERE continent = 'Europe')<br />
INTERSECT<br />
(SELECT country<br />
FROM encompasses<br />
WHERE continent = 'Asia');<br />
c Professor Dr. Georg Lausen, 2001: Vorlesung Datenbanken SQL: Tabellenausdrücke.6<br />
Teilanfragen mit Korrelationsvariablen<br />
Bei Verwendung von Korrelationsvariablen von übergeordneten Anfragen wird die<br />
Teilanfrage pro Wertekombination der Korrelationsvariablen einmal ausgeführt.<br />
Mitglied in denselben Organisationen wie Andorra? (Division!)<br />
SELECT DISTINCT country<br />
FROM is member M<br />
WHERE NOT EXISTS<br />
((SELECT DISTINCT organization FROM is member<br />
WHERE country = 'AND')<br />
EXCEPT<br />
(SELECT DISTINCT organization FROM is member<br />
WHERE country = M.country));<br />
c Professor Dr. Georg Lausen, 2001: Vorlesung Datenbanken SQL: Tabellenausdrücke.5<br />
Welche Land-ID's treten in der Relation Country oder (und nicht in) der Relation<br />
encompasses auf?<br />
(SELECT code<br />
FROM Country)<br />
UNION<br />
(SELECT country<br />
FROM encompasses);<br />
(SELECT code<br />
FROM Country)<br />
EXCEPT<br />
(SELECT country<br />
FROM encompasses);<br />
Mittels UNION ALL, INTERSECTION ALL, EXCEPT ALL werden Duplikate der<br />
Zeilen berücksichtigt.<br />
Hat der erste Operand n Duplikate eines Tupels und der zweite Operand m, wobei<br />
0 n� m, dann hat das Ergebnis n +m, min(n� m), max(n�m� 0) Duplikate dieses<br />
Tupels.<br />
c Professor Dr. Georg Lausen, 2001: Vorlesung Datenbanken SQL: Tabellenausdrücke.7<br />
Welche Organisationen haben alle europäischen Länder als Mitglieder und nur<br />
gerade diese? (Mengengleichheit!)<br />
(SELECT DISTINCT organization<br />
FROM is member im1<br />
WHERE (NOT EXISTS<br />
(SELECT Country<br />
FROM encompasses<br />
WHERE encompasses.continent = 'Europe') EXCEPT<br />
(SELECT im2.Country<br />
FROM is member im2<br />
WHERE im2.organization = im1.organization))<br />
AND (NOT EXISTS<br />
(SELECT im2.Country<br />
FROM is member im2<br />
WHERE im2.organization = im1.organization) EXCEPT<br />
(SELECT Country<br />
FROM encompasses<br />
WHERE encompasses.continent = 'Europe')));