Grundlagen der Datenbanken

Eine Mitarbeitertabelle (MitarbeiterNr, Name, AbteilungsID) hat 5 Zeilen mit den AbteilungsID-Werten 10, 20, 10, NULL und NULL in dieser Reihenfolge. Eine Abteilungstabelle (AbteilungsID, Abteilungsname) hat 3 Zeilen mit AbteilungsID 10, 20 und 30. Wie viele Zeilen liefert SELECT Abteilung.Abteilungsname, Mitarbeiter.Name FROM Abteilung LEFT OUTER JOIN Mitarbeiter ON Abteilung.AbteilungsID = Mitarbeiter.AbteilungsID?

  1. A3 Zeilen
  2. B4 Zeilen
  3. C5 Zeilen
Antwort und Erläuterung anzeigen

Antwort: B. 4 Zeilen

Ein LEFT OUTER JOIN behält jede Zeile der linken Tabelle (hier der Abteilungstabelle); hat die rechte Tabelle keine passende Zeile, entsteht eine Zeile, deren Spalten der rechten Tabelle mit NULL gefüllt sind. Abteilung 10 hat zwei Mitarbeiter und ergibt zwei Zeilen, Abteilung 20 eine Zeile, und Abteilung 30 ohne Mitarbeiter ergibt eine Zeile mit Name NULL, zusammen 4 Zeilen. Die zwei Mitarbeiter mit AbteilungsID NULL passen zu keiner Abteilung und erscheinen als Zeilen der rechten Tabelle, die nicht vollständig behalten wird, nicht im Ergebnis. Ein Inner Join würde auch die Zeile für Abteilung 30 weglassen und 3 Zeilen ergeben. Vertauscht man die Tabellen zu Mitarbeiter LEFT OUTER JOIN Abteilung, bleiben alle fünf Mitarbeiter erhalten, was 5 Zeilen ergibt. Bei Outer Joins ist es wichtig zu prüfen, welche Tabelle alle ihre Zeilen behält.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. Spalte x der Tabelle R hat 4 Zeilen mit den Werten 1, 1, 2, 3, und Spalte x der Tabelle S hat 4 Zeilen mit den Werten 1, 1, 2, 4. Wie viele Zeilen liefert SELECT * FROM R INNER JOIN S ON R.x = S.x?
  2. Eine Kundentabelle (KundenID, Name) hat 4 Zeilen: (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). Eine Bestelltabelle (BestellID, KundenID, Betrag) hat 5 Zeilen: (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Wie viele Zeilen liefert SELECT Name FROM Kunde WHERE KundenID IN (SELECT KundenID FROM Bestellung WHERE Betrag > 5000)?
  3. Aus einer Kundentabelle (KundenID, Name) und einer Bestelltabelle (BestellID, KundenID, Betrag) sollen die Namen der Kunden ermittelt werden, die noch nie bestellt haben. Welche SQL-Anweisung ist richtig?
  4. Welche Aussage beschreibt einen View in einer relationalen Datenbank richtig?
  5. Was ist der Hauptzweck der Normalisierung von Tabellen in einer relationalen Datenbank?