1. Geef code en omschrijving van alle cursussen die precies vier dagen duren.

Maat: px
Weergave met pagina beginnen:

Download "1. Geef code en omschrijving van alle cursussen die precies vier dagen duren."

Transcriptie

1 Antwoorden Deze bijlage geeft de antwoorden van de opgaven waarmee de hoofdstukken 4, 5, 7, 8, 9, en 10 zijn afgesloten. Waar dat van toepassing is geven we alternatieve oplossingen aan, evenals waarschuwingen voor mogelijke fouten. Het is ondoenlijk om per opgave alle goede oplossingen op te nemen; de mogelijkheden van de taal SQL zijn daartoe te uitgebreid. Dit betekent dat het heel goed mogelijk is dat bepaalde opgaven op een volstrekt andere manier worden aangepakt en opgelost. Vergelijking van de resultaattabellen is dan een mogelijkheid om de correctheid te controleren. Pas echter op: als een query het goede resultaat geeft, wil dat nog niet zeggen dat de query correct geformuleerd is: foute oplossingen kunnen - per ongeluk - de juiste rijen opleveren. Dit zijn de meest verraderlijke queries, omdat ze op een onverwacht moment verkeerde oplossingen kunnen produceren. De opgaven zijn hier en daar beslist moeilijk. We gebruiken als het motto dat u zelf voldoende eenvoudige opdrachten kunt verzinnen om uw kennis te testen. Van een paar opgaven is het begrijpen van de gegeven oplossing al een hele prestatie. Antwoorden opgaven paragraaf Geef code en omschrijving van alle cursussen die precies vier dagen duren. select code, omschrijving 2 from cursussen 3 where lengte = 4; CODE OMSCHRIJVING S02 Introductiecursus SQL JAV Java voor Oracle ontwikkelaars GEN Systeemgeneratie 2. Geef alle medewerkers, alfabetisch gesorteerd op functie, en per functie op leeftijd (van jong naar oud). select * 2 from medewerkers 3 order by functie, gbdatum desc; MNR NAAM VOORL FUNCTIE CHEF GBDATUM MAANDSAL COMM AFD JANSEN R BOEKHOUDER DEC MOLENAAR TJA BOEKHOUDER JAN DE KONING CC DIRECTEUR 17-NOV JANSEN JM MANAGER APR CLERCKX AB MANAGER JUN BLAAK R MANAGER NOV ADAMS AA TRAINER DEC SMIT N TRAINER DEC SCHOTTEN SCJ TRAINER NOV SPIJKER MG TRAINER FEB DEN DRAAIER JJ VERKOPER SEP DE WAARD TF VERKOPER FEB ALDERS JAM VERKOPER FEB Academic Service, Den Haag 1

2 7654 MARTENS P VERKOPER SEP Welke cursussen zijn in Utrecht en/of in Maastricht uitgevoerd? select cursus 2 from uitvoeringen 3 where locatie in ('UTRECHT','MAASTRICHT'); CURSUS OAG S02 JAV XML RSO 4. Welke medewerkers hebben zowel de Java als de XML cursus gevolgd? Geef hun nummers. select cursist 2 from inschrijvingen 3 where cursus = 'JAV' 4 and cursist in (select cursist 5 from inschrijvingen 6 where cursus = 'XML'); CURSIST NB: Er zijn diverse oplossingen mogelijk, bijvoorbeeld met twee subqueries. Duidelijk moge zijn dat een oplossing met AND of OR op rijniveau fout is! 5. Geef de naam en voorletters van alle medewerkers, behalve van R. Jansen. select naam, voorl 2 from medewerkers 3 where not (naam = 'JANSEN' and voorl = 'R'); NAAM VOORL SMIT N ALDERS JAM DE WAARD TF JANSEN JM MARTENS P BLAAK R CLERCKX AB SCHOTTEN SCJ DE KONING CC DEN DRAAIER JJ ADAMS AA SPIJKER MG MOLENAAR TJA Academic Service, Den Haag 2

3 Alternatief zonder haakjes (let op: met OR): select naam, voorl 2 from medewerkers 3 where naam <> 'JANSEN' or voorl <> 'R'; 6. Geef nummer, functie, en geboortedatum van alle medewerkers die vóór 1960 geboren zijn, en trainer of verkoper zijn. select mnr, functie, gbdatum 2 from medewerkers 3 where gbdatum < to_date('01-jan-1960','dd-mon-yyyy') 4 and functie in ('TRAINER','VERKOPER'); MNR FUNCTIE GBDATUM VERKOPER 28-SEP TRAINER 26-NOV TRAINER 13-FEB-1959 Alternatief (let op de haakjes voor de precedentie): select mnr, functie, gbdatum 2 from medewerkers 3 where gbdatum < to_date('01-jan-1960','dd-mon-yyyy') 4 and (functie = 'TRAINER' or functie = 'VERKOPER'); 7. Geef de nummers van alle medewerkers die niet aan de afdeling opleidingen zijn verbonden. select mnr 2 from medewerkers 3 where afd <> (select anr 4 from afdelingen 5 where naam = 'OPLEIDINGEN'); MNR Geef de nummers van alle medewerkers die de Java cursus niet hebben gevolgd. select mnr 2 from medewerkers 3 where mnr not in (select cursist 4 from inschrijvingen 5 where cursus = 'JAV'); Academic Service, Den Haag 3

4 MNR Let op: De volgende twee oplossingen zijn FOUT: select distinct cursist 2 from inschrijvingen 3 where cursist not in (select cursist 4 from inschrijvingen 5 where cursus = 'JAV'); CURSIST select distinct cursist 2 from inschrijvingen 3 where cursus <> 'JAV'; CURSIST Welke medewerkers hebben voorvoegsels in hun naam? select mnr, naam, voorl 2 from medewerkers 3 where naam like '% %'; MNR NAAM VOORL DE WAARD TF 7839 DE KONING CC 7844 DEN DRAAIER JJ Academic Service, Den Haag 4

5 10a. Welke medewerkers hebben ondergeschikten? select mnr, naam, voorl 2 from medewerkers 3 where mnr in (select chef 4 from medewerkers); MNR NAAM VOORL JANSEN JM 7698 BLAAK R 7782 CLERCKX AB 7788 SCHOTTEN SCJ 7839 DE KONING CC 7902 SPIJKER MG 10b. En welke niet? select mnr, naam, voorl 2 from medewerkers 3 where mnr not in (select chef 4 from medewerkers 5 where chef is not null); MNR NAAM VOORL SMIT N 7499 ALDERS JAM 7521 DE WAARD TF 7654 MARTENS P 7844 DEN DRAAIER JJ 7876 ADAMS AA 7900 JANSEN R 7934 MOLENAAR TJA 8 rows selected. NB: Let op de laatste WHERE-component; die is beslist nodig! 11. Geef een overzicht van alle uitvoeringen van algemene cursussen (type ALG) in select * 2 from uitvoeringen 3 where begindatum between date ' ' 4 and date ' ' 5 and cursus in (select code 6 from cursussen 7 where type = 'ALG'); CURSUS BEGINDATUM DOCENT LOCATIE OAG 10-AUG UTRECHT S02 12-APR DE MEERN S02 04-OCT MAASTRICHT S02 13-DEC DE MEERN Academic Service, Den Haag 5

6 Het jaar 1999 kan ook op een aantal andere manieren worden opgelost door gebruik te maken van functies, die in hoofdstuk 5 aan de orde komen. where to_char(begindatum,'yyyy') = '1999' where extract(year from begindatum) = 1999 where begindatum between to_date('01-jan-1999','dd-mon-yyyy') and to_date('31-dec-1999','dd-mon-yyyy') 12. Geef naam en voorletters van iedereen die ooit bij N. Smit een cursus heeft gevolgd. Aanwijzing: gebruik sub-queries, en werk vervolgens van binnen naar buiten. Dus: bepaal het nummer van N. Smit, zoek dan naar de cursussen die hij heeft gegeven, enzovoorts. select naam, voorl 2 from medewerkers 3 where mnr in 4 (select cursist 5 from inschrijvingen 6 where (cursus,begindatum) in 7 (select cursus,begindatum 8 from uitvoeringen 9 where docent = 10 (select mnr 11 from medewerkers 12 where naam = 'SMIT' 13 and voorl = 'N' 14 ) 15 ) 16 ); NAAM VOORL ALDERS JAM BLAAK R SCHOTTEN SCJ DE KONING CC JANSEN R SPIJKER MG 13. Wat is de verklaring van het resultaat 'no rows selected' in figuur 4.41? De WHERE-component: 2 where evaluatie not in (1,2,3,NULL) is equivalent met: 2 where evaluatie <> 1 3 AND evaluatie <> 2 4 AND evaluatie <> 3 5 AND evaluatie <> NULL Als we nu een rij hebben met een evaluatie-waarde van 1, 2, of 3 dat is het vrij duidelijk dat één van de eerste drie condities 'onwaar' oplevert, en daarmee levert de WHERE-component als geheel 'onwaar' op. Als de evaluatie-waarde een null-waarde bevat, dan resulteren alle vier de voorwaarden in 'onbekend' en daarmee wordt het eindresultaat ook 'onbekend'. Tot zover geen verrassingen. Academic Service, Den Haag 6

7 Als de evaluatie-waarde 4 of 5 is (de andere twee toegestane waarden) dan zijn de eerste drie condities alledrie waar, maar levert de laatste conditie 'onbekend' op. De laatste conditie is dus de spelbreker, waardoor het eindresultaat 'onbekend' wordt. waar AND waar AND waar AND onbekend <=> onbekend Antwoorden opgaven paragraaf Geef van alle medewerkers eerst de achternaam, dan een komma, gevolgd door de voorletter(s) en voorvoegsels. select substr(naam,instr(naam,' ')+1) 2 ', ' voorl ' ' 3 substr(naam,1,instr(naam,' ')-1) 4 as naam 5 from medewerkers; NAAM SMIT, N ALDERS, JAM WAARD, TF DE JANSEN, JM MARTENS, P BLAAK, R CLERCKX, AB SCHOTTEN, SCJ KONING, CC DE DRAAIER, JJ DEN ADAMS, AA JANSEN, R SPIJKER, MG MOLENAAR, TJA 2. Geef van alle medewerkers hun naam en de geboortedatum, in het formaat zoals bijvoorbeeld 11 April select naam 2, to_char(gbdatum,'dd Month yyyy') 3 from medewerkers; NAAM TO_CHAR(GBDATUM,'DDMONTHYYYY') SMIT 17 December 1965 ALDERS 20 Februari 1961 DE WAARD 22 Februari 1962 JANSEN 02 April 1967 MARTENS 28 September 1956 BLAAK 01 November 1963 CLERCKX 09 Juni 1965 SCHOTTEN 26 November 1959 DE KONING 17 November 1952 DEN DRAAIER 28 September 1968 ADAMS 30 December 1966 JANSEN 03 December 1969 SPIJKER 13 Februari 1959 MOLENAAR 23 Januari 1962 Academic Service, Den Haag 7

8 NB: We kunnen de taal waarin de maandnamen in het resultaat worden weergegeven als volgt veranderen in het Nederlands: alter session set nls_language=dutch; Session altered. 3a. Op welke dag ben (of was!) je precies dagen oud? select to_date('11-aug-1954','dd-mon-yyyy') as "10000 dagen" 3 from dual; dagen DEC-1981 We kunnen in plaats van de TO_DATE-functie ook gebruik maken van een DATE-constante: select date ' ' as "10000 dagen" 3 from dual; dagen DEC b. Op welke dag van de week valt/viel dat? select to_char(to_date('11-aug-1954','dd-mon-yyyy')+10000,'day') 2 as "op een:" 3 from dual; op een: zondag Ook hier zouden we op dezelfde wijze gebruik kunnen maken van een DATE-constante. 4. Herschrijf het voorbeeld in figuur 5.24 met gebruikmaking van de NVL2-functie. select naam, maandsal, comm 2, nvl2(comm,12*maandsal+comm,12*maandsal) as jaarsal 3 from medewerkers 4 where naam like '%T%'; NAAM MAANDSAL COMM JAARSAL SMIT MARTENS Academic Service, Den Haag 8

9 SCHOTTEN Herschrijf het voorbeeld in figuur 5.25 met gebruikmaking van CASE-expressies, zowel in de SELECT-component als in de ORDER BY-component. select functie, naam 2, case 3 when maandsal <= then 'goedkoop' 5 else 'duur' 6 end as klasse 7 from medewerkers 8 where gbdatum < date ' ' 9 order by case functie 10 when 'DIRECTEUR' then 1 11 when 'MANAGER' then 2 12 else 3 13 end; FUNCTIE NAAM KLASSE DIRECTEUR DE KONING duur MANAGER BLAAK duur VERKOPER ALDERS goedkoop VERKOPER DE WAARD goedkoop BOEKHOUDER MOLENAAR goedkoop TRAINER SPIJKER duur TRAINER SCHOTTEN duur VERKOPER MARTENS goedkoop Merk op dat we (ongevraagd) ook de TO_DATE-functie hebben vervangen door een DATE-constante. 6. Herschrijf het voorbeeld in figuur 5.21 met gebruikmaking van DATE en INTERVAL constantes, zodat ze onafhankelijk worden van de NLS_DATE_FORMAT instelling. select date ' ' + interval '1' month as kolom1 2, date ' ' + interval '1' month as kolom2 3, date ' ' - interval '3' month as kolom3 4 from dual;, date ' ' + interval '1' month as kolom2 * ERROR at line 2: ORA-01839: date not valid for month specified c/29/28 2*, date ' ' + interval '1' month as kolom2 / KOLOM1 KOLOM2 KOLOM FEB FEB MAY-1997 Hieruit blijkt dat 29 januari tijdens een niet-schrikkeljaar problemen oplevert; als we 29 in 28 veranderen gaat het goed. Academic Service, Den Haag 9

10 7. Onderzoek het verschil tussen de datum-formaten WW en IW (weeknummer en ISO weeknummer) aan de hand van een willekeurige datum, en verklaar het eventuele verschil. select sysdate 2, to_char(sysdate, 'ww') as ww 3, to_char(sysdate, 'iw') as iw 4 from dual; SYSDATE WW IW FEB Het verschil heeft te maken met de manier waarop het weeknummer is gedefinieerd. Het formaat WW laat de eerste week van het jaar altijd op 1 januari beginnen, ongeacht op welke dag van de week dat valt. De ISO standaard hanteert andere regels. Een ISO week begint altijd op een maandag, en rond de jaarwisseling zijn de regels als volgt: Als 1 januari op een vrijdag, zaterdag, of zondag valt dan behoort de week nog tot het vorige jaar, en anders tot het nieuwe jaar. Antwoorden opgaven paragraaf In figuur 7.10 wordt de constraint M_VERK_CHK op een nogal cryptische manier gedefinieerd. Formuleer dezelfde constraint zonder DECODE en NVL2 te gebruiken. Hier volgen twee mogelijkheden: check ((functie = 'VERKOPER' and comm is not null) or (functie <>'VERKOPER' and comm is null) ) check ((functie = 'VERKOPER' or comm is null) and not (functie = 'VERKOPER' and comm is null) ) 2 Waarom zou de constraint in figuur 7.12 met een apart ALTER TABLE commando moeten worden gedefinieerd? De constraint moet met ALTER TABLE worden gedefinieerd vanwege een kip-ei probleem: een refererende sleutel moet altijd naar een bestaande tabel verwijzen, en er is hier sprake van twee tabellen (MEDEWERKERS en AFDELINGEN) die naar elkaar verwijzen. 3 Het is weliswaar niet behandeld, maar beredeneer waarom bij het gebruik van sequences de pseudo-kolom CURRVAL in een transactie niet kan worden gebruikt zonder eerst een beroep te doen op NEXTVAL. In een multi-user omgeving kunnen diverse database-gebruikers tegelijkertijd gebruik maken van sequences, dus tegelijkertijd met verschillende waarden voor CURRVAL aan het werk zijn; er is dus geen eenduidige globale waarde voor CURRVAL. NEXTVAL is daarentegen op ieder moment gedefinieerd als de volgende sequence-waarde om uit te delen. 4 Hoe komt het dat de kolom evaluatie van de tabel inschrijvingen null-waarden accepteert, ondanks de constraint I_EVAL_CHK (zie figuur 7.16)? Dat komt door de driewaardige logica; een CHECK-conditie kan als resultaat waar, onwaar of onbekend opleveren. Een constraint wordt pas geschonden als de conditie onwaar oplevert. Dit betekent dat voor een verplichte kolom altijd expliciet een NOT NULL-constraint moet worden toegevoegd. Academic Service, Den Haag 10

11 5 Als een PRIMARY KEY of UNIQUE constraint wordt gedefinieerd, creëert Oracle normaal gesproken impliciet een unieke index om de constraint te kunnen bewaken. Onderzoek wat er gebeurt als een dergelijke constraint DEFERRABLE wordt gedefinieerd. Als PRIMARY KEY of UNIQUE constraints DEFERRABLE worden gedefinieerd, creëert Oracle nietunieke indexen. Indexen moeten namelijk onmiddellijk worden bijgewerkt, zodat tijdens een transactie tijdelijk dubbele waarden in de index moeten kunnen optreden. 6 Met behulp van functie-gebaseerde indexen kunnen we "conditionele uniciteit" implementeren. Maak een unieke index op de INSCHRIJVINGEN-tabel die er voor zorgt dat de OAG-cursus maar één keer mag worden gevolgd. create unique index oag_inschr on inschrijvingen 2 ( case cursus when 'OAG' then cursist else null end 3, case cursus when 'OAG' then cursus else null end ); Index created. De truc is om een index te bouwen op combinaties (cursist, cursus) waarbij we alle niet-oag inschrijvingen negeren. Test de oplossing met het volgende commando (dat zou moeten falen): insert into inschrijvingen values (7900,'OAG',sysdate,null); insert into inschrijvingen values (7900,'OAG',sysdate,null) * ERROR at line 1: ORA-00001: unique constraint (BOEK.OAG_INSCHR) violated Antwoorden opgaven paragraaf Produceer een overzicht van alle cursusuitvoeringen; geef de cursuscode, de begindatum, de cursuslengte, en de naam van de docent. select c.code 2, u.begindatum 3, c.lengte 4, m.naam as docent 5 from medewerkers m 6, cursussen c 7, uitvoeringen u 8 where u.docent = m.mnr 9 and u.cursus = c.code; CODE BEGINDATUM LENGTE DOCENT XML 03-FEB SMIT S02 13-DEC SMIT S02 04-OKT SMIT OAG 10-AUG JANSEN JAV 13-DEC JANSEN RSO 24-FEB SCHOTTEN PLS 11-SEP SCHOTTEN JAV 01-FEB ADAMS S02 12-APR SPIJKER OAG 27-SEP SPIJKER Academic Service, Den Haag 11

12 NB: Als we ook de cursusuitvoeringen willen zien met onbekende docent, kunnen we deze oplossing als volgt aanpassen: select DISTINCT c.code 2, u.begindatum 3, c.lengte 4, case when u.docent is not null 5 then m.naam 6 else null 7 end as docent 8 from medewerkers m 9, cursussen c 10, uitvoeringen u 11 where coalesce(u.docent,-1) in (m.mnr,-1) 12 and u.cursus = c.code; CODE BEGINDATUM LENGTE DOCENT ERM 15-JAN JAV 13-DEC JANSEN JAV 01-FEB ADAMS OAG 10-AUG JANSEN OAG 27-SEP SPIJKER PLS 11-SEP SCHOTTEN PRO 19-FEB RSO 24-FEB SCHOTTEN S02 12-APR SPIJKER S02 04-OKT SMIT S02 13-DEC SMIT XML 03-FEB SMIT XML 18-SEP Regel 11 is misschien op het eerste oog niet zo duidelijk; het maakt de join tussen UITVOERINGEN en MEDEWERKERS iets soepeler. We kunnen in plaats van 1 ook een willekeurig ander getal gebruiken, mits het geen bestaand medewerkernummer kan zijn. Merk ook op dat dit de toevoeging van DISTINCT noodzakelijk maakt. 2 Geef in twee kolommen naast elkaar de naam van elke cursist die een S02 cursus heeft gevolgd, met de naam van de docent. De onderstaande oplossing gebruikt de ANSI/ISO join syntax, voor de variatie: select m.naam as deelnemer 2, d.naam as docent 3 from medewerkers d 4 join 5 uitvoeringen u on (u.docent = d.mnr) 6 join 7 inschrijvingen i using (cursus, begindatum) 8 join 9 medewerkers m on (i.cursist = m.mnr) 10 where cursus = 'S02'; DEELNEMER DOCENT ALDERS SPIJKER BLAAK SPIJKER Academic Service, Den Haag 12

13 ADAMS MOLENAAR SCHOTTEN DE KONING SPIJKER BLAAK SPIJKER SPIJKER SPIJKER SMIT SMIT SMIT SMIT SMIT 3 Geef van iedere medewerker: naam, voorletters, en het jaarsalaris (inclusief toelage en commissie). select m.naam, m.voorl 2, 12 * (m.maandsal + s.toelage) 3 + nvl(m.comm,0) as jaarsalaris 4 from medewerkers m 5 join 6 schalen s 7 on (m.maandsal 8 between s.ondergrens 9 and s.bovengrens); NAAM VOORL JAARSALARIS SMIT N 9600 JANSEN R 9600 ADAMS AA DE WAARD TF MARTENS P MOLENAAR TJA DEN DRAAIER JJ ALDERS JAM CLERCKX AB BLAAK R JANSEN JM SCHOTTEN SCJ SPIJKER MG DE KONING CC Geef van alle cursusuitvoeringen: de cursuscode, de begindatum, en het aantal inschrijvingen. Sorteer op begindatum. select cursus 2, begindatum 3, count(i.cursist) as inschrijvingen 4 from uitvoeringen u 5 left outer join 6 inschrijvingen i 7 using(cursus, begindatum) 8 group by cursus 9, begindatum 10 order by begindatum; CURS BEGINDATUM INSCHRIJVINGEN S02 12-APR OAG 10-AUG Academic Service, Den Haag 13

14 S02 04-OCT JAV 13-DEC S02 13-DEC JAV 01-FEB XML 03-FEB PLS 11-SEP XML 18-SEP OAG 27-SEP ERM 15-JAN PRO 19-FEB RSO 24-FEB rows selected. NB: We hebben hier de outerjoin nodig om ook cursussen zonder inschrijvingen in het resultaat te krijgen. Denk er ook aan dat COUNT(*) op de derde regel het verkeerde resultaat zou opleveren! 5 Geef nu code, begindatum, en aantal inschrijvingen van alle cursusuitvoeringen in 1999 met minstens drie inschrijvingen. select cursus 2, begindatum 3, count(*) 4 from inschrijvingen 5 where extract(year from begindatum) = group by cursus 7, begindatum 8 having count(*) >= 3; CURSUS BEGINDATUM COUNT(*) JAV 13-DEC OAG 10-AUG S02 12-APR S02 04-OKT Omdat we toch niet geïnteresseerd zijn in uitvoeringen zonder deelnemers, kunnen we volstaan met de inschrijvingentabel. Dat zou anders zijn geweest als de vraag was geweest... met minder dan drie inschrijvingen ; nul is immers ook minder dan drie. 6 Geef de nummers van alle medewerkers die wèl ooit een cursus als docent hebben gegeven, maar nog nooit een cursus hebben gevolgd. select docent from uitvoeringen 2 minus 3 select cursist from inschrijvingen; DOCENT Deze oplossing lijkt goed te zijn, maar ziet er voor een geoefend oog verdacht uit. Het resultaat bestaat namelijk niet uit een, maar uit twee rijen: set feedback 1 Academic Service, Den Haag 14

15 / DOCENT rows selected. We zouden dus expliciet null-waarden in de DOCENT-kolom ook nog moeten uitsluiten: select docent from uitvoeringen 2 where docent is not null 3 minus 4 select cursist from inschrijvingen; DOCENT Welke medewerkers hebben een bepaalde cursus meer dan één keer gevolgd? select cursist,cursus 2 from inschrijvingen 3 group by cursist,cursus 4 having count(*) > 1 ; CURSIST CURSUS S JAV 7902 S02 8 Geef van alle docenten: naam en voorletters, het aantal cursussen dat ze hebben gegeven, het totale aantal cursisten dat ze hebben opgeleid, en het gemiddelde evaluatiecijfer. Rond deze berekening af op één decimaal. select d.voorl, d.naam 2, count(distinct begindatum) cursussen 3, count(*) cursisten 4, round(avg(evaluatie),1) evaluatie 5 from medewerkers d 6, inschrijvingen i 7 join 8 uitvoeringen u 9 using(cursus, begindatum) 10 where d.mnr = u.docent 11 group by d.voorl, d.naam; VOORL NAAM CURSUSSEN CURSISTEN EVALUATIE N SMIT AA ADAMS JM JANSEN Academic Service, Den Haag 15

16 MG SPIJKER SCJ SCHOTTEN 1 3 NB: We gaan bij het tellen van de cursussen uit van de veronderstelling dat een docent nooit op dezelfde dag twee cursussen kan geven. 9 Geef naam en voorletters van alle trainers die ooit tijdens een algemene cursus (type ALG) hun eigen chef als cursist hebben gehad. select distinct 2 m.naam, m.voorl 3 from medewerkers m 4, cursussen c 5, uitvoeringen u 6, inschrijvingen i 7 where m.mnr = u.docent 8 and m.chef = i.cursist 9 and c.code = u.cursus 10 and u.cursus = i.cursus 11 and u.begindatum = i.begindatum 12 and c.type = 'ALG'; NAAM VOORL SMIT N 10 Hebben we op een van de cursuslocaties op enig moment twee lokalen tegelijkertijd in gebruik gehad? select u1.locatie 2, u1.begindatum, u1.cursus 3, u2.begindatum, u2.cursus 4 from uitvoeringen u1 5, uitvoeringen u2 6, cursussen c 7 where u1.locatie = u2.locatie 8 and (u1.begindatum < u2.begindatum or 9 u1.cursus <> u2.cursus ) 10 and u1.cursus = c.code 11 and u2.begindatum between u1.begindatum 12 and u1.begindatum + c.lengte; LOCATIE BEGINDATUM CURSUS BEGINDATUM CURSUS DE MEERN 01-FEB-2000 JAV 03-FEB-2000 XML We zoeken dus twee verschillende cursusuitvoeringen op dezelfde locatie, die elkaar overlappen. Het blijkt dat de Java-cursus van 1 februari 2000 in De Meern overlapt met de XML-cursus die twee dagen later start; de Java-cursus duurt namelijk vier dagen. 11 Geef een matrix-overzicht (voor elke afdeling een kolom, voor elke functie een rij) met in iedere cel het aantal medewerkers. In een query is het dynamisch bepalen van het aantal kolommen ondoenlijk; ga daarom uit van de afdelingsnummers 10, 20 en 30. Academic Service, Den Haag 16

17 select m.functie 2, sum(case m.afd when 10 then 1 else 0 end) as afd_10 3, sum(case m.afd when 20 then 1 else 0 end) as afd_20 4, sum(case m.afd when 30 then 1 else 0 end) as afd_30 5 from medewerkers m 6 group by m.functie; FUNCTIE AFD_10 AFD_20 AFD_ BOEKHOUDER DIRECTEUR MANAGER TRAINER VERKOPER Zijn de twee queries in figuur 8.45 en 8.46 equivalent? Onderzoek de queries nader, en verklaar het eventuele verschil. Als we de FEEDBACK-instelling van SQL*Plus laag genoeg zetten, dan wordt het verschil meteen duidelijk: set feedback 1 select u.locatie from uitvoeringen u 2 MINUS 3 select a.locatie from afdelingen a; LOCATIE MAASTRICHT 2 rows selected. select DISTINCT u.locatie 2 from uitvoeringen u 3 where u.locatie not in 4 (select a.locatie 5 from afdelingen a); LOCATIE MAASTRICHT 1 row selected. Er bestaat een cursusuitvoering waarvan de locatie onbekend is, en zoals we inmiddels weten kunnen we niet voorzichtig genoeg zijn met null-waarden. In de eerste query komt die null-waarde in het resultaat voor, omdat hij er door de MINUS-operator niet wordt uitgehaald. Als de tweede query die bewuste rij aan het controleren is, wordt de WHERE-component: 3 where NULL not in ('LEIDEN','DE MEERN','UTRECHT','GRONINGEN') Deze conditie levert "onbekend" op, dus wordt de rij niet tot het resultaat toegelaten. Academic Service, Den Haag 17

18 Antwoorden opgaven paragraaf Het komt vaak voor dat een (junior) docent een cursus eerst bij een collega volgt voordat hij hem zelf voor het eerst geeft. Voor welke docent/cursus-combinaties is dat gebeurd? Deze opgave is niet eenvoudig; hij kan op vele manieren worden opgelost. De hier gegeven oplossing, gebaseerd op gebruik van de EXISTS-operator, is als volgt te lezen: Zoek cursusuitvoeringen waarvoor geldt dat er voor de docent een eerdere deelname aan diezelfde cursus bestaat als cursist, èn waarvoor geldt dat het de eerste keer is dat de docent de cursus geeft. Deze laatste toevoeging is nodig, anders zouden ook de gevallen geven-volgen-geven verschijnen. select u.cursus, u.docent 2 from uitvoeringen u 3 where exists 4 (select i.* 5 from inschrijvingen i 6 where i.cursist = u.docent 7 and i.cursus = u.cursus 8 and i.begindatum < u.begindatum) 9 and not exists 10 (select eu.* 11 from uitvoeringen eu 12 where eu.cursus = u.cursus 13 and eu.docent = u.docent 14 and eu.begindatum < u.begindatum); CURSUS DOCENT JAV 7876 OAG Sterker nog: als de beginnende docent de cursus dan voor het eerst geeft, zit de docent waarvan hij eerder de kunst had afgekeken ter ondersteuning als deelnemer in het lokaal. Spoor dit soort cursus/junior/senior-combinaties op. Laten we deze opgave voor de variatie eens met een join oplossen: select u1.cursus 2, u1.docent as senior 3, u2.docent as junior 4 from uitvoeringen u1 5, inschrijvingen i1 6, uitvoeringen u2 7, inschrijvingen i2 8 where u1.cursus = i1.cursus -- join i1 met u1 9 and u1.begindatum = i1.begindatum 10 and u2.cursus = i2.cursus -- join i2 met u2 11 and u2.begindatum = i2.begindatum 12 and u1.cursus = u2.cursus -- u1 en u2 dezelfde cursus 13 and u1.begindatum < u2.begindatum -- maar u1 is eerder dan u2 14 and u1.docent = i2.cursist -- docent u1 volgt u2 15 and u2.docent = i1.cursist -- docent u2 volgt u1 16 ; CURSUS SENIOR JUNIOR JAV Academic Service, Den Haag 18

19 3 Welke medewerkers hebben nog nooit een cursus gegeven? In eerste instantie zouden we misschien verwachten dat beide hieronder gegeven oplossingen correct zijn. Let echter op de verschillende resultaten. Bepaal zelf wat de juiste oplossing is. select m.* 2 from medewerkers m 3 where m.mnr not in (select u.docent 4 from uitvoeringen u); no rows selected select m.* 2 from medewerkers m 3 where not exists (select u.docent 4 from uitvoeringen u 5 where u.docent = m.mnr); MNR NAAM VOORL FUNCTIE CHEF GBDATUM MAANDSAL COMM AFD ALDERS JAM VERKOPER FEB DE WAARD TF VERKOPER FEB MARTENS P VERKOPER SEP BLAAK R MANAGER NOV CLERCKX AB MANAGER JUN DE KONING CC DIRECTEUR 17-NOV DEN DRAAIER JJ VERKOPER SEP JANSEN R BOEKHOUDER DEC MOLENAAR TJA BOEKHOUDER JAN rows selected. Voor beide oplossingen is wat te zeggen. Het is namelijk zo dat er cursus-uitvoeringen voorkomen met een null-waarde in de DOCENT-kolom. Als we deze null-waarden opvatten als docent onbekend dan kunnen we dus nooit met zekerheid zeggen dat een bepaalde medewerker nog nooit een cursus heeft gegeven. De tweede query behandelt de null-waarden duidelijk anders; we moeten dus onze vraag iets preciezer formuleren om te kunnen bepalen welke oplossing gewenst is. 4 Welke werknemers hebben alle bouwcursussen (type BLD) gevolgd? Ze hebben namelijk recht op korting. Dit is geen gemakkelijke opgave. We geven hier twee oplossingen. select m.mnr, m.naam, m.voorl 2 from medewerkers m 3 where not exists 4 (select c.* 5 from cursussen c 6 where c.type = 'BLD' 7 and not exists 8 (select i.* 9 from inschrijvingen i 10 where i.cursus = c.code 11 and i.cursist = m.mnr 12 ) 13 ); Academic Service, Den Haag 19

20 MNR NAAM VOORL ALDERS JAM Alternatieve oplossing, met een GROUP BY: select m.mnr, m.naam, m.voorl 2 from medewerkers m 3, cursussen c 4, inschrijvingen i 5 where i.cursus = c.code 6 and i.cursist = m.mnr 7 and c.type = 'BLD' 8 group by m.mnr, m.naam, m.voorl 9 having count(distinct i.cursus)=(select count(*) 10 from cursussen 11 where type='bld'); MNR NAAM VOORL ALDERS JAM 5 Wie hebben (tenminste) dezelfde cursussen gevolgd als medewerker 7788 gevolgd heeft? Dit is ook geen gemakkelijke opgave. De hier gegeven constructie met de MINUS-operator en een gecorreleerde subquery is elegant. Let overigens op de plaats van de ontkenning. De oplossing kan het beste als volgt worden gelezen: Geef alle medewerkers (behalve 7788 zelf) waarvoor geldt dat er géén cursus is die 7788 wèl heeft gevolgd, en zij niet. select m.naam,m.voorl 2 from medewerkers m 3 where m.mnr <> and not exists 5 (select i1.cursus 6 from inschrijvingen i1 7 where i1.cursist = MINUS 9 select i2.cursus 10 from inschrijvingen i2 11 where i2.cursist = m.mnr); NAAM VOORL ALDERS JAM BLAAK R DE KONING CC ADAMS AA Merk overigens de treffende gelijkenis op van deze opgave en de vorige opgave; het zijn beide voorbeelden uit de categorie deelverzamelingproblemen. De twee gegeven oplossingsmethoden zijn dan ook uitwisselbaar. 6 Geef de gegevens van alle medewerkers waarvan het maandsalaris en de commissie overeenkomen met het maandsalaris en de commissie van (minstens) een medewerker van Academic Service, Den Haag 20

Oefeningen Hoofdstuk 1 : Select

Oefeningen Hoofdstuk 1 : Select Oefeningen Hoofdstuk 1 : Select 1. Geef de naam en functie van alle medewerkers die verkoper zijn. VERKOPER VERKOPER MARTENS VERKOPER DEN DRAAIER VERKOPER 2. Geef de naam en functie van de medewerkers

Nadere informatie

Zelftest SQL Workshop

Zelftest SQL Workshop Zelftest SQL Workshop Document: n0087test.fm 25/06/2014 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST SQL WORKSHOP Handleiding Deze test

Nadere informatie

Zelftest SQL Workshop

Zelftest SQL Workshop Zelftest SQL Workshop Document: n0087test.fm 04/01/2018 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST SQL WORKSHOP Handleiding Deze test

Nadere informatie

SQL Aantekeningen 3. Maarten de Rijke mdr@science.uva.nl. 22 mei 2003

SQL Aantekeningen 3. Maarten de Rijke mdr@science.uva.nl. 22 mei 2003 SQL Aantekeningen 3 Maarten de Rijke mdr@science.uva.nl 22 mei 2003 Samenvatting In deze aflevering: het selecteren van tuples, operaties op strings, en aggregatie functies. Verder kijken we naar iets

Nadere informatie

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd. BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is

Nadere informatie

Query SQL Boekje. Fredrik Hamer

Query SQL Boekje. Fredrik Hamer Query SQL Boekje Query SQL Boekje Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402162103 Fredrik Hamer Inhoudsopgave A. Aanhef bepalen 17 Aantal 18 Aantal dagen tussen

Nadere informatie

Guido Geurts Mark Bernaerts

Guido Geurts Mark Bernaerts Inhoud. OPVRAGEN VAN GEGEVENS UIT DE DATABANK...6 BASIS SQL QUERY BLOK...7 Syntax SELECT - statement:...7 Selectie van alle kolommen uit een tabel...8 Selecteren van bepaalde kolommen...8 Bewerkingen uitvoeren

Nadere informatie

Structured Query Language (SQL)

Structured Query Language (SQL) Structured Query Language (SQL) Huub de Beer Eindhoven, 4 juni 2011 Database: in essentie 0 of meer tabellen elke tabel nul of meer kolommen (of velden) elke tabel nul of meer unieke rijen elke query werkt

Nadere informatie

[TOETS SQL INLEIDING]

[TOETS SQL INLEIDING] 2011 ROC ter AA afdeling T&T Team ICT Toets SQL Inleiding Duur: 100 minuten Hulpmiddelen: Alleen Pen en Papier Er is één voorblad en vijf opgaven pagina s. Normering: Deel I: 14 punten (7x2 Deel II: 10

Nadere informatie

Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts

Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Studenten: Peter Asnong Rik Broens Tom De Keyser Daan Gielen Kris Gregoire Koen Olaerts Toon Wouters Inhoudsopgave

Nadere informatie

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens

Nadere informatie

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases

Nadere informatie

SQL: oefenen queries

SQL: oefenen queries Oefenen opstellen queries in SQL Hierna vind je per database voor iedere soort vragen in het boek Databases en SQL twee voorbeeldvragen. Bij iedere vraag wordt het antwoord gegeven samen met de uitkomst.

Nadere informatie

1. Inleiding... 2 1.1. Inleiding SQL... 3 1.1.1. Inleiding... 3 1.1.2. Database, databaseserver en databasetaal... 4 1.1.3. Het relationele model...

1. Inleiding... 2 1.1. Inleiding SQL... 3 1.1.1. Inleiding... 3 1.1.2. Database, databaseserver en databasetaal... 4 1.1.3. Het relationele model... 1. Inleiding... 2 1.1. Inleiding SQL... 3 1.1.1. Inleiding... 3 1.1.2. Database, databaseserver en databasetaal... 4 1.1.3. Het relationele model... 4 1.1.4. Wat is SQL?... 6 1.1.5. Verschillende categorieên

Nadere informatie

= > >= < <= BETWEEN IS NULL IS NOT NULL

= > >= < <= BETWEEN IS NULL IS NOT NULL Select queries SELECT...FROM... SELECT DISINCT...FROM... WHERE...AND...OR...NOT...LIKE...IN = > >= <

Nadere informatie

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC Aantekeningen IRDB Vak: IRDB > Infrma1ca Rela1nele DataBase Onderstaande database scripts zijn gebaseerd p PstgreSQL. Standaarden Schrijf SQL wrden al1jd in hfdlefers, k al werkt het met kleine lefers;

Nadere informatie

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64 Klas Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters JONGENS Number Integer MEISJES Number Integer Lessen Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters DOCCODE Short Text 3 Characters

Nadere informatie

Puzzelen met SQL: Fileleed

Puzzelen met SQL: Fileleed Puzzelen met SQL: Fileleed Patrick Barel, Alex Nuijten - AMIS Services BV Na begin de dag met een dansje en de NOS Headlines worden op Radio 3 de files voorgelezen. Heleen de Geest of John Bakker, van

Nadere informatie

Databases - Inleiding

Databases - Inleiding Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden

Nadere informatie

Les S-02: Meer geavanceerde SQL-instructies

Les S-02: Meer geavanceerde SQL-instructies Les S-02: Meer geavanceerde SQL-instructies 2.0 Overzicht les 1: De basisvorm van een SQL query ziet er als volgt uit: (DISTINCT) selecteer de velden uit de tabel waar de volgende voorwaarde geldt ; Bij

Nadere informatie

Structured Query Language

Structured Query Language Structured Query Language SQL = internationale standaardtaal. Origineel IBM. SQL92 (SQL2), SQL99 (SQL3), SQL:2003, SQL:2007 en SQL:2008. Vele dialecten. In wat volgt beperken we ons tot wat tot de kern

Nadere informatie

Donderdag 28-jan 6:30 8:27 11:54 12:54 15:34 17:23 19:20

Donderdag 28-jan 6:30 8:27 11:54 12:54 15:34 17:23 19:20 Januari 2016 Vrijdag 1-jan 6:44 8:50 11:41 12:44 14:55 16:41 18:45 Zaterdag 2-jan 6:44 8:50 11:41 12:45 14:56 16:42 18:46 Zondag 3-jan 6:44 8:50 11:42 12:45 14:57 16:43 18:47 Maandag 4-jan 6:44 8:49 11:42

Nadere informatie

12. Meer dan één tabel gebruiken en sub-queries

12. Meer dan één tabel gebruiken en sub-queries 12. Meer dan één tabel gebruiken en sub-queries 12.1. Inleiding In de vorige hoofdstukken heb je telkens queries uitgevoerd op één tabel. In de praktijk is het raadplegen van gegevens over het algemeen

Nadere informatie

Puzzelen met SQL 38. De Muzieklijst, deel 2 PUZZELEN MET SQL

Puzzelen met SQL 38. De Muzieklijst, deel 2 PUZZELEN MET SQL 2 3 4 10 2 14 15 18 21 PUZZELEN MET SQL 3 26 27 1 32 33 33 36 Puzzelen met SQL 38 0 41 5 46 47 De Muzieklijst, deel 2 intro In het vorige nummer is een start gemaakt met het bijhouden van een muzieklijst,

Nadere informatie

Zelftest SQL. Document: n0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Zelftest SQL. Document: n0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium Zelftest SQL Document: n0453test.fm 19/04/2012 ABIS Training & Consulting P.. Box 220 B-3000 Leuven Belgium TRAINING & CNSULTING INLEIDING BIJ DE ZELFTEST SQL Korte handleiding Deze test heeft als bedoeling

Nadere informatie

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Op dit moment gebruiken

Nadere informatie

Introductie (relationele) databases

Introductie (relationele) databases Eerste les Introductie (relationele) databases Database en DBMS Een verzameling van gestructureerd opgeslagen gegevens Dus ook een kaartenbak is een database Van oudsher waren er hiërarchische en netwerkdatabases

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

Microsoft SQL. opdracht. Regio College Zaanstreek Waterland Afdeling ICT Opleidingen

Microsoft SQL. opdracht. Regio College Zaanstreek Waterland Afdeling ICT Opleidingen Microsoft SQL opdracht Regio College Zaanstreek Waterland Afdeling ICT Opleidingen In deze opdracht wordt gebruik gemaakt van de database ORCADB, waarop drie tabellen zijn gedefinieerd namelijk: EMP, DEPT

Nadere informatie

Correctievoorschrift VWO NederlandsNederl. Informatica. Tijdvak 1 Woensdag 17 mei uur. College-examen schriftelijk.

Correctievoorschrift VWO NederlandsNederl. Informatica. Tijdvak 1 Woensdag 17 mei uur. College-examen schriftelijk. NederlandsNederl Correctievoorschrift VWO 2017 Informatica Tijdvak 1 Woensdag 17 mei 13.30 15.30 uur College-examen schriftelijk VF-0161-s-17-1-c 1 Algemene regels Scorepunten worden toegekend met inachtneming

Nadere informatie

Databases en SQL Foundation (DBSQLF.NL)

Databases en SQL Foundation (DBSQLF.NL) Databases en SQL Foundation (DBSQLF.NL) EXIN Hét exameninstituut voor ICT ers Janssoenborch - Hoog Catharijne Godebaldkwartier 365 3511 DT Utrecht Postbus 19147 3501 DC Utrecht Nederland T +31 30 234 48

Nadere informatie

Data Manipulation Language

Data Manipulation Language Data Manipulation Language (DML) In de vorige les hebben we een database structuur gemaakt van 4 tabellen. Hiervoor worden de volgende scripts gebruikt voor de verschillende tabellen: Tabel A ROBERT ELLIS

Nadere informatie

SQL & Relationele datamodellen in interactieve media

SQL & Relationele datamodellen in interactieve media SQL & Relationele datamodellen in interactieve media HVA-CMD-V1-datamodelleren oefeningen deel 1: SQL 2012-2013 Inhoud Inhoud... 2 Selecties uit een enkelvoudige datatabel... 3 Selecties uit een meerdere

Nadere informatie

oefeningen TOP2000 antwoorden

oefeningen TOP2000 antwoorden oefeningen TOP2000 antwoorden vragen niveau 1 Niveau 1 beslaat de volgende onderwerpen: SELECT, FROM, WHERE, DISTINCT, ORDER BY, LIKE, BETWEEN, IN, wildcards, eenvoudige vergelijkingen, eenvoudige logische

Nadere informatie

SQL.

SQL. SQL joost.vennekens@kuleuven.be Mogelijkheden Tabellen maken: create table Tabellen verwijderen: drop table Tabellen vullen: insert into Tabellen wijzigen: update, delete from Gegevens opvragen: select

Nadere informatie

Toelichting Validatieregels DBC GGZ RG12

Toelichting Validatieregels DBC GGZ RG12 Toelichting Validatieregels DBC GGZ RG12 Versie 20111201 Ingangsdatum: 1 januari 2012 Inhoudsopgave 1 Inleiding...3 2 Algemene gegevens van de tabel...4 3 Specificatie van de validatieregels...6 4 De validatieregels...8

Nadere informatie

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank v Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank 1 Introductie: data en informatie 1.0 Wat leer je in dit hoofdstuk? 1.1 Verschil tussen gegevens en

Nadere informatie

Versieperikelen. Bijlage C

Versieperikelen. Bijlage C Bijlage C Versieperikelen In dit boek beschrijven we PL/SQL aan de hand van Oracle versie 11g. Alle eigenschappen die in dit boek behandeld worden, zijn in deze versie van Oracle (en in nog te verschijnen

Nadere informatie

SQL & Datamodelleren

SQL & Datamodelleren SQL & Datamodelleren HVA-CMD-V1-datamodelleren Algemene handleiding bij het lesprogramma 2012-2013 Inhoud Inhoud... 2 Inleiding... 3 Leerdoelen:... 3 Plaats in het leerplan:... 3 Werkwijze:... 3 Lesstof:...

Nadere informatie

hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1

hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1 relationele databases 9.1 hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit Als voorbeeld nemen we een eenvoudige database, bestaande uit twee tabellen. De

Nadere informatie

Puzzelen met SQL DEV. Crash SQL Investigation

Puzzelen met SQL DEV. Crash SQL Investigation Puzzelen met SQL Crash SQL Investigation Deze puzzel is gebaseerd op het verhaal van Carel-Jan Engel tijdens een AMIS Query over High Availability. Hij vertelde hoe hij actief was bij het vliegveld van

Nadere informatie

Les 11 : Basis SQL (deel2).

Les 11 : Basis SQL (deel2). Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit

Nadere informatie

Data Manipulatie. Query Talen. / Informatica

Data Manipulatie. Query Talen. / Informatica Data Manipulatie Query Talen 1 Queries maken in TC en SQL (ter verduidelijking) We kijken nog even naar bier-query q: Geef alle paren van drinkers die niet samen naar een kroeg kunnen gaan en daar allebei

Nadere informatie

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica Extra Tentamen Databases 1, 2M400, 8 oktober 2003. Alle uitwerkingen van de opgaven moeten worden ingevuld in de daarvoor bestemde vrije

Nadere informatie

Zelftest DB2 for z/os basiscursus

Zelftest DB2 for z/os basiscursus Zelftest DB2 for z/os basiscursus Document: n1067test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST DB2 FOR Z/OS BASISCURSUS

Nadere informatie

SQL: query taal met. woorden. ISO SQL: Structured Query Language. de SQL basis query structuur. voorbeeld: doel: intuitieve query taal

SQL: query taal met. woorden. ISO SQL: Structured Query Language. de SQL basis query structuur. voorbeeld: doel: intuitieve query taal SQL: query taal met woorden ISO SQL: Structured Query Language Prof. dr. Paul De Bra Gebaseerd op: Database System Concepts, 5th Ed. doel: intuitieve query taal gebruikt Engelse woorden: select, from,

Nadere informatie

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster 4. 4. Inhoud rste BAC Toegepaste Biologische Wetenschappen Hoofdstuk 4 Databank Terminologie, Navigeren, Importeren Tabellen Records/Velden manipuleren Queries (Vragen) [Ook in SQL] sorteren filter volgens

Nadere informatie

databases & SQL - antwoorden

databases & SQL - antwoorden informatica databases & SQL - antwoorden Op dit lesmateriaal is een Creative Commons licentie van toepassing. 2010 Remie Woudt remie.woudt@gmail.com 2013 François Vonk (XAMP vervangen door USBWebserver

Nadere informatie

ISO SQL: Structured Query Language

ISO SQL: Structured Query Language ISO SQL: Structured Query Language Prof. dr. Paul De Bra Gebaseerd op: Database System Concepts, 5th Ed. SQL: query taal met woorden doel: intuitieve query taal gebruikt Engelse woorden: select, from,

Nadere informatie

Inhoud. Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2

Inhoud. Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2 v Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2 1 Introductie: data en informatie 3 1.0 Wat leer je in dit hoofdstuk? 3 1.1 Verschil tussen

Nadere informatie

Informatica toets vwo 6 Databases

Informatica toets vwo 6 Databases Informatica toets vwo 6 Databases Deze toets bestaat uit drie gedeelten met elk een andere casus: 1. een opdracht waarin je een ER-diagram via het relationeel model omzet in een database specificatie in

Nadere informatie

Les 2 Eenvoudige queries

Les 2 Eenvoudige queries Les 2 Eenvoudige queries XAMP Apache server ( http ) mysql server PHP myadmin IAM SQL oefeningen Database phpmyadmin Import : sql_producten.sql, sql_winkel.sql, sql_festival.sql SAMS SQL in 10 minuten

Nadere informatie

11. Het selecteren van gegevens deel II

11. Het selecteren van gegevens deel II 11. Het selecteren van gegevens deel II 11.1. Inleiding In hoofdstuk 7 heb je kennis gemaakt met het statement Select. In dit hoofdstuk ga je wat dieper in op het statement. Je gaat sorteren / groeperen

Nadere informatie

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 DATAMODEL SQL Middelbare School Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 INHOUDSOPGAVE 1. Informatiedomein 3 1.1 Informatiedomein 3 1.2 Toepassingen 3 2.

Nadere informatie

Hoofdstuk 17: Logische & Informatiefuncties en operatoren

Hoofdstuk 17: Logische & Informatiefuncties en operatoren Hoofdstuk 17: Logische & Informatiefuncties en operatoren 17.0 Inleiding Logische formules testen of een conditie waar is (het resultaat van de formule zal dan de waarde WAAR hebben) of onwaar (in dit

Nadere informatie

Het SQL Leerboek zevende editie Antwoorden op Opgaven

Het SQL Leerboek zevende editie Antwoorden op Opgaven Het SQL Leerboek zevende editie Antwoorden op Opgaven Auteur: Rick F. van der Lans Versie: 1.0 Datum: Februari 2012 2 Het SQL Leerboek Antwoorden op opgaven Februari 2012 Alle rechten voorbehouden. Alle

Nadere informatie

Integriteitsbewaking bij een relationele database

Integriteitsbewaking bij een relationele database Integriteitsbewaking bij een relationele database Bij het ontwikkelen van een informatiesysteem voor een organisatie moet er koste wat koste voor gezorgd worden, dat er geen tegenstrijdige gegevens in

Nadere informatie

SQL datadefinitietaal

SQL datadefinitietaal SQL datadefinitietaal We kunnen er het schema van de database mee bepalen: metadata toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: CREATE : toevoegen van metagegevens DROP : verwijderen

Nadere informatie

ISO Query By Example

ISO Query By Example ISO Query By Example Prof. dr. Paul De Bra Gebaseerd op: Database System Concepts, 5th Ed. QBE waarom nog een query taal? de relationele algebra en SQL geven niet alleen een specificatie van een query-resultaat,

Nadere informatie

Inleiding... 3. 1 Databases en Data Base Management Systems... 3. 2 Tabellen... 3. 3 Wat is SQL?... 5

Inleiding... 3. 1 Databases en Data Base Management Systems... 3. 2 Tabellen... 3. 3 Wat is SQL?... 5 1 Inhoudsopgave. Inleiding.... 3 1 Databases en Data Base Management Systems.... 3 2 Tabellen.... 3 3 Wat is SQL?... 5 4 Gegevens opvragen (deel 1).... 5 4.1 Boolean operatoren.... 7 4.2 IN en BETWEEN

Nadere informatie

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Anatomie van een databank

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Anatomie van een databank Inhoud Computervaardigheden Hoofdstuk 5 Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.) Terminologie Data importeren Basis queries Allerhande Joins Doe dit. Aandachtspunt! Wat gebeurt hier?

Nadere informatie

Secure Application Roles

Secure Application Roles Secure Application Roles Beheer de toegang tot de database 1. Inleiding Het realiseren van geautoriseerde toegang tot een database lijkt eenvoudig. Echter, vaak blijkt dat dezelfde combinatie van gebruikersnaam

Nadere informatie

Errata en opmerkingen Relationele Databases en SQL 1e druk

Errata en opmerkingen Relationele Databases en SQL 1e druk Errata en opmerkingen Relationele Databases en SQL 1e druk Errata en opmerkingen bij uitwerkingen van opgaven staan bij het hoofdstuk. Negatieve regelnummers: tel van onderaf. Hoofdstuk 1 p13 fig 1.9 p22

Nadere informatie

oefeningen eredivisie antwoorden

oefeningen eredivisie antwoorden oefeningen eredivisie antwoorden vragen niveau 1 Niveau 1 beslaat de volgende onderwerpen: SELECT,, WHERE, DISTINCT, ORDER BY, eenvoudige vergelijkingen, LIKE, wildcards en eenvoudige logische operatoren.

Nadere informatie

Datamodelleren en databases 2011

Datamodelleren en databases 2011 Datamodelleren en databases 21 Capita selecta 1 In dit college Modelleren Normaliseren Functionele afhankelijkheid 1-3N M:N-relaties, associatieve entiteittypes, ternaire relaties Weak entiteittypes Multivalued

Nadere informatie

SQL opgaven. Relationele model: Opgaven:

SQL opgaven. Relationele model: Opgaven: SQL opgaven Relationele model: Opgaven: 1. Selecteer de klanten die bij fabriek F1 of fabriek F4 een bestelling hebben geplaatst. 2. Selecteer de klanten die bij fabriek F1 en fabriek F4 een bestelling

Nadere informatie

Computerclub Volwassenen, Jeugd en Informatica vzw www.vji.be

Computerclub Volwassenen, Jeugd en Informatica vzw www.vji.be Voorbeelden en oefeningen SQL 1 Computerclub Volwassenen, Jeugd en Informatica vzw www.vji.be Voorbeelden en oefeningen bij demo SQL Voorbeelden en oefeningen Stefan Cruysberghs www.scip.be Februari 2003

Nadere informatie

SQL. Datamodellering 2008

SQL. Datamodellering 2008 SQL Datamodellering 2008 1 Wat is SQL? SQL is een standaard interactieve bevragings- en definitietaal voor relationele DBMSen SQL is een set-based, declaratieve query-taal (dus niet procedureel!) DB-leveranciers

Nadere informatie

SQL. Wat is SQL? Geschiedenis SQL SQL DMO 2008 1. Datamodellering 2008

SQL. Wat is SQL? Geschiedenis SQL SQL DMO 2008 1. Datamodellering 2008 SQL Datamodellering 2008 1 Wat is SQL? is een standaard interactieve bevragings- en definitietaal voor relationele DBMSen is een set-based, declaratieve query-taal (dus niet procedureel!) DB-leveranciers

Nadere informatie

EXIN Databases en SQL Foundation

EXIN Databases en SQL Foundation EXIN Databases en SQL Foundation Preparation Guide Editie 201608 Copyright 2016 EXIN All rights reserved. No part of this publication may be published, reproduced, copied or stored in a data processing

Nadere informatie

Oracle Analytische Functies

Oracle Analytische Functies Oracle Analytische Functies De keuze: één functie of 1000 regels code Met Oracle Analytische SQL Functies kun je data vanuit verschillende rijen gelijktijdig ophalen, zonder dat daar een self join voor

Nadere informatie

U ziet de progressie van de download aan de groene blokjes in het balkje helemaal onder aan de pagina.

U ziet de progressie van de download aan de groene blokjes in het balkje helemaal onder aan de pagina. Gegevens exporteren en bewerken vanuit GRIEL Stap 1. Selecteer de juiste gegevens en download deze 1. Stel het datumfilter in op de gewenste periode. Druk op ververs. 2. Maak met behulp van het filter

Nadere informatie

1. * Database worden vaak gebruikt in Client-Server architectuur.

1. * Database worden vaak gebruikt in Client-Server architectuur. Naam Studentnummer Klas Herkansing [ ] ja, nee [ ], zoja uit welk jaar? kernbegrippen relationele database Minimaal drie van de vijf vragen goed beantwoorden. 1. * Database worden vaak gebruikt in Client-Server

Nadere informatie

Release Notes. Afdrukdatum: 2011/12/20

Release Notes. Afdrukdatum: 2011/12/20 Release Notes Afdrukdatum: 2011/12/20 Dit document beschrijft vanuit technisch oogpunt de aanpassingen in Hi-Ant aan de betreffende versie. Deze tekst is geenszins bedoeld als document naar de eindgebruiker,

Nadere informatie

Relationele databases

Relationele databases Systematisch bouwen van informatiesystemen t.b.v. practicumopdracht : Relationele databases Structured Query Language SQL Relationele databases Geautomatiseerde informatiesystemen gebruiken bijna altijd

Nadere informatie

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311 LEEREENHEID PhP 2 Dit document bestaat uit twee onderdelen - Onderdeel Leereenheid - Onderdeel Onderwijsproduct 1 Naam leereenheid In deze tabel staat de naam en het type van de leereenheid Leereenheid

Nadere informatie

In tabel 1 zie je de eenmaandsrendementen van het aandeel LUXA over 2005, steeds afgerond op twee decimalen.

In tabel 1 zie je de eenmaandsrendementen van het aandeel LUXA over 2005, steeds afgerond op twee decimalen. Beleggen in aandelen De waarde van aandelen kan sterk schommelen. Zo kan een aandeel op dit moment 23,30 euro waard zijn en over een maand gezakt zijn tot 21,10 euro, dat is een daling met ongeveer 9,44%.

Nadere informatie

Les S-01: De basisbeginselen van SQL

Les S-01: De basisbeginselen van SQL Les S-01: De basisbeginselen van SQL 1.0 Relationele databases en SQL Een database is een bestand waarin gegevens worden opgeslagen in de vorm van tabellen. Zo kan een huisarts met behulp van een database

Nadere informatie

Miniles gegevensbanken bevragen met SQL

Miniles gegevensbanken bevragen met SQL Miniles gegevensbanken bevragen met SQL In deze miniles gaat het over gegevensbanken of databases. Dit zijn bestanden waarin gegevens kunnen worden opgeslagen. Het is dan van belang dat je op een eenvoudige

Nadere informatie

PL/SQL. Declaraties van variabelen. Structuur PL/SQL is een blok-georiënteerde taal: Toekenningen

PL/SQL. Declaraties van variabelen. Structuur PL/SQL is een blok-georiënteerde taal: Toekenningen PL/SQL PL/SQL is een procedurele uitbreiding op SQL, omdat SQL op zich niet krachtig genoeg is om complexe databank applicaties te ontwikkelen. Server-side functies, of stored procedures worden op de database

Nadere informatie

Vragen hoofdstuk 1: Resultaat

Vragen hoofdstuk 1: Resultaat Vragen hoofdstuk 1: Resultaat Het ontwikkelen van informatiesystemen bevat volgende activiteiten: Analyse van het probleem. Toewijzen van resources. Ontwerp van de onderdelen van het systeem. Bouw van

Nadere informatie

Hoofdstuk 13: Sorteren & Filteren* 2010

Hoofdstuk 13: Sorteren & Filteren* 2010 Hoofdstuk 13: Sorteren & Filteren* 2010 13.0 Inleiding Spreadsheets bieden meer grip op gegevens. De twee beste manieren om meer grip te krijgen, is door de gegevens te sorteren of door bepaalde waarden

Nadere informatie

Correctievoorschrift HAVO Informatica. Tijdvak 1 Woensdag 9 mei uur. College-examen schriftelijk.

Correctievoorschrift HAVO Informatica. Tijdvak 1 Woensdag 9 mei uur. College-examen schriftelijk. Correctievoorschrift HAVO 2018 Informatica Tijdvak 1 Woensdag 9 mei 13.30 15.30 uur College-examen schriftelijk HF-0161-s-18-1-c Algemene regels Scorepunten worden toegekend met inachtneming van de volgende

Nadere informatie

NHibernate als ORM oplossing

NHibernate als ORM oplossing NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een

Nadere informatie

Zelftest Oracle basiscursus

Zelftest Oracle basiscursus Zelftest Oracle basiscursus Document: N0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST ORACLE BASISCURSUS Dit is een

Nadere informatie

Hoofdstuk: 1 Principes van databases

Hoofdstuk: 1 Principes van databases DBSQLF Databases en SQL Hoofdstuk: 1 Principes van databases aant Css: 4 732 blz 9 1.1 Doel ve database - om op het juiste moment op de juiste plaats de juiste gegevens beschikbaar te hebben richten we

Nadere informatie

Maak een analyse van deze gegevens door middel van ER-modellering.

Maak een analyse van deze gegevens door middel van ER-modellering. B Oefening: databanken B.1 Beschrijving van de gegevens Voor het creëren van een uurrooster is informatie in verband met opleidingen, activiteiten, docenten en lokalen nodig. Een opleiding wordt gekenmerkt

Nadere informatie

Wijzigingen Universe OSIRIS Manager versie 5.12.1/01 mei 2012

Wijzigingen Universe OSIRIS Manager versie 5.12.1/01 mei 2012 Inleiding Dit document beschrijft de wijzigingen in de Universe osman release 5.12.1/01 in vergelijking met release 5.11.2/01. Een aantal wijzigingen heeft betrekking op melding 21550 van TUD en melding

Nadere informatie

Wat zijn de verschillen tussen SPSS 9 en SPSS 10?

Wat zijn de verschillen tussen SPSS 9 en SPSS 10? Wat zijn de verschillen tussen SPSS 9 en SPSS 10? 1.1 De data-editor / het definiëren van variabelen 1.2 Het openen van bestanden 1.3 Output lezen 1.4 Mogelijke problemen 1.1.1 De data-editor Het grootste

Nadere informatie

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311 LEEREENHEID Oracle Dit document bestaat uit twee onderdelen - Onderdeel Leereenheid - Onderdeel Onderwijsproduct 1 Naam leereenheid In deze tabel staat de naam en het type van de leereenheid Leereenheid

Nadere informatie

Data Definition Language

Data Definition Language Data Definition Language We gaan hier dezelfde database gebruiken als in de vorige les. Nu gaan we deze echter maken met behulp van DDL gedeelte van SQL. Om in het SQL deel van Microsoft Access te komen

Nadere informatie

6. Het maken van een database

6. Het maken van een database 6. Het maken van een database 6.1. Inleiding In hoofdstuk 5 heb je de oefendatabase gemaakt doormiddel van een script. In dit hoofdstuk ga je zelf een database maken en deze vullen met tabellen. Hiervoor

Nadere informatie

VERSCHILLENDE TARIEVEN VOOR MEER WINST

VERSCHILLENDE TARIEVEN VOOR MEER WINST VERSCHILLENDE TARIEVEN VOOR MEER WINST - LEERLING SuccesformulesVoorkant_Opmaak 1 06-10-14 10:08 Pagina 1 VERSCHILLENDE TARIEVEN VOOR MEER WINST 1 anigap 80:01 41-01-60 1 kaampo_tnakroovselumrofseccus

Nadere informatie

Practicumopgave 3: SAT-solver

Practicumopgave 3: SAT-solver Practicumopgave 3: SAT-solver Modelleren en Programmeren 2015/2016 Deadline: donderdag 7 januari 2016, 23:59 Introductie In het vak Inleiding Logica is onder andere de propositielogica behandeld. Veel

Nadere informatie

Informatie verwerking en databases... 4. RDBMS en tabellen... 8 SQL SELECT... 8 SQL WHERE... 10 SQL INSERT... 14 SQL UPDATE... 17 SQL DELETE...

Informatie verwerking en databases... 4. RDBMS en tabellen... 8 SQL SELECT... 8 SQL WHERE... 10 SQL INSERT... 14 SQL UPDATE... 17 SQL DELETE... Databases+SQL 1 Inhoud Informatie verwerking en databases... 4 RDBMS en tabellen... 8 SQL SELECT... 8 SQL WHERE... 10 SQL INSERT... 14 SQL UPDATE... 17 SQL DELETE... 18 SQL ORDER BY... 19 SQL Aggregate

Nadere informatie

Datum, Tijd en Timer-object

Datum, Tijd en Timer-object IX. Datum, Tijd en Timer-object A. Hoe worden tijd en datum in VB aangeduid? Zowel datum als tijd worden als een getal met decimalen opgeslagen. Het gedeelte voor de komma geeft de datum aan, het gedeelte

Nadere informatie

Digitaal Staatsexamen VWO 2010

Digitaal Staatsexamen VWO 2010 Onderdeel I - Meerkeuzevragen Kies het juiste alternatief. Digitaal Staatsexamen VWO 2010 1) Wat is de decimale waarde van het binaire getal 101110? A. 4 B. 23 C. 46 D. 92 2) Bekijk bovenstaand model voor

Nadere informatie

Het omzetten van een ER-diagram naar SQL

Het omzetten van een ER-diagram naar SQL Het omzetten van een ER-diagram naar SQL Huub de Beer Eindhoven, 4 juni 2011 Omzetting ER-diagram naar SQL in twee stappen 1: ER-Diagram relationeel model Onderwerp van hoofdstuk 3 Entiteittype relatie,

Nadere informatie

Spiekboekje Excel Query SQL

Spiekboekje Excel Query SQL Spiekboekje Excel Query SQL Spiekboekje Excel Query SQL Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402163100 Fredrik Hamer Inhoudsopgave Excel functies Inhoudsopgave

Nadere informatie