Basis van databases

De tabel Medewerker (MedewerkerNr, Naam, AfdelingID) heeft vijf rijen met als waarden voor AfdelingID achtereenvolgens 10, 20, 10, NULL en NULL. De tabel Afdeling (AfdelingID, Afdelingsnaam) heeft drie rijen met AfdelingID 10, 20 en 30. Hoeveel rijen geeft SELECT Afdeling.Afdelingsnaam, Medewerker.Naam FROM Afdeling LEFT OUTER JOIN Medewerker ON Afdeling.AfdelingID = Medewerker.AfdelingID?

  1. A3 rijen
  2. B4 rijen
  3. C5 rijen
Antwoord en toelichting tonen

Antwoord: B. 4 rijen

Een LEFT OUTER JOIN behoudt elke rij van de linkertabel (hier de tabel Afdeling); als de rechtertabel geen passende rij heeft, levert ze één rij op waarin de kolommen van de rechtertabel met NULL zijn gevuld. Afdeling 10 heeft twee medewerkers en geeft twee rijen, afdeling 20 geeft één rij, en afdeling 30, die geen medewerkers heeft, geeft één rij met NULL als naam, samen vier rijen. De twee medewerkers met AfdelingID NULL passen bij geen enkele afdeling en verschijnen, als rijen van de rechtertabel die niet volledig wordt behouden, niet in het resultaat. Een inner join zou ook de rij van afdeling 30 laten vallen en drie rijen geven. Worden de tabellen omgewisseld tot Medewerker LEFT OUTER JOIN Afdeling, dan blijven alle vijf medewerkers behouden en zijn het vijf rijen. Bij outer joins is het belangrijk na te gaan van welke tabel alle rijen behouden blijven.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. Kolom x van tabel R heeft vier rijen met de waarden 1, 1, 2, 3, en kolom x van tabel S heeft vier rijen met de waarden 1, 1, 2, 4. Hoeveel rijen geeft SELECT * FROM R INNER JOIN S ON R.x = S.x?
  2. De tabel Klant (KlantID, Naam) heeft vier rijen: (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). De tabel Bestelling (BestelID, KlantID, Bedrag) heeft vijf rijen: (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Hoeveel rijen geeft SELECT Naam FROM Klant WHERE KlantID IN (SELECT KlantID FROM Bestelling WHERE Bedrag > 5000)?
  3. Uit de tabel Klant (KlantID, Naam) en de tabel Bestelling (BestelID, KlantID, Bedrag) moeten de namen worden opgevraagd van klanten die nog nooit iets hebben besteld. Welk SQL-statement is juist?
  4. Welke beschrijving van een view in een relationele database is juist?
  5. Wat is het belangrijkste doel van de normalisatie van tabellen in een relationele database?