voorbeeldexamen

advertisement
voorbeeldexamen
Databases and SQL Foundation (DBSQLF)
I-Tracks
Databases and SQL Foundation
Voorbeeldexamen DBSQLF
Uitgave juni 2006
inhoud
3
4
21
44
inleiding
voorbeeldexamen
antwoordindicatie
beoordeling
EXIN
Kantoor Janssoenborch, Hoog Catharijne
Godebaldkwartier 365, 3511 DT Utrecht
Postbus 19147, 3501 DC Utrecht
Telefoon (030) 234 48 11
Fax (030) 231 59 86
E-mail [email protected]
Internet http://www.exin.nl
Copyright © 2006 EXIN
Alle rechten voorbehouden. Niets uit deze uitgave mag worden openbaar gemaakt of verveelvoudigd, opgeslagen in
een dataverwerkend systeem of uitgezonden in enige vorm door middel van druk, fotokopie of welke andere vorm dan
ook zonder toestemming van EXIN.
© EXIN, DBSQLF
2/44
Inleiding
Dit is het voorbeeldexamen Databases and SQL Foundation (DBSQLF).
Het examen bestaat uit 30 meerkeuzevragen. Elke vraag heeft één correct antwoord. Elk goed
beantwoorde vraag levert u 1 punt op. Het maximaal aantal te behalen punten is 30. Bij 20
punten of meer bent u geslaagd.
De beschikbare tijd is 60 minuten.
Aan deze gegevens kunnen geen rechten worden ontleend.
Veel succes!
© EXIN, DBSQLF
3/44
Voorbeeldexamen
1 van 30
Een verkooporganisatie heeft een relationele database, waarin onder andere de volgende
relatie is ondergebracht:
KLANT(klantnr, klantnaam, klantadres, klantsaldo)
De organisatie wil ook gegevens van klanten in het buitenland kunnen vastleggen en moet
daarvoor de relatie KLANT met een aantal attributen uitbreiden.
Is het altijd mogelijk om de relatie KLANT uit te breiden zonder dat bestaande queries daarvoor
moeten worden aangepast?
A. Ja, dit is altijd mogelijk.
B. Nee, dit is niet mogelijk.
C. Dit is alleen mogelijk indien in de gebruikte queries in SELECT het gebruik van * niet
voorkomt.
2 van 30
Er worden verschillende eisen gesteld waaraan een database-managementsyteem (DBMS) en
een database moeten voldoen.
Hoort: 'Verschillende views van gebruikers op dezelfde gegevens moeten worden ondersteund'
tot die eisen?
A. ja
B. nee
3 van 30
Kan men in een relationele database zoeken op elk gegeven, zonder daar eerst een index voor
te creëren?
A. ja
B. nee
© EXIN, DBSQLF
4/44
4 van 30
Een winkelketen wil gegevens vastleggen van artikelen en leveranciers. Men wil zowel
overzichten van leveranciers per artikel kunnen maken, als van artikelen per leverancier.
In welk databasemodel moeten gegevens dubbel worden opgeslagen om beide soorten
overzichten mogelijk te maken?
A. in het hiërarchische model
B. in het netwerkmodel
C. in het relationele model
5 van 30
Welke van onderstaande beweringen over een kandidaatsleutel is juist?
A. Elke kandidaatsleutel is tevens vreemde sleutel.
B. Elke kandidaatsleutel omvat alle attributen van de primaire sleutel.
C. Elke relatie heeft precies één kandidaatsleutel.
D. Elke waarde van een kandidaatsleutel in een relationele tabel is uniek.
6 van 30
Onderstaande relaties hebben betrekking op afschriften van een bankrekening:
AFSCHRIFT (jaar, volgnummer, beginsaldo, eindsaldo)
POST (<jaar, volgnummer>, postnummer, omschrijving, valutadatum, bedrag,
activiteitnummer)
Elk afschrift bevat één of meer posten. Elke post hoort bij één bepaald afschrift. Om deze
samenhang vast te leggen wordt in het relationele model gebruik gemaakt van primaire en
vreemde sleutels.
Lees in dit verband onderstaande bewering:
‘De referentiële integriteit schrijft voor dat het bij een post behorende afschrift aanwezig is.’
Is deze bewering juist?
A. Ja, maar alleen omdat de vreemde sleutel ook deel uitmaakt van de primaire sleutel.
B. Ja, omdat referentiële integriteit dit nu eenmaal voorschrijft.
C. Nee, want het is het gevolg van entiteitsintegriteit.
© EXIN, DBSQLF
5/44
7 van 30
Onderstaande relaties hebben betrekking op een vereniging en haar leden:
VERENIGING (verenigingnaam, contributie, betaalperiode)
LID (lidnaam, adres, postcode, plaats, ingangsdatum, betaalperiode)
Voor de relatie VERENIGING voert men één tupel in (en niet meer dan één) met als sleutel 'St
Caecilia'.
Lees in dit verband deze bewering:
'De hoogte van de contributie is voor alle leden hetzelfde.'
Is deze bewering juist?
A. Ja, doordat in de relatie VERENIGING één tupel voorkomt geldt die voor alle leden.
B. Nee, want er is geen vreemde sleutel naar de relatie VERENIGING opgenomen.
C. Nee, want wat wordt opgeslagen voor betaalperiode in de relatie VERENIGING hoeft niet
hetzelfde te zijn als in relatie LID.
8 van 30
Onderstaande relatie heeft betrekking op leden van een vereniging:
LID (lidnaam, adres, postcode, plaats, ingangsdatum, betaalperiode)
Lees in dit verband deze bewering:
'Bij het registreren van een lid hoeft het adres niet ingevuld te worden.'
Is deze bewering juist?
A. ja
B. nee
© EXIN, DBSQLF
6/44
9 van 30
Onderstaande relatie betreft leden van een vereniging:
LID (lidnaam, adres, postcode, plaats, ingangsdatum, betaalperiode)
Lees in dit verband deze bewering:
'Bij deze vereniging kan één persoon tegelijkertijd op twee verschillende adressen
geregistreerd staan.'
Is deze bewering juist?
A. Ja, door maar alleen door het opnemen van twee tupels voor eenzelfde lid met
verschillende waarden voor het attribuut adres.
B. Nee, je kunt per persoon maar één tupel in de relatie LID opnemen.
C. Nee, want een bepaalde waarde voor het attribuut lidnaam komt dan dubbel voor.
10 van 30
Hoeveel attributen bevat een vreemde sleutel?
A. meer dan één attribuut
B. minimaal één attribuut
C. niet meer dan één attribuut
11 van 30
Bekijk de volgende relatie:
STUDENT (studentnummer, studentnaam, studentadres, ...)
In de relatie STUDENT komen bij studentnummer gegarandeerd slechts unieke waarden voor.
Hoe wordt studentnummer in dit verband genoemd?
A. kandidaatsleutel
B. samengestelde sleutel
C. vreemde sleutel
© EXIN, DBSQLF
7/44
12 van 30
Een verhuurder hanteert een database waarin onder andere gegevens van panden en van
verhuur zijn vastgelegd:
PANPAND (nummer, naam, adres, plaats, huur)
HUUR (huurdernaam, <nummer>, contractbegindatum, contracteinddatum,
bankrekeningnummer)
Kent een pand meer dan één contractperiodes?
A. Ja, als er in de relatie HUUR voor het pand voor zowel contractbegindatum als
contracteinddatum een waarde is opgenomen.
B. Ja, wanneer er voor een pand meer dan één tupel in de relatie HUUR voorkomt waarin
waarden zijn opgenomen voor contractbegindatum en voor contracteinddatum.
C. Nee, want er is in de relatie HUUR niet altijd een waarde opgenomen voor het attribuut
contracteinddatum.
13 van 30
Bekijk de volgende relatie:
filmnr. titel
regisseurnr Jaar tijdsduur
1
Manhattan
1
1979
96
2
Crimes of the heart
2
1986
105
3
Looking for Mr Goodbar
3
1977
135
4
Pretty Woman
4
1990
117
5
The postman always rings twice
5
1981
113
6
The postman always rings twice
5
1946
113
Wat is een juiste benaming voor het vet weergegeven deel?
A. attribuut
B. attribuutnaam
C. attribuutwaarde
14 van 30
Met welk begrip in relationele database komt het begrip 'tupel' overeen?
A. kolom
B. rij
C. tabel
© EXIN, DBSQLF
8/44
15 van 30
Bekijk de volgende relatie:
SPORTCLUB (clubnaam, woonplaats, contributie, sport)
Sportclub
clubnaam woonplaats contributie sport
Vitesse
Rotterdam
300
voetbal
Vitesse
Schiedam
300
atletiek
Vita
Rotterdam
280
voetbal
Vita
Schiedam
280
voetbal
Is de inhoud van bovenstaande tabel toegestaan uitgaande van de gegeven relatie?
A. ja
B. nee
16 van 30
Bekijk de volgende relaties:
REISGIDS (gidsnr, titel, ingangsdatum, einddatum)
DRUKORDER (bestelnr, <gidsnr>, datumbestelling, aantalbesteld, datumgeleverd)
Waarom is er uitgaande van de gegeven relaties sprake van referentiële integriteit?
A. Elk tupel van de relatie REISGIDS heeft een unieke waarde voor het attribuut gidsnr.
B. Het attribuut gidsnr in de relatie DRUKORDER is een vreemde sleutel. Hierdoor kan een
tupel alleen worden toegevoegd als in de relatie REISGIDS een tupel voorkomt met dezelfde
waarde van het attribuut gidsnr als dat van het toe te voegen tupel.
C. Omdat het attribuut gidsnr een vreemde sleutel is die in de relatie DRUKORDER geen
onderdeel van de primaire sleutel uitmaakt.
17 van 30
‘In een database kunnen gegevens met Data Control Language (DCL) worden gewijzigd en
toegevoegd.’
Is deze bewering juist?
A. ja
B. nee
© EXIN, DBSQLF
9/44
18 van 30
Bekijk de volgende relaties uit een database:
KLANT (klantnr, naam, adres, woonpl, regio)
FACTUUR (factnr, datum, klantnr, bedrag, betaald)
Bekijk onderstaande opdracht:
SELECT naam, factnr
FROM klant, factuur
WHERE bedrag > 600
AND factuur.klantnr = klant.klantnr
Lees in dit verband onderstaande bewering:
‘De opdracht toont de namen van klanten en de nummers van aan hen gezonden facturen met
een bedrag van ten minste 600 euro.’
Is deze bewering juist?
A. ja
B. nee
19 van 30
Bekijk onderstaande DCL-opdrachten:
GRANT SELECT ON TABLE activiteit TO Carla, Lies
GRANT INSERT, DELETE ON TABLE lid TO Carla
Gegeven twee DML-opdrachten.
1:
SELECT a-omschrijving
FROM activiteit
WHERE activiteitnummer = 27
2:
UPDATE lid
SET ingangsdatum = '2006-04-01'
WHERE naam = 'J. van Heumel'
Welke personen zijn gerechtigd beide DML-opdrachten door het DBMS te laten uitvoeren?
A. alleen Carla
B. alleen Lies
C. Carla en Lies
D. geen van beiden
© EXIN, DBSQLF
10/44
20 van 30
Aankoop
Klantnr
Datum
Bedrag
1
2005-01-20
100
2
2005-01-20
50
4
2005-02-04
30
3
2005-02-05
110
2
2005-03-30
70
4
2005-04-18
70
SELECT klantnr
FROM aankoop
GROUP BY klantnr
HAVING SUM (Bedrag) > 100
Welk resultaat wordt verkregen als de gegeven SELECT-opdracht op de gegeven tabel wordt
toegepast?
A. 1, 2, 3, 4
B. 1, 3
C. 2, 3
D. 3
© EXIN, DBSQLF
11/44
21 van 30
Bekijk de volgende relaties:
VESTIGING (vesnaam, branche, plaats)
WERKNEMER (w#, wnaam, afdeling, fnaam, salaris, <vesnaam>)
De volgende CREATE TABLE opdracht geeft een deel van de statements weer om de tabel
WERKNEMER te creëren op basis van de gegeven relaties.
CREATE TABLE werknemer (w# SMALLINT NOT NULL,
wnaam CHAR (8),
afdeling CHAR (12),
fnaam CHAR (12),
salaris DECIMAL (10),
vesnaam CHAR (10),
.....)
Wat moet op de plaats van de puntjes komen te staan op basis van bovenstaande gegevens?
A. PRIMARY KEY (vesnaam)
FOREIGN KEY (w#) REFERENCES vestiging
B. PRIMARY KEY (w#),
FOREIGN KEY (vesnaam) REFERENCES vestiging
C. PRIMARY KEY (w#),
FOREIGN KEY (w#) REFERENCES vestiging
D. PRIMARY KEY (w#,
FOREIGN KEY vesnaam) REFERENCES vestiging
© EXIN, DBSQLF
12/44
22 van 30
Teams
Teamnummer
Datum
Punten
T1
2006-01-01
3
T1
2006-01-01
8
T1
2006-02-06
1
T2
2006-01-01
5
T3
2006-02-06
7
Resultaat:
T1
T2
Welke SELECT opdracht heeft het gegeven resultaat?
A. SELECT DISTINCT Teamnummer
FROM Teams
B. SELECT DISTINCT Teamnummer
FROM Teams
WHERE datum = '2006-01-01'
C. SELECT Teamnummer
FROM Teams
WHERE datum = '2006-01-01'
D. SELECT Teamnummer
FROM Teams
WHERE datum = '2006-02-06'
© EXIN, DBSQLF
13/44
23 van 30
Drukorder
bestelnr gidsnr datumbestelling aantalbesteld
501
1038
2005-02-01
400
502
1038
2005-04-01
300
503
2038
2005-02-01
600
504
1038
2005-05-01
200
505
2038
2005-06-28
300
506
2038
2005-09-01
100
SELECT gidsnr, COUNT (aantalbesteld)
FROM drukorder
WHERE datumbestelling < '2005-07-01'
AND aantalbesteld > 200
GROUP BY gidsnr
Deze SQL-opdracht geeft het volgende resultaat:
Drukorder
gidsnr
count
(aantalbesteld)
1038
x
2038
y
Wat moet voor x en y worden ingevuld om het resultaat van de gegeven SQL-opdracht op de
gegeven tabel DRUKORDER weer te geven?
A. x=2 en y=2
B. x=3 en y=2
C. x=700 en y=900
D. x=900 en y=900
© EXIN, DBSQLF
14/44
24 van 30
Gegeven zijn de volgende relaties:
REISGIDS (gidsnr, titel, ingangsdatum, einddatum)
REISPRODUCT (productnr, soortproduct, <gidsnr>, omschrijving, bestemming, aantal dagen,
soortverblijf, soortvervoer, soortvermaak)
Men wil met de opdracht CREATE TABLE de tabel REISPRODUCT creëren.
De volgende onvolledige DDL-opdracht wordt hiervoor gebruikt:
CREATE TABLE reisproduct (
soortproduct CHAR(30) NOT NULL,
gidsnr INTEGER,
omschrijving CHAR(30),
bestemming CHAR(30),
aantaldagen INTEGER,
soortverblijf CHAR(20) NOT NULL,
soortvervoer CHAR(20) NOT NULL,
soortvermaak CHAR(20),
...
)
Hoe moet de DDL-opdracht worden aangevuld om de tabel REISPRODUCT correct te creëren?
A. productnr INTEGER NOT NULL,
FOREIGN KEY(productnr, gidsnr) REFERENCES reisgids
B. productnr INTEGER NOT NULL,
PRIMARY KEY(productnr),
FOREIGN KEY(gidsnr) REFERENCES reisgids
C. PRIMARY KEY(productnr INTEGER),
FOREIGN KEY(gidsnr) REFERENCES reisgids
© EXIN, DBSQLF
15/44
25 van 30
Bekijk het volgende relationele schema:
REISGIDS (gidsnr, titel, ingangsdatum, einddatum)
KLANT (klantnr, soortklant, naam, adres, postcode, woonplaats, telefoonnr, faxnr, emailadres,
contactpersoon)
GIDSAANVRAAG (<klantnr>, <gidsnr>, datumaanvraag, aantalgevraagd, datumverzending,
aantalverzonden)
De systeembeheerder wil de tabel GIDSAANVRAAG schonen. Hij wil met behulp van een SQLopdracht alle rijen, waarvan het aantal aangevraagd gelijk is aan het aantal verzonden, uit de
tabel verwijderen.
Welke SQL-opdracht levert het gewenste resultaat?
A. DELETE FROM gidsaanvraag
WHERE aantalgevraagd = aantalverzonden
B. DELETE FROM gidsaanvraag
WHERE klantnr IN
(SELECT klantnr
FROM gidsaanvraag
WHERE aantalgevraagd = aantalverzonden)
C. DELETE FROM gidsaanvraag
WHERE gidsnr IN
(SELECT gidsnr
FROM gidsaanvraag
WHERE aantalgevraagd = aantalverzonden)
© EXIN, DBSQLF
16/44
26 van 30
Bekijk onderstaande tabel TARIEF:
Tarief
typehandeling
bedrag
controle
32
eenvlaksvulling
37
tweevlaksvulling
50
wortelkanaal
85
Bij de overgang naar de euro moest in de tabel TARIEF elk bedrag worden gedeeld door 2.2.
Welke SQL-query leidt tot het gewenste resultaat?
A. INSERT INTO bedrag
VALUES ((32/2.2), (37/2.2), (50/2.2), (85/2.2))
B. INSERT INTO tarief
VALUES ((32/2.2), (37/2.2), (50/2.2), (85/2.2))
C. UPDATE bedrag
SET bedrag = bedrag/2.2
D. UPDATE tarief
SET bedrag = bedrag/2.2
27 van 30
Bekijk de volgende GRANT-opdracht:
GRANT ALTER ON werknemer TO Piet
Wat mag Piet volgens de GRANT-opdracht doen?
A. nieuwe kolommen aan de tabel WERKNEMER toevoegen
B. rijen aan de tabel WERKNEMER toevoegen
C. waarden in rijen in de tabel WERKNEMER wijzigen
© EXIN, DBSQLF
17/44
28 van 30
SELECT klas
FROM klas
WHERE leerlingaantal < 14
AND klas IN
(SELECT klas
FROM vak
GROUP BY klas
HAVING (SUM) lesaantal = 5)
Wat is het resultaat als de gegeven SELECT-opdracht op de gegeven tabellen wordt toegepast?
A. 1B
2B
2C
B. 1B
2B
2C
3A
C. 1B
2C
D. 1B
2C
3A
© EXIN, DBSQLF
18/44
29 van 30
Kookboek
kookboek
recept
calorieën
Lekker Wokken Hete kip
400
Lekker Wokken Roerbak
300
Pasta en zo
Macaroni Napoli
600
Pasta en zo
Pesto
200
Pasta en zo
Lasagne
400
Ovenschotels
Lasagne
500
Lees de volgende informatiebehoefte:
Geef alle gegevens van recepten waarvoor geldt dat het recept in vergelijking met de andere
recepten in hetzelfde kookboek het maximaal aantal calorieën bevat.
Gegeven is de volgende SELECT opdracht:
SELECT *
FROM kookboek
WHERE calorieën =
(SELECT MAX (calorieën)
FROM kookboek
GROUP BY kookboek)
Kan door middel van de SELECT-opdracht de gevraagde informatie worden verkregen?
A. ja
B. nee
© EXIN, DBSQLF
19/44
30 van 30
Bekijk de volgende tabel en informatiebehoefte:
Circuit
loper
datum
plaats
punten
1
2005-01-01
1
100
2
2005-02-01
2
150
1
2005-02-01
1
200
3
2005-02-01
3
50
2
2005-04-01
1
300
Geef van de lopers die op plaats 1 hebben gestaan het aantal keren dat ze op plaats 1 hebben
gestaan.
Om de informatie te verkrijgen wordt gebruik gemaakt van de volgende SELECT-opdracht:
SELECT loper, count(*)
FROM circuit
GROUP BY loper
HAVING plaats = 1
Is de gegeven SELECT-opdracht juist?
A. ja
B. nee
© EXIN, DBSQLF
20/44
Antwoordindicatie
1 van 30
Een verkooporganisatie heeft een relationele database, waarin onder andere de volgende
relatie is ondergebracht:
KLANT(klantnr, klantnaam, klantadres, klantsaldo)
De organisatie wil ook gegevens van klanten in het buitenland kunnen vastleggen en moet
daarvoor de relatie KLANT met een aantal attributen uitbreiden.
Is het altijd mogelijk om de relatie KLANT uit te breiden zonder dat bestaande queries daarvoor
moeten worden aangepast?
A. Ja, dit is altijd mogelijk.
B. Nee, dit is niet mogelijk.
C. Dit is alleen mogelijk indien in de gebruikte queries in SELECT het gebruik van * niet
voorkomt.
A. Onjuist. Bij het gebruik maken van * in de select wordt de uitkomst na het toevoegen van
kolommen anders.
B. Onjuist. Het is onder voorwaarden wel mogelijk, zie bij alternatief C.
C. Juist. In het geval van het niet gebruiken van * in de select kunnen queries nooit gebruik
maken van nog niet bestaande attributen. Het toevoegen van nieuwe attributen is daarom geen
probleem. Bij het verwijderen van bestaande attributen, die misschien in queries voorkomen,
zou dat wel een probleem kunnen zijn.
2 van 30
Er worden verschillende eisen gesteld waaraan een database-managementsyteem (DBMS) en
een database moeten voldoen.
Hoort: 'Verschillende views van gebruikers op dezelfde gegevens moeten worden ondersteund'
tot die eisen?
A. ja
B. nee
A. Juist. Deze eis moet volgens de literatuur inderdaad worden gesteld (boek A: blz 12).
B. Onjuist. Deze eis moet volgens de literatuur wel worden gesteld (boek A: blz. 12).
© EXIN, DBSQLF
21/44
3 van 30
Kan men in een relationele database zoeken op elk gegeven, zonder daar eerst een index voor
te creëren?
A. ja
B. nee
A. Juist. Een index versnelt het zoeken, maar is voor het zoeken zelf niet noodzakelijk.
B. Onjuist. Een index versnelt het zoeken, maar is voor het zoeken zelf niet noodzakelijk.
4 van 30
Een winkelketen wil gegevens vastleggen van artikelen en leveranciers. Men wil zowel
overzichten van leveranciers per artikel kunnen maken, als van artikelen per leverancier.
In welk databasemodel moeten gegevens dubbel worden opgeslagen om beide soorten
overzichten mogelijk te maken?
A. in het hiërarchische model
B. in het netwerkmodel
C. in het relationele model
A. Juist. Bij het hiërarchische model vindt de benadering altijd plaats vanuit de 'root'.
Wil men artikelen per leverancier, dan staat de leverancier in de root van de fysieke database
en de bijbehorende artikelen staan in de hiërarchie daaronder.
Wil men leveranciers per artikel, dan staat het artikel in de root van de fysieke database en de
bijbehorende leveranciers staan in de hiërarchie daaronder. Dat houdt in dat er twee fysieke
databases nodig zijn met, per definitie, overtollige gegevens.
B. Onjuist. In het netwerkmodel benadert men artikelen per leverancier door een
leverancierrecord te zoeken en vervolgens de ketting van bijbehorende artikelen af te lopen.
Leveranciers per artikel krijgt men door een artikelrecord te zoeken en vervolgens de ketting
van bijbehorende leveranciers af te lopen. Al deze records en bijbehorende kettingen bevinden
zich in één fysieke database, zonder overtollige gegevens.
C. Onjuist. In het relationele model benadert men artikelen per leverancier door in de tabel
'leveranciersartikelen' alle rijen te nemen die dezelfde leverancierscode hebben. Leveranciers
per artikel krijgt men door in dezelfde tabel alle rijen te nemen die dezelfde artikelcode
hebben. Heeft men behoefte aan leveranciers- of artikelgegevens, dan zoekt men die met de
betreffende code (sleutel) op in de tabel 'leveranciers', respectievelijk 'artikelen'. In het
relationele model heeft men geen redundantie van gegevens (anders dan sleutels).
© EXIN, DBSQLF
22/44
5 van 30
Welke van onderstaande beweringen over een kandidaatsleutel is juist?
A. Elke kandidaatsleutel is tevens vreemde sleutel.
B. Elke kandidaatsleutel omvat alle attributen van de primaire sleutel.
C. Elke relatie heeft precies één kandidaatsleutel.
D. Elke waarde van een kandidaatsleutel in een relationele tabel is uniek.
A. Onjuist. Een vreemde sleutel in een relatie geeft het verband weer met een andere relatie,
waar deze vreemde sleutel de primaire sleutel is. Dezelfde waarde kan daardoor in meer dan
één tupel voorkomen. Een voorwaarde voor een kandidaatsleutel is dat elke waarde uniek is.
Daar wordt dan niet aan voldaan.
B. Onjuist. Het is waar dat de primaire sleutel tevens een kandidaatsleutel was. De bewering
dat elke kandidaatsleutel alle attributen van de primaire sleutel bevat, is niet waar. Dan zou er
in elke relatie maar één kandidaatsleutel mogelijk zijn.
C. Onjuist. Een relatie kan meer dan één kandidaatsleutel hebben; één wordt verkozen als
primaire sleutel.
D. Juist. Een kandidaatsleutel is een mogelijke primaire sleutel van een tabel. Een voorwaarde
voor een primaire sleutel is dat elke waarde uniek is.
© EXIN, DBSQLF
23/44
6 van 30
Onderstaande relaties hebben betrekking op afschriften van een bankrekening:
AFSCHRIFT (jaar, volgnummer, beginsaldo, eindsaldo)
POST (<jaar, volgnummer>, postnummer, omschrijving, valutadatum, bedrag,
activiteitnummer)
Elk afschrift bevat één of meer posten. Elke post hoort bij één bepaald afschrift. Om deze
samenhang vast te leggen wordt in het relationele model gebruik gemaakt van primaire en
vreemde sleutels.
Lees in dit verband onderstaande bewering:
‘De referentiële integriteit schrijft voor dat het bij een post behorende afschrift aanwezig is.’
Is deze bewering juist?
A. Ja, maar alleen omdat de vreemde sleutel ook deel uitmaakt van de primaire sleutel.
B. Ja, omdat referentiële integriteit dit nu eenmaal voorschrijft.
C. Nee, want het is het gevolg van entiteitsintegriteit.
A. Onjuist. Het deel uitmaken van de primaire sleutel zorgt er alleen voor dat er een waarde is.
Deze waarde komt door het deel uitmaken van de primaire sleutel zelf niet noodzakelijk ook
voor als primaire sleutel van de relatie AFSCHRIFT. Dit komt alleen door de referentiële
integriteit.
B. Juist. Door in POST een vreemde sleutel op te nemen die verwijst naar de primaire sleutel
van AFSCHRIFT wordt er voor gezorgd dat geen posten kunnen worden toegevoegd voordat het
bijbehorende afschrift is ingevoerd, en dat een afschrift niet kan worden verwijderd zolang er
nog posten van aanwezig zijn.
C. Onjuist. Entiteitsintegriteit zorgt alleen voor het opnemen van een unieke waarde van de
primaire sleutel. Deze waarde hoeft (voor entiteitsintegriteit) niet een waarde te zijn die
aansluit op één van de waarden van de primaire sleutel van de relatie AFSCHRIFT.
© EXIN, DBSQLF
24/44
7 van 30
Onderstaande relaties hebben betrekking op een vereniging en haar leden:
VERENIGING (verenigingnaam, contributie, betaalperiode)
LID (lidnaam, adres, postcode, plaats, ingangsdatum, betaalperiode)
Voor de relatie VERENIGING voert men één tupel in (en niet meer dan één) met als sleutel 'St
Caecilia'.
Lees in dit verband deze bewering:
'De hoogte van de contributie is voor alle leden hetzelfde.'
Is deze bewering juist?
A. Ja, doordat in de relatie VERENIGING één tupel voorkomt geldt die voor alle leden.
B. Nee, want er is geen vreemde sleutel naar de relatie VERENIGING opgenomen.
C. Nee, want wat wordt opgeslagen voor betaalperiode in de relatie VERENIGING hoeft niet
hetzelfde te zijn als in relatie LID.
A. Juist. In de relatie LID komt geen contributie voor, dus er kan maar één waarde worden
vastgelegd, in de relatie VERENIGING.
B. Onjuist. Door het opnemen van precies één tupel geldt de waarde voor contributie
algemeen. Een vreemde sleutel is nodig wanneer er meer tupels in de relatie VERENIGING
worden vastgelegd.
C. Onjuist. Betaalperiode zegt niets over de hoogte van de contributie.
8 van 30
Onderstaande relatie heeft betrekking op leden van een vereniging:
LID (lidnaam, adres, postcode, plaats, ingangsdatum, betaalperiode)
Lees in dit verband deze bewering:
'Bij het registreren van een lid hoeft het adres niet ingevuld te worden.'
Is deze bewering juist?
A. ja
B. nee
A. Onjuist. Adres is een deel van de primaire sleutel; deze moet altijd volledig worden ingevuld.
B. Juist. Adres is een deel van de primaire sleutel; deze moet altijd volledig worden ingevuld.
© EXIN, DBSQLF
25/44
9 van 30
Onderstaande relatie betreft leden van een vereniging:
LID (lidnaam, adres, postcode, plaats, ingangsdatum, betaalperiode)
Lees in dit verband deze bewering:
'Bij deze vereniging kan één persoon tegelijkertijd op twee verschillende adressen
geregistreerd staan.'
Is deze bewering juist?
A. Ja, door maar alleen door het opnemen van twee tupels voor eenzelfde lid met
verschillende waarden voor het attribuut adres.
B. Nee, je kunt per persoon maar één tupel in de relatie LID opnemen.
C. Nee, want een bepaalde waarde voor het attribuut lidnaam komt dan dubbel voor.
A. Juist, want het is de combinatie van lidnaam en adres die uniek moet zijn. De betreffende
persoon wordt in deze situatie dan wel als twee verschillende leden gezien.
B. Onjuist. Beperkingen gelden alleen voor het opnemen van tupels. Als iemand meer dan één
adres heeft, dan kunnen diens naam in combinatie met de verschillende adressen gewoon
vastgelegd worden.
C. Onjuist. Lidnaam is slechts een deel van een primaire sleutel. Waarden van delen van de
primaire sleutel mogen dubbel voorkomen. Alleen combinaties van alle waarden voor de
attributen van een primaire sleutel mogen dit niet.
10 van 30
Hoeveel attributen bevat een vreemde sleutel?
A. meer dan één attribuut
B. minimaal één attribuut
C. niet meer dan één attribuut
A. Onjuist. Een vreemde sleutel kán uit meer dan één attribuut bestaan, maar het hoeft niet.
B. Juist. Een vreemde sleutel kán uit meer dan één attribuut bestaan, maar het hoeft niet.
C. Onjuist. Een vreemde sleutel kán uit meer dan één attribuut bestaan, maar het hoeft niet.
© EXIN, DBSQLF
26/44
11 van 30
Bekijk de volgende relatie:
STUDENT (studentnummer, studentnaam, studentadres, ...)
In de relatie STUDENT komen bij studentnummer gegarandeerd slechts unieke waarden voor.
Hoe wordt studentnummer in dit verband genoemd?
A. kandidaatsleutel
B. samengestelde sleutel
C. vreemde sleutel
A. Juist. Ieder attribuut (of combinatie van ...) dat primaire sleutel zou kunnen zijn is een
kandidaatsleutel. Dat geldt dus ook voor 'studentnummer'.
B. Onjuist. Een samengestelde sleutel is een combinatie van attributen. Dat geldt niet voor
'studentnummer', dat hier kandidaatsleutel (of mogelijk zelfs primaire sleutel) is.
C. Onjuist. Een vreemde sleutel is een attribuut dat in een andere (of dezelfde) tabel als
primaire sleutel voorkomt. Dat geldt niet voor 'studentnummer', dat hier kandidaatsleutel is.
Het is niet zeker of 'studentnummer' ook primaire sleutel is.
12 van 30
Een verhuurder hanteert een database waarin onder andere gegevens van panden en van
verhuur zijn vastgelegd:
PANPAND (nummer, naam, adres, plaats, huur)
HUUR (huurdernaam, <nummer>, contractbegindatum, contracteinddatum,
bankrekeningnummer)
Kent een pand meer dan één contractperiodes?
A. Ja, als er in de relatie HUUR voor het pand voor zowel contractbegindatum als
contracteinddatum een waarde is opgenomen.
B. Ja, wanneer er voor een pand meer dan één tupel in de relatie HUUR voorkomt waarin
waarden zijn opgenomen voor contractbegindatum en voor contracteinddatum.
C. Nee, want er is in de relatie HUUR niet altijd een waarde opgenomen voor het attribuut
contracteinddatum.
A. Onjuist. Dit laat nog vrij dat voor een pand slechts één tupel in de relatie HUUR is
vastgelegd.
B. Juist. Zodra voor een pand meer dan één tupel in de relatie HUUR voorkomt zijn er meer
contractperiodes. Een pand 'kent' deze periodes als er waarden zijn voor contractbegindatum
en contracteinddatum.
C. Onjuist. Er kan uiteraard een contractsperiode lopen die nog niet is afgesloten, maar er kan
daarnaast meer dan één tupel zijn opgenomen met ingevulde waarden voor
contractbegindatum en contracteinddatum.
© EXIN, DBSQLF
27/44
13 van 30
Bekijk de volgende relatie:
filmnr. titel
regisseurnr Jaar tijdsduur
1
Manhattan
1
1979
96
2
Crimes of the heart
2
1986
105
3
Looking for Mr Goodbar
3
1977
135
4
Pretty Woman
4
1990
117
5
The postman always rings twice
5
1981
113
6
The postman always rings twice
5
1946
113
Wat is een juiste benaming voor het vet weergegeven deel?
A. attribuut
B. attribuutnaam
C. attribuutwaarde
A. Juist. Het weergegeven deel is de combinatie van attribuutnaam en attribuutwaarden, samen
een attribuut.
B. Onjuist. Het weergegeven deel is de combinatie van attribuutnaam en attribuutwaarden,
samen een attribuut.
C. Onjuist. Het weergegeven deel is de combinatie van attribuutnaam en attribuutwaarden,
samen een attribuut.
14 van 30
Met welk begrip in relationele database komt het begrip 'tupel' overeen?
A. kolom
B. rij
C. tabel
A. Onjuist. Het begrip 'kolom' komt overeen met het begrip 'attribuut'.
B. Juist. Het begrip 'rij' komt overeen met het begrip 'tupel'.
C. Onjuist. Het begrip 'tabel' komt overeen met het begrip 'relatie'.
© EXIN, DBSQLF
28/44
15 van 30
Bekijk de volgende relatie:
SPORTCLUB (clubnaam, woonplaats, contributie, sport)
Sportclub
clubnaam woonplaats contributie sport
Vitesse
Rotterdam
300
voetbal
Vitesse
Schiedam
300
atletiek
Vita
Rotterdam
280
voetbal
Vita
Schiedam
280
voetbal
Is de inhoud van bovenstaande tabel toegestaan uitgaande van de gegeven relatie?
A. ja
B. nee
A. Juist. De inhoud van de tabel is een toegestane inhoud. De entiteitsintegriteit is niet
overtreden.
B. Onjuist. De inhoud van de tabel is een toegestane inhoud. De entiteitsintegriteit is niet
overtreden.
16 van 30
Bekijk de volgende relaties:
REISGIDS (gidsnr, titel, ingangsdatum, einddatum)
DRUKORDER (bestelnr, <gidsnr>, datumbestelling, aantalbesteld, datumgeleverd)
Waarom is er uitgaande van de gegeven relaties sprake van referentiële integriteit?
A. Elk tupel van de relatie REISGIDS heeft een unieke waarde voor het attribuut gidsnr.
B. Het attribuut gidsnr in de relatie DRUKORDER is een vreemde sleutel. Hierdoor kan een
tupel alleen worden toegevoegd als in de relatie REISGIDS een tupel voorkomt met dezelfde
waarde van het attribuut gidsnr als dat van het toe te voegen tupel.
C. Omdat het attribuut gidsnr een vreemde sleutel is die in de relatie DRUKORDER geen
onderdeel van de primaire sleutel uitmaakt.
A. Onjuist. Deze uitspraak geeft entiteitsintegriteit aan en niet referentiële integriteit.
B. Juist. In relatie drukorder is de vreemde sleutel gidsnr. Het attribuut gidsnr in relatie
drukorder mag alleen waarden bevatten die overeen komen met waarden voor gidsnr in relatie
reisgids.
C. Onjuist. Referentiële integriteit bestaat ongeacht of en vreemde sleutel deel uitmaakt van
de primaire sleutel in de relatie waarin hij voorkomt.
© EXIN, DBSQLF
29/44
17 van 30
‘In een database kunnen gegevens met Data Control Language (DCL) worden gewijzigd en
toegevoegd.’
Is deze bewering juist?
A. ja
B. nee
A. Onjuist. Met DCL verlenen we gebruikers toegang tot gegevens (autorisatie), DML is er voor
het benaderen van de gegevens zelf.
B. Juist. Met DCL verlenen we gebruikers toegang tot gegevens (autorisatie), DML is er voor het
benaderen van de gegevens zelf.
18 van 30
Bekijk de volgende relaties uit een database:
KLANT (klantnr, naam, adres, woonpl, regio)
FACTUUR (factnr, datum, klantnr, bedrag, betaald)
Bekijk onderstaande opdracht:
SELECT naam, factnr
FROM klant, factuur
WHERE bedrag > 600
AND factuur.klantnr = klant.klantnr
Lees in dit verband onderstaande bewering:
‘De opdracht toont de namen van klanten en de nummers van aan hen gezonden facturen met
een bedrag van ten minste 600 euro.’
Is deze bewering juist?
A. ja
B. nee
A. Onjuist: 'ten minste' houdt in: 600 of groter, '> 600' is alleen maar groter dan 600.
B. Juist: 'ten minste' houdt in: 600 of groter, '> 600' is alleen maar groter dan 600.
© EXIN, DBSQLF
30/44
19 van 30
Bekijk onderstaande DCL-opdrachten:
GRANT SELECT ON TABLE activiteit TO Carla, Lies
GRANT INSERT, DELETE ON TABLE lid TO Carla
Gegeven twee DML-opdrachten.
1:
SELECT a-omschrijving
FROM activiteit
WHERE activiteitnummer = 27
2:
UPDATE lid
SET ingangsdatum = '2006-04-01'
WHERE naam = 'J. van Heumel'
Welke personen zijn gerechtigd beide DML-opdrachten door het DBMS te laten uitvoeren?
A. alleen Carla
B. alleen Lies
C. Carla en Lies
D. geen van beiden
A. Onjuist. Opdracht 1 mag worden uitgevoerd door Carla en Lies. Opdracht 2 mag worden
uitgevoerd door geen van beide (UPDATE ontbreekt in GRANT). Geen van beiden mogen dus
beide opdrachten uitvoeren.
B. Onjuist. Opdracht 1 mag worden uitgevoerd door Carla en Lies. Opdracht 2 mag worden
uitgevoerd door geen van beide (UPDATE ontbreekt in GRANT). Geen van beiden mogen dus
beide opdrachten uitvoeren.
C. Onjuist. Opdracht 1 mag worden uitgevoerd door Carla en Lies. Opdracht 2 mag worden
uitgevoerd door geen van beide (UPDATE ontbreekt in GRANT). Geen van beiden mogen dus
beide opdrachten uitvoeren.
D. Juist. Opdracht 1 mag worden uitgevoerd door Carla en Lies. Opdracht 2 mag worden
uitgevoerd door geen van beide (UPDATE ontbreekt in GRANT). Geen van beiden mogen dus
beide opdrachten uitvoeren.
© EXIN, DBSQLF
31/44
20 van 30
Aankoop
Klantnr
Datum
Bedrag
1
2005-01-20
100
2
2005-01-20
50
4
2005-02-04
30
3
2005-02-05
110
2
2005-03-30
70
4
2005-04-18
70
SELECT klantnr
FROM aankoop
GROUP BY klantnr
HAVING SUM (Bedrag) > 100
Welk resultaat wordt verkregen als de gegeven SELECT-opdracht op de gegeven tabel wordt
toegepast?
A. 1, 2, 3, 4
B. 1, 3
C. 2, 3
D. 3
A. Onjuist. Door middel van de gegeven SELECT-opdracht wil je de klantnr's selecteren die
ieder voor zich voor hun totale aankopen meer dan 100 hebben besteed. Klantnr. 1 heeft in
totaal 100 besteed, klantnr. 2 heeft in totaal 120 besteed, klantnr. 3 heeft 110 besteed en
klantnr. 4 heeft 100 besteed. De klantnr.'s die voldoen aan de voorwaarden zijn alleen klantnr.
2 en 3.
B. Onjuist. Door middel van de gegeven SELECT-opdracht wil je de klantnr's selecteren die
ieder voor zich voor hun totale aankopen meer dan 100 hebben besteed. Klantnr. 1 heeft in
totaal 100 besteed, klantnr. 2 heeft in totaal 120 besteed, klantnr. 3 heeft 110 besteed en
klantnr. 4 heeft 100 besteed. De klantnr.'s die voldoen aan de voorwaarden zijn alleen klantnr.
2 en 3.
C. Juist. Door middel van de gegeven SELECT-opdracht wil je de klantnr's selecteren die ieder
voor zich voor hun totale aankopen meer dan 100 hebben besteed. Klantnr. 1 heeft in totaal
100 besteed, klantnr. 2 heeft in totaal 120 besteed, klantnr. 3 heeft 110 besteed en klantnr. 4
heeft 100 besteed. De klantnr.'s die voldoen aan de voorwaarden zijn alleen klantnr. 2 en 3.
D. Onjuist. Door middel van de gegeven SELECT-opdracht wil je de klantnr's selecteren die
ieder voor zich voor hun totale aankopen meer dan 100 hebben besteed. Klantnr. 1 heeft in
totaal 100 besteed, klantnr. 2 heeft in totaal 120 besteed, klantnr. 3 heeft 110 besteed en
klantnr. 4 heeft 100 besteed. De klantnr.'s die voldoen aan de voorwaarden zijn alleen klantnr.
2 en 3.
© EXIN, DBSQLF
32/44
21 van 30
Bekijk de volgende relaties:
VESTIGING (vesnaam, branche, plaats)
WERKNEMER (w#, wnaam, afdeling, fnaam, salaris, <vesnaam>)
De volgende CREATE TABLE opdracht geeft een deel van de statements weer om de tabel
WERKNEMER te creëren op basis van de gegeven relaties.
CREATE TABLE werknemer (w# SMALLINT NOT NULL,
wnaam CHAR (8),
afdeling CHAR (12),
fnaam CHAR (12),
salaris DECIMAL (10),
vesnaam CHAR (10),
.....)
Wat moet op de plaats van de puntjes komen te staan op basis van bovenstaande gegevens?
A. PRIMARY KEY (vesnaam)
FOREIGN KEY (w#) REFERENCES vestiging
B. PRIMARY KEY (w#),
FOREIGN KEY (vesnaam) REFERENCES vestiging
C. PRIMARY KEY (w#),
FOREIGN KEY (w#) REFERENCES vestiging
D. PRIMARY KEY (w#,
FOREIGN KEY vesnaam) REFERENCES vestiging
A. Onjuist. De primaire sleutel van de tabel werknemer is w#. De vreemde sleutel is vesnaam.
B. Juist. De primaire sleutel van de tabel werknemer is w#. De vreemde sleutel is vesnaam.
C. Onjuist. De primaire sleutel van de tabel werknemer is w#. De vreemde sleutel is vesnaam.
D. Onjuist. De primaire sleutel van de tabel werknemer is w#. De vreemde sleutel is vesnaam.
Syntaxis is verkeerd.
© EXIN, DBSQLF
33/44
22 van 30
Teams
Teamnummer
Datum
Punten
T1
2006-01-01
3
T1
2006-01-01
8
T1
2006-02-06
1
T2
2006-01-01
5
T3
2006-02-06
7
Resultaat:
T1
T2
Welke SELECT opdracht heeft het gegeven resultaat?
A. SELECT DISTINCT Teamnummer
FROM Teams
B. SELECT DISTINCT Teamnummer
FROM Teams
WHERE datum = '2006-01-01'
C. SELECT Teamnummer
FROM Teams
WHERE datum = '2006-01-01'
D. SELECT Teamnummer
FROM Teams
WHERE datum = '2006-02-06'
A. Onjuist. Deze SELECT-opdracht heeft als resultaat alle verschillende teamnummers. Dit wil
zeggen T1, T2 en T3.
B. Juist. Deze SELECT-opdracht heeft als resultaat alle verschillende teamnummers waar bij
datum 2006-01-01 is ingevoerd.
C. Onjuist. Deze SELECT-opdracht heeft als resultaat alle teamnummers (ook de dubbele) waar
bij datum 2006-01-01 is ingevoerd. Dit wil zeggen T1, T1, T2.
D. Onjuist. Deze opdracht heeft T1 en T3 als resultaat.
© EXIN, DBSQLF
34/44
23 van 30
Drukorder
bestelnr gidsnr datumbestelling aantalbesteld
501
1038
2005-02-01
400
502
1038
2005-04-01
300
503
2038
2005-02-01
600
504
1038
2005-05-01
200
505
2038
2005-06-28
300
506
2038
2005-09-01
100
SELECT gidsnr, COUNT (aantalbesteld)
FROM drukorder
WHERE datumbestelling < '2005-07-01'
AND aantalbesteld > 200
GROUP BY gidsnr
Deze SQL-opdracht geeft het volgende resultaat:
Drukorder
gidsnr
count
(aantalbesteld)
1038
x
2038
y
Wat moet voor x en y worden ingevuld om het resultaat van de gegeven SQL-opdracht op de
gegeven tabel DRUKORDER weer te geven?
A. x=2 en y=2
B. x=3 en y=2
C. x=700 en y=900
D. x=900 en y=900
A. Juist.
B. Onjuist. In het resultaat zijn ook aantalbesteld = 200 meegenomen.
C. Onjuist. Deze uitkomst zou het geval zijn indien er SUM in plaats van COUNT was gebruikt.
D. Onjuist. Deze uitkomst zou het geval zijn indien er SUM in plaats van COUNT was gebruikt én
de voorwaarde 'aantal besteld > 200' beschreven was als 'aantal besteld > = 200'.
© EXIN, DBSQLF
35/44
24 van 30
Gegeven zijn de volgende relaties:
REISGIDS (gidsnr, titel, ingangsdatum, einddatum)
REISPRODUCT (productnr, soortproduct, <gidsnr>, omschrijving, bestemming, aantal dagen,
soortverblijf, soortvervoer, soortvermaak)
Men wil met de opdracht CREATE TABLE de tabel REISPRODUCT creëren.
De volgende onvolledige DDL-opdracht wordt hiervoor gebruikt:
CREATE TABLE reisproduct (
soortproduct CHAR(30) NOT NULL,
gidsnr INTEGER,
omschrijving CHAR(30),
bestemming CHAR(30),
aantaldagen INTEGER,
soortverblijf CHAR(20) NOT NULL,
soortvervoer CHAR(20) NOT NULL,
soortvermaak CHAR(20),
...
)
Hoe moet de DDL-opdracht worden aangevuld om de tabel REISPRODUCT correct te creëren?
A. productnr INTEGER NOT NULL,
FOREIGN KEY(productnr, gidsnr) REFERENCES reisgids
B. productnr INTEGER NOT NULL,
PRIMARY KEY(productnr),
FOREIGN KEY(gidsnr) REFERENCES reisgids
C. PRIMARY KEY(productnr INTEGER),
FOREIGN KEY(gidsnr) REFERENCES reisgids
A. Onjuist. Productnr is primaire sleutel en niet de vreemde sleutel. Vreemde sleutel is gidsnr.
B. Juist. Juiste syntaxis voor aangeven gegevenstype productnr: INTEGER en NOT NULL.
Productnr is primaire sleutel en vreemde sleutel is gidsnr.
C. Onjuist. Verkeerde syntaxis voor het weergeven van primaire sleutel en het weergeven
gegevenstype voor productnr.
© EXIN, DBSQLF
36/44
25 van 30
Bekijk het volgende relationele schema:
REISGIDS (gidsnr, titel, ingangsdatum, einddatum)
KLANT (klantnr, soortklant, naam, adres, postcode, woonplaats, telefoonnr, faxnr, emailadres,
contactpersoon)
GIDSAANVRAAG (<klantnr>, <gidsnr>, datumaanvraag, aantalgevraagd, datumverzending,
aantalverzonden)
De systeembeheerder wil de tabel GIDSAANVRAAG schonen. Hij wil met behulp van een SQLopdracht alle rijen, waarvan het aantal aangevraagd gelijk is aan het aantal verzonden, uit de
tabel verwijderen.
Welke SQL-opdracht levert het gewenste resultaat?
A. DELETE FROM gidsaanvraag
WHERE aantalgevraagd = aantalverzonden
B. DELETE FROM gidsaanvraag
WHERE klantnr IN
(SELECT klantnr
FROM gidsaanvraag
WHERE aantalgevraagd = aantalverzonden)
C. DELETE FROM gidsaanvraag
WHERE gidsnr IN
(SELECT gidsnr
FROM gidsaanvraag
WHERE aantalgevraagd = aantalverzonden)
A. Juist.
B. Onjuist. Door deze opdracht worden eerst de klanten geselecteerd waarvoor geldt dat
aantalgevraagd gelijk is aan aantalverzonden. Vervolgens worden alle tupels van de
geselecteerde klanten uit gidsaanvraag verwijderd. Hierin kunnen ook tupels zitten waar
aantalgevraagd niet gelijk is aan aantalverzonden.
C. Onjuist. Door deze opdracht worden eerst de gidsnr's geselecteerd waarvoor geldt dat
aantalgevraagd gelijk is aan aantalverzonden. Vervolgens worden alle tupels van de
geselecteerde gidsnr's uit gidsaanvraag verwijderd. Hierin kunnen ook tupels zitten waar
aantalgevraagd niet gelijk is aan aantalverzonden.
© EXIN, DBSQLF
37/44
26 van 30
Bekijk onderstaande tabel TARIEF:
Tarief
typehandeling
bedrag
controle
32
eenvlaksvulling
37
tweevlaksvulling
50
wortelkanaal
85
Bij de overgang naar de euro moest in de tabel TARIEF elk bedrag worden gedeeld door 2.2.
Welke SQL-query leidt tot het gewenste resultaat?
A. INSERT INTO bedrag
VALUES ((32/2.2), (37/2.2), (50/2.2), (85/2.2))
B. INSERT INTO tarief
VALUES ((32/2.2), (37/2.2), (50/2.2), (85/2.2))
C. UPDATE bedrag
SET bedrag = bedrag/2.2
D. UPDATE tarief
SET bedrag = bedrag/2.2
A. Onjuist. De tabel tarief moet doormiddel van een opdracht UPDATE tarief worden aangepast.
Een INSERT opdracht voegt alleen rijen toe en brengt geen wijzigingen in de bestaande rijen
aan.
B. Onjuist. De tabel tarief moet doormiddel van een opdracht UPDATE tarief worden aangepast.
Een INSERT opdracht voegt alleen rijen toe en brengt geen wijzigingen in de bestaande rijen
aan.
C. Onjuist. De tabel tarief moet doormiddel van een opdracht UPDATE op de tabel tarief worden
aangepast. Bedrag is niet de naam van deze tabel.
D. Juist. De tabel tarief moet doormiddel van de opdracht UPDATE tarief worden aangepast.
Doormiddel van SET bedrag = bedrag/2.2 worden alle bedragen door 2.2 gedeeld.
© EXIN, DBSQLF
38/44
27 van 30
Bekijk de volgende GRANT-opdracht:
GRANT ALTER ON werknemer TO Piet
Wat mag Piet volgens de GRANT-opdracht doen?
A. nieuwe kolommen aan de tabel WERKNEMER toevoegen
B. rijen aan de tabel WERKNEMER toevoegen
C. waarden in rijen in de tabel WERKNEMER wijzigen
A. Juist. De GRANT-opdracht geeft toestemming aan Piet om kolommen toe te voegen. Om rijen
te mogen toevoegen wordt GRANT INSERT...... gebruikt. Om waarden in rijen te mogen wijzigen
wordt GRANT UPDATE ....... gebruikt.
B. Onjuist. De GRANT-opdracht geeft toestemming aan Piet om kolommen toe te voegen. Om
rijen te mogen toevoegen wordt GRANT INSERT...... gebruikt. Om waarden in rijen te mogen
wijzigen wordt GRANT UPDATE ....... gebruikt.
C. Onjuist. De GRANT-opdracht geeft toestemming aan Piet om kolommen toe te voegen. Om
rijen te mogen toevoegen wordt GRANT INSERT...... gebruikt. Om waarden in rijen te mogen
wijzigen wordt GRANT UPDATE ....... gebruikt.
© EXIN, DBSQLF
39/44
28 van 30
SELECT klas
FROM klas
WHERE leerlingaantal < 14
AND klas IN
(SELECT klas
FROM vak
GROUP BY klas
HAVING (SUM) lesaantal = 5)
Wat is het resultaat als de gegeven SELECT-opdracht op de gegeven tabellen wordt toegepast?
A. 1B
2B
2C
B. 1B
2B
2C
3A
C. 1B
2C
D. 1B
2C
3A
© EXIN, DBSQLF
40/44
A. Onjuist. In de WHERE wordt de voorwaarde gesteld dat de klassen minder leerlingen dan 14
moeten hebben. Alleen klas 1B, 2B en 2C voldoen aan deze voorwaarde. In de subquery
worden alle klassen geselecteerd die na groepering een opgeteld aantal lesuren hebben van 5.
Alleen klas 1B, 2C, 3A voldoen hieraan. De klassen die uiteindelijk worden geselecteerd
moeten aan beide voorwaarden voldoen. Alleen klas 1B en 2C voldoen aan de voorwaarden.
B. Onjuist. In de WHERE wordt de voorwaarde gesteld dat de klassen minder leerlingen dan 14
moeten hebben. Alleen klas 1B, 2B en 2C voldoen aan deze voorwaarde. In de subquery
worden alle klassen geselecteerd die na groepering een opgeteld aantal lesuren hebben van 5.
Alleen klas 1B, 2C, 3A voldoen hieraan. De klassen die uiteindelijk worden geselecteerd
moeten aan beide voorwaarden voldoen. Alleen klas 1B en 2C voldoen aan de voorwaarden.
C. Juist. In de WHERE wordt de voorwaarde gesteld dat de klassen minder leerlingen dan 14
moeten hebben. Alleen klas 1B, 2B en 2C voldoen aan deze voorwaarde. In de subquery
worden alle klassen geselecteerd die na groepering een opgeteld aantal lesuren hebben van 5.
Alleen klas 1B, 2C, 3A voldoen hieraan. De klassen die uiteindelijk worden geselecteerd
moeten aan beide voorwaarden voldoen. Alleen klas 1B en 2C voldoen aan de voorwaarden.
D. Onjuist. In de WHERE wordt de voorwaarde gesteld dat de klassen minder leerlingen dan 14
moeten hebben. Alleen klas 1B, 2B en 2C voldoen aan deze voorwaarde. In de subquery
worden alle klassen geselecteerd die na groepering een opgeteld aantal lesuren hebben van 5.
Alleen klas 1B, 2C, 3A voldoen hieraan. De klassen die uiteindelijk worden geselecteerd
moeten aan beide voorwaarden voldoen. Alleen klas 1B en 2C voldoen aan de voorwaarden.
© EXIN, DBSQLF
41/44
29 van 30
Kookboek
kookboek
recept
calorieën
Lekker Wokken Hete kip
400
Lekker Wokken Roerbak
300
Pasta en zo
Macaroni Napoli
600
Pasta en zo
Pesto
200
Pasta en zo
Lasagne
400
Ovenschotels
Lasagne
500
Lees de volgende informatiebehoefte:
Geef alle gegevens van recepten waarvoor geldt dat het recept in vergelijking met de andere
recepten in hetzelfde kookboek het maximaal aantal calorieën bevat.
Gegeven is de volgende SELECT opdracht:
SELECT *
FROM kookboek
WHERE calorieën =
(SELECT MAX (calorieën)
FROM kookboek
GROUP BY kookboek)
Kan door middel van de SELECT-opdracht de gevraagde informatie worden verkregen?
A. ja
B. nee
A. Onjuist. De subquery levert drie waarden op, namelijk 400, 600 en 500. Als
vergelijkingsoperator kunnen we dan geen = gebruiken. Bovendien vergelijk je zo het aantal
calorieën zo met het maximum uit andere kookboeken wat in strijd is met de probleemstelling.
B. Juist. Er moet gebruik gemaakt worden van een gecorreleerde subquery. Een juiste SELECTopdracht is:
SELECT *
FROM kookboek A
WHERE calorieën =
(SELECT MAX (calorieën)
FROM kookboek
WHERE kookboek = A.kookboek)
De voorwaarde 'kookboek = A.kookboek' zorgt er voor dat het maximum alleen van het eigen
kookboek wordt bepaald.
© EXIN, DBSQLF
42/44
30 van 30
Bekijk de volgende tabel en informatiebehoefte:
Circuit
loper
datum
plaats punten
1
2005-01-01
1
100
2
2005-02-01
2
150
1
2005-02-01
1
200
3
2005-02-01
3
50
2
2005-04-01
1
300
Geef van de lopers die op plaats 1 hebben gestaan het aantal keren dat ze op plaats 1 hebben
gestaan.
Om de informatie te verkrijgen wordt gebruik gemaakt van de volgende SELECT-opdracht:
SELECT loper, count(*)
FROM circuit
GROUP BY loper
HAVING plaats = 1
Is de gegeven SELECT-opdracht juist?
A. ja
B. nee
A. Onjuist. Een voorwaarde gesteld in een WHERE clausule wordt op een rij uitgevoerd. Een
voorwaarde gesteld in de HAVING clausule wordt uitgevoerd per groep.
Een juiste SELECT-opdracht is:
SELECT loper, count(*)
FROM circuit
WHERE plaats = 1
GROUP BY loper
Door de WHERE clausule krijg je alle rijen met lopers op plaats 1. Deze lopers worden per loper
gegroepeerd, waarna het aantal rijen per groep geteld kan worden.
B. Juist. Een voorwaarde gesteld in een WHERE clausule wordt op een rij uitgevoerd. Een
voorwaarde gesteld in de HAVING clausule wordt uitgevoerd per groep.
Een juiste SELECT-opdracht is:
SELECT loper, count(*)
FROM circuit
WHERE plaats = 1
GROUP BY loper
Door de WHERE clausule krijg je alle rijen met lopers op plaats 1. Deze lopers worden per loper
gegroepeerd, waarna het aantal rijen per groep geteld kan worden.
© EXIN, DBSQLF
43/44
Beoordeling
Het maximaal te behalen punten voor dit examen is 30.
Bij het behalen van 20 punten of meer bent u geslaagd. In alle andere gevallen bent u gezakt.
In onderstaande tabel wordt bij het aantal punten het bijbehorende cijfer gegeven.
gezakt
behaalde aantal
punten
0-8
9 - 11
12 - 14
15 - 16
17 - 19
© EXIN, DBSQLF
cijfer
1
2
3
4
5
geslaagd
behaalde aantal
punten
20 – 22
23 – 24
25 – 27
28 – 29
30
cijfer
6
7
8
9
10
44/44
Download