9 H. Flits Zwanenveld Nijmegen Jeugd1 10 L. Willemsen Kasteel 4 Wychen Jeugd1 12 M.E.P. Graag Broerdijk 234 Nijmegen Heren 12/8/89 19/8/89 36

Maat: px
Weergave met pagina beginnen:

Download "9 H. Flits Zwanenveld 89-90 Nijmegen Jeugd1 10 L. Willemsen Kasteel 4 Wychen Jeugd1 12 M.E.P. Graag Broerdijk 234 Nijmegen Heren 12/8/89 19/8/89 36"

Transcriptie

1 0 Inleiding SQL: Structured Query Language 0. Informatiesystemen, gegevensbanken en tabellen Bij het automatiseren van gegevensbanken maakt men tegenwoordig bijna altijd gebruik van gegevensbank-beheerssystemen (database management systems, DBMS). Met zo'n systeem kan men eenvoudig gegevens in tabellen plaatsen, gegevens opzoeken of veranderen. Het maken van een tabel met behulp van een database management system is erg eenvoudig: men hoeft slechts één commando te geven (zoals wij later zullen zien). Wij gaan werken met relationele gegegevensbankbeheerssystemen (RDBMS). Relationele systemen werken met tabellen; je kunt tabellen maken, er gegevens in opslaan, met de gegevens in de tabellen 'rekenen', gegevens zoeken in tabellen. De tabel is dus het centrale begrip in een relationele database. Een gegevensbank in een relationeel gegevensbankbeheersysteem is niets anders dan een verzameling bij elkaar behorende tabellen. Zoals bijvoorbeeld in figuur 0., waar een gegevensbank met drie tabellen (spelers, boetes en teams) is weergegeven. Spelers Spnr Spelernaam Straatnaam Plaatsnaam Teamnaam Teams Boetes K. Huisman Annastraat 24 Nijmegen Heren 2 P.J. van Onderen Willemstraat 3 Nijmegen Dames 4 P. van Oosterom Past. Pietstraat 4 Weurt Heren 6 W. De Bom Huilstraat 67 Wychen Heren Boetenr 8 Datum F.G. Habank Spelersnr Vossendijk Bedrag 288 Nijmegen Dames 9 H. Flits Zwanenveld Nijmegen Jeugd Teamnaam Klasse 0 L. Willemsen Kasteel 4 Wychen Jeugd /8/89 Aanvoerder M.E.P. Graag Broerdijk 234 Nijmegen Heren 2 3 /8/89 H. Nijboer Plein 44 Arnhem Dames Jeugd 3 9 3/8/89 0K. De Groot 34Huilstraat Wychen Jeugd2 Jeugd /8/89 20 B.E. Melmans 28Kasteel 6 Wychen Jeugd2 Dames W. De Bom 9/8/89 36 Huilstraat Wychen Jeugd Heren 6 24 T. Huisman Annastraat 24 Nijmegen Jeugd 20/8/ H. Fluit Snelweg 673 Lent Dames 7 20/8/89 28 W.Jansen Wolvendijk 3 Elst Jeugd /8/89 D. van Agt De Beurs Groesbeek Jeugd /9/89 K. Zwartjes Past. Pietstraat 2 Weurt Jeugd /9/89 J. Mienen Ekkersrijt 23 Eindhoven Heren 34 3/9/89 H. Blaak 25 Ekkersrijt 28 3 Eindhoven Jeugd2 36 D.F. Janssen Groenstraat 45 Oss Dames 4 5 0/9/89 37 R. van der El 40 0/9/89 G.E. Noeg 34 Wolvendijk 28 28Eindeweg 4 Elst Tiel Heren Jeugd R. Heymans P. van Oss Dreef 24 Dreef 24 Grave Oss Jeugd Jeugd figuur 0.: een gegevensbank. (C) Universitaire School voor Informatica SQL. KUNijmegen

2 kolomnaam Spelers Spnr Spelernaam Straatnaam Plaatsnaam Teamnaam 2 K. Huisman P.J. van Onderen Annastraat 24 Willemstraat 3 Nijmegen Nijmegen Heren Dames 4 P. van Oosterom Past. Pietstraat 4 Weurt Heren 6 W. De Bom Huilstraat 67 Wychen Heren 8 F.G. Habank Vossendijk 288 Nijmegen Dames 9 H. Flits Zwanenveld Nijmegen Jeugd 0 L. Willemsen Kasteel 4 Wychen Jeugd M.E.P. Graag Broerdijk 234 Nijmegen Heren 3 H. Nijboer Plein 44 Arnhem Dames 9 K. De Groot Huilstraat 63 Wychen Jeugd2 20 B.E. Melmans Kasteel 6 Wychen Jeugd2 23 W. De Bom Huilstraat 67 Wychen Jeugd 24 T. Huisman Annastraat 24 Nijmegen Jeugd 25 H. Fluit Snelweg 673 Lent Dames 28 W.Jansen Wolvendijk 3 Elst Jeugd2 30 D. van Agt De Beurs Groesbeek Jeugd 32 K. Zwartjes Past. Pietstraat 2 Weurt Jeugd 33 J. Mienen Ekkersrijt 23 Eindhoven Heren 34 H. Blaak Ekkersrijt 28 Eindhoven Jeugd2 36 D.F. Janssen Groenstraat 45 Oss Dames 37 R. van der El Wolvendijk 28 Elst Heren 40 G.E. Noeg Eindeweg 4 Tiel Jeugd2 42 R. Heymans Dreef 24 Grave Jeugd 44 P. van Oss Dreef 24 Oss Jeugd regel Spnr = Spelersnr kolom figuur 0.2: kolommen en regels. Gegevensbankbeheerssystemen beheren een gegevensbank; een gegevensbank bestaat uit tabellen en het systeem werkt dus op tabellen. Deze systemen zoeken in tabellen gegevens op, veranderen gegevens in regels, maken nieuwe regels met gegevens, etc. In deze cursus gebruiken wij een gegevensbankbeheersysteem waarbinnen de vraagtaal SQL beschikbaar is. SQL is de afkorting van Structured Query Language, hetgeen in het Nederlands zoiets betekent als ' gestructureerde gegevensvraagtaal'. De naam doet al vermoeden dat SQL een taal is voor het werken met gegevens. Een vraagtaal als SQL wordt dus vooral gebruikt om gegevens op te vragen. Daarnaast kent de taal elementen waarmee gegevens in de tabellen van de gegevenbank kunnen worden ingebracht en waarmee in de tabellen aanwezige gegevens kunnen worden gewijzigd. Wij zullen ons alleen richten op het opvragen van gegevens via SQL. (C) Universitaire School voor Informatica SQL. 2 KUNijmegen

3 0.2 Het voorbeeld informatiesysteem : de sportvereniging We zullen steeds een voorbeeldgegevensbank gebruiken. Deze gegevensbank heeft als naam de sportvereniging, voor de geautomatiseerde gegevensbank afgekort tot sportver. Deze gegevensbank bevat de gegevens uit de administratie van een sportvereniging. Deze zelfde sportvereniging komt ook terug in de syllabus bij het college (niet exact gelijk, maar wel bijna). De gegevensbank bevat 4 tabellen: de spelers -tabel, de teams -tabel, de boetes -tabel en de trainers -tabel. Hieronder staan beschrijvingen van de tabellen.. Spelers De tabel met de naam spelers bevat gegevens over de competitiespelers van de sportvereniging. De tabel heeft vijf kolommen: - een kolom met de naam spelersnr. Iedere speler heeft een spelersnummer en dit nummer staat vermeld in deze kolom. - een kolom met de naam spelernaam. In deze kolom staat de naam van de speler. De kolomnaam is een beetje krom, omdat de naam van de kolom maar een beperkte lengte mag hebben. - een kolom straatnaam. Deze kolom bevat de naam van de straat waar een speler woont en het huisnummer dat hij heeft. - een kolom plaatsnaam. De naam van de woonplaats van de speler staat in deze kolom. - een kolom teamnaam bevat de naam van het team, waarin de speler speelt. Spelers Spnr Spelernaam Straatnaam Plaatsnaam Teamnaam K. Huisman Annastraat 24 Nijmegen Heren 2 P.J. van Onderen Willemstraat 3 Nijmegen Dames 4 P. van Oosterom Past. Pietstraat 4 Weurt Heren 6 W. De Bom Huilstraat 67 Wychen Heren 8 F.G. Habank Vossendijk 288 Nijmegen Dames 9 H. Flits Zwanenveld Nijmegen Jeugd 0 L. Willemsen Kasteel 4 Wychen Jeugd M.E.P. Graag Broerdijk 234 Nijmegen Heren 3 H. Nijboer Plein 44 Arnhem Dames 9 K. De Groot Huilstraat 63 Wychen Jeugd2 20 B.E. Melmans Kasteel 6 Wychen Jeugd2 23 W. De Bom Huilstraat 67 Wychen Jeugd 24 T. Huisman Annastraat 24 Nijmegen Jeugd 25 H. Fluit Snelweg 673 Lent Dames 28 W.Jansen Wolvendijk 3 Elst Jeugd2 30 D. van Agt De Beurs Groesbeek Jeugd 32 K. Zwartjes Past. Pietstraat 2 Weurt Jeugd 33 J. Mienen Ekkersrijt 23 Eindhoven Heren 34 H. Blaak Ekkersrijt 28 Eindhoven Jeugd2 36 D.F. Janssen Groenstraat 45 Oss Dames 37 R. van der El Wolvendijk 28 Elst Heren 40 G.E. Noeg Eindeweg 4 Tiel Jeugd2 42 R. Heymans Dreef 24 Grave Jeugd 44 P. van Oss Dreef 24 Oss Jeugd Spnr = Spelersnr figuur 0.3: De spelerstabel. (C) Universitaire School voor Informatica SQL. 3 KUNijmegen

4 2 Teams De teamstabel bevat gegevens over teams. In deze tabel vinden we drie kolommen: - een kolom met de naam teamnaam. Deze kolom bevat de namen van alle teams. In ons voorbeeld zijn er vier teams, namelijk ' Jeugd', ' Jeugd2', ' Dames' en ' Heren'. - een kolom met de naam klasse. Deze kolom bevat de klasse waarin een team speelt. Er zijn vier klassen mogelijk, genummerd van tot 4. - een kolom met de naam aanvoerder. Deze kolom bevat een aanduiding van wie de aanvoerder van het team is. Deze aanduiding is het spelersnummer van de aanvoerder. Teams Teamnaam Klasse Aanvoerder Jeugd 0 Jeugd Dames 2 36 Heren figuur 0.4: De teams tabel. 3 Boetes Deze tabel bevat de openstaande (niet betaalde) boetes. Boetes worden bepaald door de sportbond. Iedere opgelegde boete heeft een nummer, het zogeheten boetenummer. Voorts wordt bijgehouden wanneer het ' delict' gepleegd is en door wie, en tenslotte ook de hoogte van de boete. Boetes Boetenr Datum Spelersnr Bedrag /8/89 2 /8/89 3 3/8/ /8/ /8/ /8/ /8/ /8/89 9 2/9/89 0 2/9/89 3/9/ /9/ /9/89 28 figuur 0.5: De boetes tabel De betekenis van de kolommen: - een kolom boetenr. Deze kolom bevat het boetenummer. - een kolom datum. Deze kolom bevat de datum waarop de overtreding gepleegd is. - een kolom spelersnr. Het spelersnummer van de speler die de overtreding begaan heeft wordt in deze kolom vermeld (om de kosten te kunnen doorberekenen). - een kolom bedrag die het bedrag van de boete bevat. (C) Universitaire School voor Informatica SQL. 4 KUNijmegen

5 3 Trainers Een team kan verschillende trainers hebben, en een trainer kan verschillende teams trainen. In deze tabel staat welke teams welke trainers hebben. Een trainer van een team is altijd zelf een speler in de vereniging. - een kolom teamnaam bevat de naam van het team en - een kolom trainer bevat het spelersnummer van een trainer van het team. Trainers Teamnaam Spelersnr Jeugd Jeugd Jeugd Jeugd2 Jeugd2 Dames Heren Heren Heren figuur 0.6 De trainerstabel (C) Universitaire School voor Informatica SQL. 5 KUNijmegen

6 Het opzetten van een gegevensbank We hebben reeds gezien, dat een gegevensbank over het algemeen méérdere gegevenstabellen bevat. Afhankelijk van het gebruikte gegevensbankbeheerssysteem (DBMS) moet voor het opzetten van een nieuwe gegevensbank wel of niet eerst een ' lege' gegevensbank worden opgezet, vóórdat we in die ' lege' gegevensbank tabellen kunnen gaan definiëren. We richten ons nu op twee aspecten: ) de in het oog te houden mogelijkheden met betrekking tot de zogenaamde gegevenstypen; 2) het creëren van de gegevenstabellen (al dan niet binnen een apart te definiëren gegevensbank).. Gegevenstypes Een computer is niet in staat alle mogelijke soorten, types van gegevens te verwerken. Het aantal types is beperkt. Aan de computer moet bekend zijn van welk type een gegeven is, voordat dit gegeven kan worden ingevoerd. Voor de computer ( of liever gezegd het database management systeem) is de wijze waarop een gegeven er uit ziet - het type van het gegeven - erg belangrijk. Een ander woord voor gegevenstype is datatype. Het aantal en het soort gegevenstypes dat we binnen een gegevensbank-beheerssysteem (DBMS) kunnen hanteren, hangt af van het te gebruiken (R)DBMS. Deze types zijn op zich vaker weer verder onder te verdelen in een aantal klassen. We zullen hieronder een aantal van die standaardtypes bespreken.. Type "geheel getal" a. Type: SMALLINT (SMALL INTeger), of in het Nederlands ' klein geheel getal'. Gegevens van dit type kunnen geen waarde voorstellen groter dan of kleiner dan De waarde van het voorgestelde getal moet dus liggen tussen en b. Type: INTEGER, of in het Nederlands ' geheel getal'. Gegevens van dit type kunnen een waarde voorstellen die moet liggen tussen en De waarde van een getal van het type ' INTEGER' moet dus ruwweg liggen tussen de -2 miljard en de +2 miljard. 2. Type "tekst" Willen wij een naam in de kolom van een tabel opslaan, dan kan dat natuurlijk niet als gegevens van het type geheel getal: namen zijn niet van het type getal, maar van het type tekst. Alle DBMS bieden de mogelijkheid om gegevens van het type tekst op te slaan. Je kunt het type tekst in SQL vergelijken met gegevenstypen zoals TEXT in Elan of STRING in (Turbo) Pascal. Type: CHAR ( lengte ) (variant: VARCHAR (lengte) ) CHARacter, of in het Nederlands ' kar akter', ' teken'. Het SQL-RDBMS moet weten hoe lang de tekst maximaal mag zijn. Dit noemen we de lengte van een tekst. ' Jan' is een tekst met 3 tekens, ' Jan Klaassen' is een tekst met tekens (de spatie achter Jan telt ook mee). Let op het gebruik van apostrofs om een tekst te ' begrenzen'. b.v. CHAR ( 0 ) (variant: VARCHAR (0) ) Een gegeven van dit gegevenstype is een tekst, die maximaal uit tien tekens mag bestaan. 3. Type "gebroken getal" Bijvoorbeeld: de inflatie in de maand oktober was 0.5 (procent), de BTW is 8.5 (procent), Janssen NV. heeft een omzet van 6.8 (miljoen gulden) etc. Het gegevenstype dat bij deze gegevens hoort heet in SQL ' DECIMAL'. Achter ' DECIMAL' moet je tussen haken aangeven hoe het gegeven er precies moet itzien. u Het eerste getal tussen haken geeft aan hoeveel cijfers er totaal in het gegeven staan. Een minteken telt hierbij ook mee. Het tweede getal tussen haken geeft aan hoeveel cijfers er achter de punt mogen staan. Type: DECIMAL ( x,y ) ' x' is daa rbij een getal dat het maximale aantal posities (minteken en/of cijfers) in het gegeven aangeeft, en ' y' is een getal dat aangeeft hoeveel posities (cijfers) er in het gegeven achter de punt maximaal mogen zijn. De diverse database-systemen hebben vaak nog andere gegevenstypen, zoals het datum-type en het Boolean-type (voor het opslaan van de waarheidswaarden TRUE (= waar ) of FALSE ( onwaar ) ). (C) Universitaire School voor Informatica SQL. 6 KUNijmegen

7 .2 Het opzetten van tabellen Voordat wij gegevens in de tabellen (lades) van de gegevensbank kunnen invoeren moeten ook deze worden opgezet. In SQL kunnen wij dit doen door middel van het ' CREATE TABLE' commando. De taalregels waaraan dit commando moet voldoen ( de syntax, de grammatica van dit commando) vind je hierna in figuur.. NOT NULL CREATE TABLE tabelnaam ( kolomnaam gegevenstype ), figuur.: Syntax van het 'CREATE TABLE' commando. Een kolom kan slechts gegevens van eenzelfde gegevenstype bevatten; indien gebruik is gemaakt van de 'NOT NULL'- optie, dan moet later in elk gegevensrecord het betreffende veld een waarde bevatten. Voorbeeld: Boetes Boetenr Datum Spelersnr Bedrag /8/89 2 /8/89 3 3/8/ /8/ /8/ /8/ /8/ /8/89 9 2/9/89 0 2/9/89 3/9/ /9/ /9/89 28 figuur.2: de boetes tabel. Indien in bovenstaande tabel gegevensrecords mogen voorkomen, waarin niet per se een waarde hoeft te zijn ingevuld voor het boete-bedrag (daar moet nog over beslist worden), dan kan hij worden opgezet door middel van het volgende commando: CREATE TABLE boetes ( boetenr SMALLINT NOT NULL, datum CHAR(8) NOT NULL, spelersnr SMALLINT NOT NULL, bedrag DECIMAL ( 6, 2 ) ) N.B. ) Verschillende RDBMS hebben verschillende manieren om aan te geven, dat een SQL-commando op een volgende regel verder gaat. Hierboven zie je een voorbeeld waarbij na ieder deel van het commando een streepje '-' is oegevoegd, t behalve op de laatste regel. N.B. 2) Sommige RDBMS' s kennen aparte commando' s om een gebruikte database ' af te sluiten'. (C) Universitaire School voor Informatica SQL. 7 KUNijmegen

8 2. Het invoeren, verwijderen en veranderen van gegevens Wanneer je met gegevens in een gegevensbank werkt, kun je drie functies onderscheiden die nodig zijn:. Invoeren van gegevens (tabelregels). 2. Verwijderen van gegevens (tabelregels). 3. Veranderen van gegevens (tabelregels). We zullen in de volgende drie paragrafen op elk van deze drie functies afzonderlijk ingaan. Bedenk je steeds dat deze functies door het gegevensbank-beheerssysteem alleen kunnen worden uitgevoerd wanneer de gegevensbank opgezet en geopend is. 2. Het invoeren van gegevens Wanneer wij gegevens in een gegevensbank willen opslaan, dan doen we dit door een regel, waarin die gegevens staan, toe te voegen aan een tabel. Het toevoegen van een regel aan een tabel gebeurt door middel van het SQL commando ' INSERT'. Het syntax -diagram van dit commando staat in figuur 2.. INSERT INTO tabelnaam ( kolomnaam ), VALUES ( waarde ), figuur 2.: syntax diagram van het ' INSERT' commando. Voorbeeld: Toevoegen van de regel ' Heren',, 20 aan de teams tabel gaat dan dus als volgt: INSERT INTO teams ( teamnaam, klasse, aanvoerder) VALUES ( ' Heren',, 20 ) Bekijk nu figuur 2. nog eens en kijk of dit voorbeeld commando voldoet aan de regels die in het syntax-diagram vastliggen. Welke invulling hebben tabelnaam, kolomnaam en waarde? N.B. Uiteraard zullen bij zo' n INSERT-commando eventuele NOT NULL -eisen moeten worden gerespecteerd (zoniet, dan verschijnt er een foutmelding). (C) Universitaire School voor Informatica SQL. 8 KUNijmegen

9 2..2 Regels voor het INSERT-commando Zoals je uit dit syntaxdiagram kunt opmaken zijn er nogal wat mogelijkheden. Dit wordt geïllustreerd door de onderstaande voorbeelden. Voorbeeld: INSERT INTO teams ( aanvoerder, klasse, teamnaam ) VALUES ( 20,, ' Heren' ) is een correct commando. De volgorde verschilt weliswaar met die van de oorspronkelijke opzet van de tabel (' teamnaam' staat nu bijvoorbeeld s al laatste genoemd), maar dat mag. Waar het om gaat is dat de volgorde van de in het commando aangegeven waarden in overeenstemming is met de in dit commando aangegeven kolomvolgorde. Voorbeeld: INSERT INTO teams ( teamnaam, klasse ) VALUES ( ' Heren', ) Dit heren-team heeft dus geen aanvoerder: de kolom met de naam aanvoerder wordt dan ook niet ingevuld Het verwijderen van gegevens Verwijderen van gegevens uit een gegevenstabel doe je met behulp van het DELETE-commando. De syntax van het commando ziet er als volgt uit: DELETE FROM tabelnaam WHERE criterium figuur 2.2: syntax-diagram van het DELETE-commando. Zoals je uit het syntax-diagram kunt lezen, kun je in het DELETE-commando een ' selectie' criterium opnemen. Voorbeeld: DELETE FROM teams WHERE teamnaam = ' Heren' Dit commando zorgt ervoor dat de laatste regel uit de tabel wordt verwijderd. Voorbeeld: DELETE FROM teams WHERE klasse = Uit de tabel worden alle regels waarin in de kolom klasse een staat, verwijderd. Er worden, dus twee regels verwijderd: de regel waar in de kolom teamnaam ' Heren' staat, en de regel waar in de kolom teamnaam ' Jeugd' staat. Het is ook mogelijk in het DELETE-commando géén criterium op te geven. Het commando ziet er dan uit als: DELETE FROM teams Het gevolg van dit commando is, dat alle regels uit de tabel worden verwijderd. Na dit commando zitten er dus geen regels meer in de tabel. Opletten geblazen dus met dit DELETE-commando! (C) Universitaire School voor Informatica SQL. 9 KUNijmegen

10 2.3. Het veranderen van gegevens. Met behulp van het UPDATE-commando kun je gegevens op een regel van een tabel wijzigen. Het syntaxdiagram van dit commando ziet er als volgt uit: UPDATE tabelnaam SET kolomnaam = waarde, WHERE - criterium figuur 2.3 : het syntaxdiagram van het UPDATE-commando. We kunnen drie delen in het commando onderscheiden: - eerst moet je aangeven in welke tabel je gegevens wilt veranderen; de naam van deze tabel vul je achter ' UPDATE' in. - daarna geef je aan in welke kolommen gegevens veranderd moeten worden; deze kolommen (althans de kolomnamen) vul je in achter ' SET' ; achter iedere kolomnaam moet je ook nog aangeven van de nieuwe waarde in de kolom moet worden; deze waarde schrijf je achter het ' =' teken. - je kunt een selectiecriterium opnemen, net zoals in het DELETE-commando. Voorbeeld: UPDATE teams SET aanvoerder = 37 WHERE teamnaam = ' Heren' Het resultaat is dat de aanvoerder van het heren-team wordt vervangen door een misschien wat minder overtredingen makend speler. N.B.. als je het selectie-criterium "WHERE teamnaam=' Heren' " achterwege zou laten, dan zouden plotselinge álle teams de speler met spelersnummer 37 als aanvoerder krijgen (een onmogelijke situatie!). N.B. 2. Uiteraard zullen ook bij een UPDATE-commando eventuele NOT NULL -eisen moeten worden gerespecteerd (zoniet, dan behoort er weer een foutmelding te verschijnen). (C) Universitaire School voor Informatica SQL. 0 KUNijmegen

11 3. Gegevensvragen op één tabel Er is slechts één commando in SQL, waarmee je gegevens kunt opvragen. Dit commando, het SELECT-commando, is erg uitgebreid, zo uitgebreid zelfs, dat we het volledige syntax diagram pas later zullen behandelen. We beginnen met wat eenvoudige gegevensvragen, die ook op een eenvoudige wijze met behulp van het SQL SELECT-commando te stellen zijn. 3. Selectie en projectie We kunnen twee soorten gegevensvragen onderscheiden: òf: - wij vragen gegevens op uit bepaalde regels van een tabel, - wij vragen gegevens op uit bepaalde kolommen van een tabel. Opvragen van bepaalde regels uit de tabel noemen wij selectie ; opvragen van bepaalde kolommen heet projectie. Beide soorten gegevensvragen worden met behulp van het SELECT-commando op de tabellen in de gegevensbank uitgevoerd. 3.. Selectie Met behulp van het SELECT-commando kunnen gegevens op regels uit een tabel geselecteerd worden (zie figuur 3.). Willen wij niet alle regels van de tabel te zien krijgen, dan zullen wij moeten aangeven welke regels uit de tabel wij wèl willen zien (en welke niet). We moeten dan een selectiecriterium meegeven aan het SELECT-commando, een conditie waaraan de te selecteren regels uit de tabel moeten voldoen. Een selectie van regels uit een tabel ziet er in SQL altijd als volgt uit: SELECT * FROM <tabelnaam> WHERE <conditie> Natuurlijk moeten <tabelnaam> en <conditie> nog worden ingevuld. Bij uitvoering van dit SQL-commando worden alle regels uit de tabel met de naam die je in <tabelnaam> hebt ingevuld, die aan <conditie> voldoen, op het beeldscherm getoond. Het is belangrijk dat de ' *' achter ' SELECT' wordt intypt. Dit sterretje geeft aan gehele dat regels uit de tabel getoond moeten worden. We komen later, in de volgende paragraaf, nog op dit sterretje terug. Tabel Geselecteerde regels figuur 3. : selectie (C) Universitaire School voor Informatica SQL. KUNijmegen

12 Voorbeeld: (Sportvereniging) De informatievraag: Welke spelers spelen er allemaal in het eerste jeugd-team? Het SQL-commando (de realisatie van de gegevensvraag): De informatie moet uit de tabel spelers komen, dus achter het woord ' FROM' komt deze tabelnaam. We willen alleen die spelers die in de teamnaam -kolom ' Jeugd' hebben staan. Dus het selectiecriterium achter ' WHERE' teamnaam is ' = ' Jeugd'. Het SQL-commando ziet er dan als volgt uit: SELECT * WHERE teamnaam = ' Jeugd' Voorbeeld: (Sportvereniging) De informatievraag: Wat zijn de persoonsgegevens van de spelers die in Nijmegen wonen, en in het heren team spelen. Het SQL-commando (de realisatie van de gegevensvraag): De tabel is dus spelers en het selectiecriterium is teamnaam = ' Heren' AND plaatsnaam = ' Nijmegen'. SELECT * WHERE teamnaam = ' Heren' AND plaatsnaam = ' Nijmegen' In het selectiecriterium verbindt de 'AND' twee voorwaarden met elkaar: de betekenis van deze AND-verbinding is dat aan het selectiecriterium pas wordt voldaan als aan beide voorwaarden tegelijk voldaan is; de eerste voorwaarde èn (AND) de tweede voorwaarde moeten tegelijk geldig zijn. Alleen die regels worden geselecteerd, waarin de teamnaam gelijk is aan ' Heren' en tegelijkertijd de plaatsnaam gelijk is aan ' Nijmegen'. De regels in de tabel moeten dus aan beide voorwaarden tegelijkertijd voldoen. Een andere veelgebruikte verbinding tussen twee voorwaarden, wordt tot stand gebracht door: 'OR'. De betekenis van deze OR-verbinding is dat aan het selectiecriterium wordt voldaan als aan minstens één van de beide voorwaarden wordt voldaan. Het SQL-commando: SELECT * WHERE teamnaam = ' Heren' OR plaatsnaam = ' Nijmegen' levert dus alle regels uit de tabel spelers waarvan in de kolom teamnaam de waarde ' Heren' staat of (OR) waarvan in de kolom plaatsnaam de waarde ' Nijmegen' staat. De regelswaarin zowel in de kolom teamnaam de waarde ' Heren' staat als in de kolom plaatsnaam de waarde ' Nijmegen', horen hier dus ook bij. Behalve met de logische operatoren AND en OR kunnen ook combinaties met de NOT-operator (ontkenning!) worden gemaakt, zoals bijvoorbeeld in: SELECT * WHERE ( NOT teamnaam = ' Heren' ) AND ( plaatsnaam = ' Nijmegen' ) N.B. het selectiecriterium NOT teamnaam=' Heren' kan ook geformuleerd worden als: teamnaam<>' Heren'. N.B. Let bij samengestelde criteria goed op het gebruik van haakjes. Zo geven de volgende criteria verschillende resultaten: WHERE ( NOT teamnaam = ' Heren' ) AND ( plaatsnaam = ' Nijmegen' OR plaatsnaam = ' Wychen' ) en: WHERE ( NOT teamnaam = ' Heren' ) AN D plaatsnaam = ' Nijmegen' OR plaatsnaam = ' Wychen' (C) Universitaire School voor Informatica SQL. KUNijmegen

13 3..2 Projectie Vaak zijn wij niet geïnteresseerd in alle gegevens die op een regel in een tabel staan, en willen wij alleen de gegevens uit bepaalde kolommen zien. In dit geval moeten wij op de tabel niet alleen een selectie (zie 3..) uivoeren, maar ook een zogenaamde projectie. Bij een projectie worden uit de tabel alleen gegevens uit bepaalde kolommen geselecteerd. Figuur 3.5 geeft een illustratie van een pure projectie (alleen bepaalde kolommen geselecteerd, geen specifieke regels geselecteerd). Een projectie kan eveneens met het SQL-commando SELECT worden uitgevoerd; in dat geval selecteren wij bepaalde kolommen uit een tabel. Wanneer wij alléén kolommen selecteren (projectie) en niet ook nog regels selecteren (selectie) ziet het SELECT-commando er als volgt uit: SELECT FROM <kolomnaam>, <kolomnaam2>, <kolomnaam3> <tabelnaam> pure projectie op kolommen in een tabel Voor <kolomnaam>, <kolomnaam2>,<kolomnaam3> en <tabelnaam> moeten de namen van kolommen, respectievelijk tabellen ingevuld worden. Merk op dat het WHERE-gedeelte in het SQL-commando ontbreekt omdat slechts sprake is van een pure projectie. Tabel Geselecteerde kolommen figuur 3.5 : Projectie Bij uitvoering van dit commando worden alleen de gegevens uit de kolommen kolomnaam, kolomnaam2 en kolomnaam3 getoond. Alleen díe gegevens worden getoond, die in deze kolommen in de tabel staan Natuurlijk is het mogelijk één kolomnaam achter SELECT te zetten, of twee, etc. Het afleiden van het benodigde SQL-commando uit de informatiebehoefte gaat op vergelijkbare wijze als in het geval van een selectie. Voorbeeld: (Sportvereniging) De informatievraag: De namen en adressen van de leden van de vereniging moeten worden getoond. Het SQL-commando (de realisatie van de gegevensvraag): Achter FROM moet de tabelnaam spelers komen te staan, en na SELECT de kolommen spelernaam, straatnaam en plaatsnaam (gescheiden door een komma). De SQL-vraag ziet er als volgt uit: SELECT FROM spelernaam, straatnaam, plaatsnaam spelers (C) Universitaire School voor Informatica SQL. 3 KUNijmegen

14 3..3 Selectie en projectie Natuurlijk kun je selectie en projectie met elkaar combineren. Je krijgt dan van bepaalde regels in de tabel, slechts bepaalde velden (kolommen) te zien (zie figuur 3.7). Tabel Geselecteerde regels Getoonde gegevens Geselecteerde kolommen figuur 3.7 : Selectie gecombineerd met projectie Meestal zul je, als je een gegevensvraag stelt, zowel selecteren als projecteren: je bent vaak alleen geïnteresseerd in de gegevens in bepaalde kolommen op bepaalde regels. Het syntax diagram van het vereenvoudigde SELECT-commando ziet er als volgt uit (zie hierna figuur 3.8): SELECT * kolomnaam, FROM tabelnaam WHERE selectiecriterium figuur 3.8 : Syntax diagram van het vereenvoudigde ' SELECT'-commando (C) Universitaire School voor Informatica SQL. 4 KUNijmegen

15 3..4. Het systematisch opstellen van een SQL-query Voor het systematisch opstellen van een SQL-query moeten tijdens de analyse van de informatievraag steeds de volgende zaken (in de genoemde volgorde) worden nagegaan:. Uit welke tabel komen de gegevens; 2. In welke kolommen staan de gegevens die nodig zijn (lees: die getoond moeten worden); 3. Wat is het selectiecriterium voor de regels? Voorbeeld: (Sportvereniging) De informatievraag: Wat zijn de namen en adressen van de speelster uit het dames-team. De analyse: ) de gegevens moeten alle uit (alleen) de spelers-tabel komen; 2) gevraagd worden de gegevens uit de kolommen spelernaam, straatnaam en plaatsnaam; 3) we willen alleen gegevens uit die records waarbij in de ' teamnaam' -kolom ' Dames' staat. Het SQL-commando (de realisatie van de gegevensvraag): SELECT spelernaam, straatnaam, plaatsnaam WHERE teamnaam = ' Dames' Rekenkundige operatoren: *, /, + en - Zowel in het SELECT- als het WHERE-gedeelte van een SQL-query is (in de meeste SQL-systemen, maar bijvoorbeeld niet in WinSQL) het gebruik van rekenkundige operatoren mogelijk. Zo kun je bijvoorbeeld de boetebedragen boven de ƒ 50,-, verhoogd met 0% laten verschijnen via de query: SELECT. * bedrag FROM boetes WHERE ( bedrag / 0 ) > 5 (N.B. dit kan uiteraard gemakkelijker!) (C) Universitaire School voor Informatica SQL. 5 KUNijmegen

16 3.2 SQL SELECT -Operatoren en -Functies We zijn niet altijd geïnteresseerd in precies díe gegevens die "letterlijk" in de gegevensbank zitten. Vaak willen wij van deze gegevens afgeleide informatie hebben. Bijvoorbeeld: een docent, die 30 tentamens gecorrigeerd heeft en de resultaten in een gegevensbank heeft ingevoerd, is - als deze resultaten eenmaal in de gegevensbank zitten - niet zozeer geïnteresseerd in de cijfers (want dat zijn er teveel om te kunnen overzien), maar wel in afgeleide informatie zoals het gemiddelde cijfer, het hoogste cijfer, het laagste cijfer, het aantal onvoldoendes etc. SQL biedt verschillende faciliteiten om uit gegevens in tabellen, dit soort afgeleide informatie te genereren. Deze faciliteiten kunnen benut worden door achter het woord SELECT in het SELECT-commando zogenaamde operatoren en/of functies toe te voegen, die bewerkingen op de gegevens uit de invoertabel tot gevolg hebben; het resultaat van deze bewerkingen wordt op het scherm zichtbaar gemaakt. We bespreken achtereenvolgens de volgende SQL-SELECT-operatoren en/of functies: DISTINCT => alleen enkelvoudig tonen ALL => bij meervoudig vóórkomen ook meervoudig tonen (' default' ) COUNT(...) => aantal voorkomens SUM (...) => som van waarden MAX (...) => maximale waarde MIN (...) => minimale waarde AVG (...) => AVeraGe (=gemiddelde) De operator DISTINCT Wij illustreren de werking van de operator DISTINCT aan de hand van een voorbeeld. Voorbeeld: (Sportvereniging) De informatievraag: Een lijst met spelersnummers van spelers die nog een boete hebben. Het SQL- commando (de realisatie van de gegevensvraag): Let op: als we het volgende commando zouden gebruiken: SELECT spelersnr FROM boetes dan zouden een aantal spelersnummers meervoudig in het overzicht verschijnen. We willen echter gewoon ' de spelersnummers van beboete spelers' hebben. Daarom: dat kan wel via het volgende SQL-commando waarin de DISTINCT-operator is opgenomen: SELECT DISTINCT spelersnr FROM boetes Deze DISTINCT-operator ' zeeft' als het ware de duplicaten uit et hresultaat van de uitvoering van het SQL-commando. De DISTINCT-operator kunnen we beschouwen als een soort deel-' commando' dat alle dubbele regels uit de resultaattabel zeeft, en een tabel oplevert zonder dubbele regels. Alle regels in de resultaattabel zijn dus verschillend. Figuur 3.4 illustreert dit. Spelersnr Spelersnr Spelersnr oorspronkelijk DISTINCT-operatie resultaat figuur 3.4: het effect van de DISTINCT operator. Merk op dat het resultaat van de DISTINCT-operator een geordende tabel oplevert. (C) Universitaire School voor Informatica SQL. 6 KUNijmegen

17 De operator ALL De operator ALL heeft precies de omgekeerde werking van de operator DISTINCT. Als het woord ALL achter SELECT in het SQL SELECT-commando staat, dan mogen er duplicaten in de antwoorden zitten. SQL gaat er vanuit dat je in iedere SQL-vraag ALL bedoelt, tenzij je DISTINCT gebruikt. In principe hoef je het woord ALL dus nìet te gebruiken De functie COUNT Een docent heeft 30 tentamens gecorrigeerd en de resultaten in een gegevensbank ingevoerd. Hij wil het aantal onvoldoendes weten. Door de COUNT-functie in het SELECT-commando op te nemen, kan het aantal regels in de uitkomst van een gegevensvraag geteld worden. De COUNT-functie telt het aantal voorkomens van hetgeen achter de functie tussen haakjes staat. Algemeen: SELECT COUNT ( < te tellen dingen > ) FROM < tabelnaam > [ WHERE < conditie > ] Even ter verduidelijking: datgene wat tussen vierkante haken (' [' ' ]' ) staat mag in het uiteindelijke commando staan, maar hoeft niet per se ingevuld te worden. Je mag in een SELECT-commando dus het selectie-criterium (<conditie> ) eventueel achterwege laten (daardoor wordt natuurlijk ook niet meer geselecteerd). Je moet voor <te tellen dingen> iets in het uiteindelijke commando invullen. Datgene wat je invult wordt geteld. Dingen die je kunt invullen zijn:. Tel het aantal gehele regels; dit wordt aangegeven door een sterretje ' *' tussen de haakjes achter COUNT. 2. Tel de waarden in één kolom; er wordt een projectie uitgevoerd en het resultaat hiervan geteld. Meestal maakt het geen verschil of je een ' *' gebruikt of een kolomnaam. We komen hier later nog op terug. Voorbeeld: (Sportvereniging) De informatievraag: Hoeveel spelers zitten er in het eerste jeugdteam? Het SQL-commando (de realisatie van de gegevensvraag): De gegevens komen uit de spelers -tabel, het selectie-criterium is teamnaam = ' Jeugd'. Deze selectie levert een aantal regels op. Dit aantal regels moeten wij laten tellen. Dit betekent dat wij COUNT moeten gebruiken. We zijn niet echt geïnteresseerd in het aantal spelersnummers of spelersnamen en dus hoeven wij niet te projecteren. We kunnen volstaan met de hele regels in de tabel te tellen. Dus: COUNT(*). SELECT COUNT(*) WHERE teamnaam = ' Jeugd' Het effect op het scherm is: COUNT(*) 8 Met COUNT(*) wordt het resultaat van de count aangegeven. Het telresultaat is 8. Voorbeeld: (Sportvereniging) De informatievraag: Hoeveel (verschillende) spelers hebben een boete? Hoe lossen we dit nu op? Het antwoord ligt min of meer voor de hand: wij maken gebruik van de operator DISTINCT. Het aantal verschillende spelersnr ' s moet namelijk geteld worden. Tussen de haakjes van COUNT zetten wij niet spelersnr, maar DISTINCT spelersnr. Het SQL-commando: Weer de boetes tabel, weer geen selectie, weer een projectie, maar nu alleen de verschillende spelersnr. SELECT COUNT ( DISTINCT spelersnr ) FROM boetes (C) Universitaire School voor Informatica SQL. 7 KUNijmegen

18 De functie SUM Een ander handige functie is de SUM-functie. Deze telt waarden in een numerieke kolom bijelkaar op en laat het totaal (de som) op het beeldscherm zien. Voor de penningmeester is dit natuurlijke een ideale functie. Hij hoeft geen rekenmachine te gebruiken om de totale schuld van de vereniging aan de sportbond te weten te komen. Met behulp van SUM kun je alleen de waarden in numerieke (SMALLINT, INTEGER of DECIMAL) kolommen laten optellen. Voorbeeld: (Sportvereniging) De informatievraag: Wat is het totaal bedrag aan boetes? Het SQL-commando: Analoog aan vorige voorbeelden: de tabel is boetes, er is geen selectie-criterium, de projectiekolom is bedrag, deze is numeriek, dus we kunnen de SUM-functie hier op laten werken. SELECT FROM SUM (bedrag) boetes Je krijgt op je beeldscherm te zien: SUM (bedrag) N.B. Let steeds goed op het verschil in betekenis en uiteraard in gebruik van enerzijds de functie COUNT(...) en anderzijds SUM (...). COUNT (...) staat voor het tellen van hoe vaak iets voorkomt en SUM (...) staat voor het optellen van (numerieke) gegevens, waardoor hun som bepaald wordt De functies MAX (..), MIN (..) en AVG (..) (AVeraGe = gemiddelde) SQL biedt via een aantal ingebakken functies de mogelijkheid om de grootste (lees: maximale) waarde in een reeks (lees: kolom) te vinden, evenals de kleinste (lees: minimale) en de gemiddelde waarde. Daarvoor zijn respectievelijk de functies MAX (..), MIN (..) en AVG (..) beschikbaar. Je kunt de functies MIN(..) en MAX(..) gebruiken op kolommen waarin de waarden alfanumeriek zijn. Alfanumeriek wil zeggen, dat de kolommen gedefinieerd moeten zijn als getal òf als tekst (dus: SMALLINT, INTEGER, DECIMAL of CHAR). Indien je MAX (plaatsnaam ) opvraagt, dan komt er de ' alfabetisch' grootste plaatsnaam uit (' Wijchen' Voor het bepalen van het gemiddelde van een reeks (lees: kolom) numerieke waarden, zou je uiteraard dat gemiddelde kunnen berekenen door alle te middelen waarden op te tellen (via de functie SUM(...) ) en de som ervan te delen door het aantal waarden (te bepalen via de functie COUNT(...) ) dat je hebt opgeteld. (Je zou dan daarna òf je rekenmachine kunnen gebruiken om dat gemiddelde te berekenen (door het gevonden aantal te delen op de som ) of [indien het SQL-systeem dat aankan] de delingsoperator ' /' gebruiken, zoals in bijvoorbeeld: SELECT SUM(bedrag) / COUNT(*) FROM boetes.) Om het je gemakkelijker te maken heeft men in SQL ook een aparte functie om het gemiddelde te berekenen. Deze functieheet ' AVG' (van average, dat is dus Engels voor gemiddelde). Uiteraard geldt hiervoor: deze functie AVG kan alleen op numerieke kolommen werken. Voorbeeld: (Sportvereniging) De informatievraag: Wat is de hoogste, de laagste en de gemiddelde boete die de speler met spelersnr heeft gekregen? Het SQL-commando (realisatie van de gegevensvraag): Achter FROM komt boetes, achter WHERE komt spelersnr=, achter SELECT komt bedrag (dat houdt een projectie in!). Omdat wij (o.a.) het grootste bedrag willen hebben, moeten we de MAX-functie echter op bedrag toepassen. bedrag komt dus achter MAX tussen haakjes te staan. Datzelfde geldt voor de MIN- en de AVG-functie. SELECT MAX (bedrag ), MIN (bedrag), AVG (bedrag) FROM boetes WHERE spelersnr = Op het scherm verschijnt: MIN (bedrag) MAX (bedrag) AVG (bedrag) 7.00 dus). (C) Universitaire School voor Informatica SQL. 8 KUNijmegen

19 3.3 SQL WHERE - Operatoren In tegenstelling tot de SQL SELECT operatoren, waarmee je aan geeft welke gegevens je precies wilt hebben (lees: selecteren), kun je met de WHERE operatoren aangeven aan welke voorwaarden deze gegevens moeten voldoen. We bespreken achtereenvolgens de (meeste van de) volgende SLQ-WHERE-operatoren:.. =.. moet gelijk zijn aan..... <>.. moet ongelijk zijn aan... (met hetzelfde effect als: NOT.. =.. ) <, >, >=, <= moet kleiner, groter... zijn aan... IN... komt voor in de verzameling waarden... BETWEEN.. AND... (inclusief grenzen) LIKE... lijkend op... (met wild cards ' _' en ' %' )... IS NULL test of een gegevensveld NULL (leeg; zonder waarde) is Bovendien kunnen we hier ' BOOLEAN' -operatoren gebruiken voor het combineren van voorwaarden en/of de ontkenning ervan: NOT... ontkenning van de erop volgende voorwaarde... AND... én de voorafgaande én de volgende voorwaarde... OR... óf de voorafgaande én/of de volgende voorwaarde 3.3. De IN -operator Eerder in dit hoofdstuk hebben we gezien dat condities, opgegeven bij het WHERE commando met elkaar gecombineerd kunnen worden door middel van de AND en OR operatoren. Willen we bijvoorbeeld alle spelers uit ' Nijmegen', ' Arnhem' en ' Eindhoven' selecteren, dan zou dit kunnen met het volgende SQL commando: SELECT * WHERE plaatsnaam = ' Nijmegen' OR plaatsnaam = ' Arnhem' OR plaatsnaam = ' Eindhoven' Zoals je ziet is dit nogal omslachtig. Er is in SQL dan ook een operator waarmee we hetzelfde effect op een gemakkelijker manier kunnen bereiken. Bij de IN operator kunnen we een lijst van mogelijke waarden opgeven. Bovenstaand voorbeeld ziet er met de IN operator nu zo uit: SELECT * WHERE plaatsnaam IN ( ' Nijmegen', ' Arnhem', ' Eindhoven' ) Het effect: Uitgangspunt is de spelerstabel zoals in figuur 3.2. Er is geen projectie dus alle gegevens worden getoond. Uitvoering van de IN operator levert een resultaat waarin alleen rijen voorkomen die de plaatsnamen ' Nijmegen', ' Arnhem' of ' Eindhoven' bevatten De BETWEEN -operator Ook met de BETWEEN -operator kunnen we een bepaalde conditie gemakkelijker opschrijven. Voorbeeld: (Sportvereniging) De informatievraag: Geef alle gegevens van de spelers met een spelersnummer tussen de 0 en de 20. Het SQL-commando (de realisatie van de gegevensvraag): SELECT * WHERE spelersnr >= 0 AND spelersnr <= 20 Alternatief: SELECT * WHERE spelersnr BETWEEN 0 AND 20 (C) Universitaire School voor Informatica SQL. 9 KUNijmegen

20 3.3.3 De LIKE -operator. Het is vaak zo dat een gebruiker niet precies weet hoe een bepaalde naam gespeld wordt. De naam ' Jansen' bijvoorbeeld kan op verschillende manieren geschreven worden. Voor dit soort gevallen is binnen SQL een speciale operator aanwezig, de LIKE operator. Met deze LIKE operator kunnen we een patroon opgeven waaraan een bepaald gegeven moet voldoen. Omdat we niet precies weten hoe het gezochte woord gespeld wordt hebben we speciale tekens nodig waarmee we kunnen aangeven dat we het niet precies weten. Als we bijvoorbeeld opschrijven spelernaam LIKE ' Jan%', dan bedoelen we daarmee dat de spelernaam moet beginnen met de letters ' Jan' gevolgd door een aantal (nul of meer) willekeurige tekens. Met een ander teken kunnen we aangeven dat we op een bepaalde plek precies één willekeurig teken willen zien. Het commando spelernaam LIKE ' Jan_' zorgt ervoor dat de spelernaam begint met de letters ' Jan' die worden gevolgd door precies één willekeurig teken. Voorbeeld: (Sportvereniging) De informatievraag: Geef alle gegevens van de spelers waarvan de spelernaam het patroon ' Jansen', ' Janssen', ' Janse' of ' Jansse' bevat. Het SQL-commando (de realisatie van de gegevensvraag): SELECT * WHERE spelernaam LIKE ' %Jans%' Opmerkingen: ) De net besproken operatoren kunnen ook in combinatie met de NOT operator gebruikt worden. Enkele voorbeelden van selectiecriteria met behulp van die NOT-operator zijn: WHERE NOT spelersnr BETWEEN 0 AND 20 òf: WHERE spelersnr NOT BETWEEN 0 AND 20 òf: WHERE spelernaam NOT LIKE ' %Jans%' òf: WHERE NOT spelernaam LIKE ' %Jans%' òf: WHERE plaatsnaam NOT IN ( ' Nijmegen', ' Arnhem', ' Eindhoven' ) ' Uiteraard' kunnen deze constructies gebruikt worden in combinatie met de andere Boolean operatoren (AND en OR). Bijvoorbeeld: WHERE ( NOT spelernaam LIKE ' %Jans%' ) AND ( plaatsnaam = ' Nijmegen' ) 2) Bij de invulling van onze sportverenigings-database komen weliswaar geen NULL-waarden voor, maar gezien het CREATE TABLE boetes-commando (uit paragraaf.2) zou het volgende selectiecriterium bij een andere tabelinvulling bruikbaar kunnen zijn (al dan niet in OR/AND/etc.-combinatie met andere criteria): WHERE bedrag IS NULL (of net: WHERE bedrag IS NOT NULL) 3.4 Ordenen met SQL Als we een gegevensvraag omzetten naar een SQL commando krijgen we de resultaten in de volgorde waarin ze in de tabel zijn ingevoerd op het scherm. Er kunnen echter gegevensvragen voorkomen waarbij we een andere volgorde willen hebben. Hiervoor is in SQL het ORDER BY commando opgenomen. Bij dit ORDER BY commando kunnen we een kolomnaam als volgordecriterium opgeven waarbij we dan ook nog kunnen opgeven of de volgorde van hoog naar laag of van laag naar hoog moet lopen. De standaard volgorde die bij het ORDER BY commando wordt aangehouden is van laag naar hoog (ASCending). We behoeven dit dus ook niet op te geven. Willen we de ordening van hoog naar laag willen hebben, dan kunnen we dat aangeven met behulp van het commando DESC(ending). Voorbeeld: (Sportvereniging) Het probleem: De penningmeester wil de gegevens uit de boetetabel in volgorde van het spelersnr op het scherm zien. Het SQL-commando (de realisatie van de gegevensvraag): SELECT * FROM boetes ORDER BY spelersnr (C) Universitaire School voor Informatica SQL. 20 KUNijmegen

21 Indien in bovenstaand voorbeeld het sorteren net andersom (van hoog naar laag) had moeten plaatsvinden, dan je de optie DESC(ending) als volgt moeten meegeven: SELECT * FROM boetes ORDER BY spelersnr DESC 3.5 Gegevensvragen met groepering binnen één tabel. Vaak zijn we níet zo geïnteresseerd in gegevens zoals die letterlijk in een gegevenstabel zijn opgeslagen, maar wél in een overzicht van afgeleide gegevens per persoon of per team etc.. We spreken dan over het ' groeperen' van gegevens op een bepaald aspect. In deze paragraaf zullen we het hebben over gegevensvragen met betrekking tot groeperen binnen een bepaalde tabel. Groepering van gegevens die (zoals nog te behandelen in hoofdstuk 4) over meerdere tabellen zijn verspreid, zullen we in dit korte overzicht van SQL-mogelijkheden níet bespreken Groeperen : het GROUP BY - commando Stel dat we het aantal spelers die in een bepaalde plaats wonen willen weten voor iedere plaats die voorkomt in de spelerstabel. Met de tot nu toe behandelde SQL-commando' s moeten we dan een fors aantal gegevensvragen opstellen (zie ook volgende bladzijde): SELECT FROM WHERE SELECT FROM WHERE SELECT FROM WHERE SELECT FROM WHERE SELECT FROM WHERE COUNT(*) spelers plaatsnaam = ' Arnhem' COUNT(*) spelers plaatsnaam = ' Eindhoven' COUNT(*) spelers plaatsnaam = ' Elst' COUNT(*) spelers plaatsnaam = ' Grave' COUNT(*) spelers plaatsnaam = ' Groesbeek'... en zo moeten we nog doorgaan met gelijksoortige vragen over Lent, Nijmegen, Oss, Tiel, Weurt en Wychen. Het is duidelijk dat dit nogal omslachtig is, en verder moeten we vooraf bepalen welke verschillende plaatsnamen er allemaal voorkomen in de tabel. Deze lijst van plaatsnamen zouden we eerst kunnen maken met behulp van het volgende SQL-commando: SELECT FROM DISTINCT plaatsnaam spelers Maar we zouden nog steeds een onbehoorlijk aantal SQL-commando' s moeten geven om voor iedere plaatsnaam uit te vinden hoeveel spelers er wonen. We zouden eigenlijk een commando willen hebben waarmee we in één keer een overzicht krijgen van het aantal spelers dat in elke, in de tabel voorkomende plaats, woont. We zullen zien dat dit kan met behulp van het GROUP BY commando. Het effect van dat GROUP BY commando is dat iedere berekening of functie in het SELECT gedeelte wordt toegepast op iedere individuele groep die we gespecificeerd hebben door middel van het GROUP BY commando. (C) Universitaire School voor Informatica SQL. 2 KUNijmegen

22 Ter voorbereiding zullen we eerst eens kijken naar het volgende SQL-commando: SELECT * ORDER BY plaatsnaam Het effect van dit SQL-commando kunnen we weergeven als in figuur 3.30 : Spnr Spelernaam Straatnaam Plaatsnaam Teamnaam groeps nummer 3 H. Nijboer Plein 44 Arnhem Dames 33 J. Mienen Ekkersrijt 23 Eindhoven Heren 34 H. Blaak Ekkersrijt 28 Eindhoven Jeugd2 28 W.Jansen Wolvendijk 3 Elst Jeugd2 37 R. van der El Wolvendijk 28 Elst Heren 42 R. Heymans Dreef 24 Grave Jeugd 30 D. van Agt De Beurs Groesbeek Jeugd 25 H. Fluit Snelweg 673 Lent Dames K. Huisman Annastraat 24 Nijmegen Heren P.J. van Onderen Willemstraat 3 Nijmegen Dames 8 F.G. Habank Vossendijk 288 Nijmegen Dames 9 H. Flits Zwanenveld Nijmegen Jeugd 7 M.E.P. Graag Broerdijk 234 Nijmegen Heren 24 T. Huisman Annastraat 24 Nijmegen Jeugd 36 D.F. Janssen Groenstraat 45 Oss Dames 44 P. van Oss Dreef 24 Oss Jeugd 40 G.E. Noeg Eindeweg 4 Tiel Jeugd2 4 P. van Oosterom Past. Pietstraat 4 Weurt Heren 32 K. Zwartjes Past. Pietstraat 2 Weurt Jeugd W. De Bom Huilstraat 67 Wychen Heren 0 L. Willemsen Kasteel 4 Wychen Jeugd 9 K. De Groot Huilstraat 63 Wychen Jeugd2 20 B.E. Melmans Kasteel 6 Wychen Jeugd2 23 W. De Bom Huilstraat 67 Wychen Jeugd Spnr = Spelersnr figuur 3.30 : sortering van de spelerstabel op plaatsnaam als voorbereiding op ' groeperen'. We zien in de tabel van figuur 3.30 dat er in de spelerstabel élf groepen zijn aan te duiden, corresponderend met de verschillende plaatsnamen. Opmerking: De nummering van de groepen (aan de rechterkant van deze tabel 3.30) is in de figuur met de hand aangebracht en komt normaal gesproken niet op het beeldscherm. (C) Universitaire School voor Informatica SQL. 22 KUNijmegen

23 Als we binnen de gehele spelerstabel het aantal spelers willen tellen, dan doen we dat met het volgende SQLcommando: SELECT COUNT (*) De resultaattabel is weergegeven in figuur 3.3: COUNT(*) 24 figuur 3.3 : Het totale aantal spelers in de spelerstabel. Het GROUP BY commando heeft op een normaal SQL commando het effect dat alle functies die in de SELECTregel voorkomen op iedere groep afzonderlijk worden toegepast. Als we nu het aantal spelers per plaatsnaam willen weten dan doen we dat met: SELECT plaatsnaam, COUNT (*) GROUP BY plaatsnaam Het effect van dit commando is weergegeven in figuur 3.32: Plaatsnaam COUNT(*) Arnhem Eindhoven Elst Grave Groesbeek Lent Nijmegen Oss Tiel Weurt Wychen figuur 3.32: Het aantal spelers (gegroepeerd) per plaatsnaam. Opmerking: Alle kolomnamen die bij de SELECT voorkomen, moeten ook in de GROUP BY voorkomen. Verder mogen in die eerste SELECT regel nog functies voorkomen die werken op zo' n "groep" rijen uit de gegevenstabel (b.v. COUNT (*) of SUM (bedrag) etc.). (C) Universitaire School voor Informatica SQL. 23 KUNijmegen

24 Voorbeeld: (Sportvereniging) Het probleem: De penningmeester van de sportvereniging stuurde eerst voor iedere boete een aparte rekening naar de betreffende speler. Uit het oogpunt van zuinigheid (portokosten) heeft hij nu besloten om voor iedere speler de verschillende boetes bij elkaar op te tellen en een gecombineerde rekening te sturen. Hierdoor is er meteen een beter overzicht over wat iedere speler nog moet betalen. De informatievraag: Geef de som van alle boetes per speler. De analyse van de informatievraag: De benodigde gegevens spelersnr en bedrag komen beide in de tabel boetes voor. ===== Intermezzo We bekijken hier eerst de inhoud van de kolommen ' spelersnr' en ' bedrag' uit de tabel boetes, waarbij de tabelregels zijn geordend op ' spelersnr', via het SQL - commando: SELECT FROM ORDER BY spelersnr, bedrag boetes spelersnr Met als resultaat op het beeldscherm: Spelersnr Bedrag figuur 3.33: Spelersnummers met boetebedragen, gesorteerd op spelersnummer Uit het verkregen overzicht van figuur 3.33 valt gemakkelijk te zien, dat het mogelijk moet zijn om bijvoorbeeld per speler de totaal verschuldigde boete te laten bepalen. We zullen daarvoor moeten laten groeperen op spelersnr. Dat kan met behulp van het hierna volgende SQLcommando. ===== Einde intermezzo (C) Universitaire School voor Informatica SQL. 24 KUNijmegen

25 Het SQL-commando: SELECT FROM GROUP BY spelersnr, SUM (bedrag) boetes spelersnr Geeft de volgende uitvoertabel: spelersnr SUM(bedrag) figuur 3.34: Spelersnummers met bijbehorende totaalbedragen van de boete per speler De HAVING - optie bij groeperen Het kan ook voorkomen dat we de gegevens van een bepaalde gegevensvraag alleen dan willen krijgen als er aan een bepaalde groeperings(!)-voorwaarde is voldaan. Dit kan bewerkstelligd worden met behulp van het HAVING commando. Voorbeeld: (Sportvereniging) Het probleem: We willen alleen die plaatsnamen met de bijbehorende spelersaantallen zien als er meer dan 4 spelers in de betreffende plaats wonen. Het SQL-commando: SELECT plaatsnaam, COUNT (*) GROUP BY plaatsnaam HAVING COUNT (*) > 4 Het effect: Plaatsnaam COUNT(*) Nijmegen 6 Wychen 5 figuur 3.35: resultaattabel van GROUP BY met HAVING-voorwaarde bij voorbeeld 3.20 (C) Universitaire School voor Informatica SQL. 25 KUNijmegen

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[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

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

Informatie & Databases

Informatie & Databases Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat

Nadere informatie

DATABASEBEHEER IN EXCEL

DATABASEBEHEER IN EXCEL DATABASEBEHEER IN EXCEL 1. LIJSTEN Een lijst is een reeks van rijen met gelijksoortige gegevens waarvan de eerste rij de labels (veldnamen) bevat. Een voorbeeld: Je kunt een lijst beschouwen als een eenvoudige

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

7. Het selecteren van gegevens

7. Het selecteren van gegevens 7. Het selecteren van gegevens 7.1. Inleiding Het doel van databases is het ontsluiten van gegevens. Een database wordt gebruikt om gegevens in op te slaan en te lezen. In dit hoofdstuk ga je door gebruik

Nadere informatie

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010 4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4.1 Starten met MS Access Als je het programma Microsoft Access

Nadere informatie

Sorteren, groeperen en totaliseren

Sorteren, groeperen en totaliseren 6 Sorteren, groeperen en totaliseren 6.1 Inleiding Een rapport maken begint met het selecteren van de tabellen en het plaatsen van de velden die u in uw rapport wilt afdrukken. Vervolgens sorteert, groepeert

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

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

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

= > >= < <= 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

Gebruikers Handleiding

Gebruikers Handleiding Gebruikers Handleiding (De SQL module) Versie 2.14 Pagina 2 van 14 Versie 2.14 Inhoudsopgave NGP SQL...5 Het Menu... 6 De instellingen... 7 De database informatie... 9 Het Script... 10 Pagina 3 van 14

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

Hoofdstuk 21: Gegevens samenvatten

Hoofdstuk 21: Gegevens samenvatten Hoofdstuk 21: Gegevens samenvatten 21.0 Inleiding In Excel kunnen grote (en zelfs ook niet zo grote) tabellen met getallen en tekst er nogal intimiderend uitzien. Echter, Excel komt helemaal tot haar recht

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

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens Info-books HA40c Toegepaste Informatica Handleiding Deel 40c : Gegevensbeheer en algoritmen in Access Jos Gils Erik Goossens Veldlengte Het maximale aantal tekens dat in een veld kan ingevoerd worden.

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

Van CaseTalk naar een database in SQLite studio

Van CaseTalk naar een database in SQLite studio Van CaseTalk naar een database in SQLite studio Dit document legt uit hoe je een SQL export uit CaseTalk kunt importeren in het DBMS (Database Management System) SQLite Studio. SQLIte studio is handig

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

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

SQL / Systeemanalyse

SQL / Systeemanalyse SQL / Systeemanalyse Wie ben ik Hans de Wit 44 jaar HBO BI in deeltijd gedaan Sinds 2008 werkzaam met BI / DWH med.hro.nl/wihan SQL De gegevens in een database vormen de grondstof voor informatie De informatie

Nadere informatie

COMPUTERWOORDEN.NL SQL - basis

COMPUTERWOORDEN.NL SQL - basis Inhoudsopgave... 1 Introductie: SQL... 7 SQL... 7 SQL geschiedenis...7 SQL dialecten...7 Basis SQL-commando's...8 CREATE TABLE... 8... 8... 8 Datatype...8 Grootte...10 Veldtype... 10 DELETE FROM... 10...

Nadere informatie

8. De invoer van gegevens

8. De invoer van gegevens 8. De invoer van gegevens 8.1. Inleiding Voor het invoeren van gegevens kan het DML-statement INSERT INTO worden gebruikt. Om dit statement correct te kunnen gebruiken, moet je wel antwoord weten op de

Nadere informatie

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester.

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester. In onderstaande oefeningen zijn kleuren gebruikt. Deze dienen aleen om de structuren makkelijker terug te kunnen herkennen. Ze worden niet standaard zo gebruikt. De dunne rood/roze balken zijn ook geen

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

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

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

Koppeling met een database

Koppeling met een database PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

3. Structuren in de taal

3. Structuren in de taal 3. Structuren in de taal In dit hoofdstuk behandelen we de belangrijkst econtrolestructuren die in de algoritmiek gebruikt worden. Dit zijn o.a. de opeenvolging, selectie en lussen (herhaling). Vóór we

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

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

5. Functies. In deze module leert u:

5. Functies. In deze module leert u: 5. Functies In deze module leert u: - Wat functies zijn; - Functies uitvoeren; - De verschillende functies van Calc kennen. - Naar een ander werkblad verwijzen. U kunt eenvoudige berekeningen, zoals aftrekken,

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

Relationele database. Het relationele model

Relationele database. Het relationele model Module SQL Relationele database. Een database, gegevensbank of databank is een verzameling van gegevens, ingericht met oog op makkelijke raadpleging en gebruik. Databases spelen een belangrijke rol in

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

INSTRUCT Samenvatting Praktijk Access 2010, H2 SAMENVATTING HOOFDSTUK 2

INSTRUCT Samenvatting Praktijk Access 2010, H2 SAMENVATTING HOOFDSTUK 2 SAMENVATTING HOOFDSTUK 2 Sorteren en filteren in een tabel Sorteren kun je met de knoppen (Oplopend) en (Aflopend). Hiermee zet je records in alfabetische of numerieke volgorde. Er wordt gesorteerd op

Nadere informatie

Lab Webdesign: Javascript 3 maart 2008

Lab Webdesign: Javascript 3 maart 2008 H5: OPERATORS In dit hoofdstuk zullen we het hebben over de operators (of ook wel: operatoren) in JavaScript waarmee allerlei rekenkundige en logische bewerkingen kunnen worden uitgevoerd. Daarbij zullen

Nadere informatie

Systeemontwikkeling, Hoofdstuk 6, Query s, macro s en rapporten in MS Access 2010

Systeemontwikkeling, Hoofdstuk 6, Query s, macro s en rapporten in MS Access 2010 6. Query s, macro s en rapporten In dit hoofdstuk zetten we de puntjes op de i. Alle processen zullen in de aangemaakte formulieren met de gebruikersmenu s van de secretaris, penningmeester en wedstrijdsecretaris,

Nadere informatie

2.4.4 LibreOffice Werkblad Mac

2.4.4 LibreOffice Werkblad Mac 2.4.4 LibreOffice Werkblad Mac Deze cursus bestaat uit 4 delen. 1. Werkblad gebruiken voor berekeningen 2. Werkblad gebruiken voor het maken van lijsten 3. Werkblad gebruiken voor een (eenvoudige) boekhouding

Nadere informatie

Breuken met letters WISNET-HBO. update juli 2013

Breuken met letters WISNET-HBO. update juli 2013 Breuken met letters WISNET-HBO update juli 2013 De bedoeling van deze les is het repeteren met pen en papier van het werken met breuken. Steeds wordt bij gebruik van letters verondersteld dat de noemers

Nadere informatie

Bijlage Inlezen nieuwe tarieven per verzekeraar

Bijlage Inlezen nieuwe tarieven per verzekeraar ! Bijlage inlezen nieuwe tarieven (vanaf 3.2) Bijlage Inlezen nieuwe tarieven per verzekeraar Scipio 3.303 biedt ondersteuning om gebruikers alle tarieven van de verschillende verzekeraars in één keer

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

4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen.

4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4.1 Starten met MS Access Als je het programma Microsoft Access

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

2.2 Een tabel ontwerpen

2.2 Een tabel ontwerpen 2.2 Een tabel ontwerpen 2.2.1 Gegevens analyse Alvorens de tabellen van een database te kunnen gaan opzetten, dient u eerst te bepalen, welke gegevens daarin moeten worden opgenomen. Bepaal eerst het doel

Nadere informatie

Excel reader. Beginner Gemiddeld. bas@excel-programmeur.nl

Excel reader. Beginner Gemiddeld. bas@excel-programmeur.nl Excel reader Beginner Gemiddeld Auteur Bas Meijerink E-mail bas@excel-programmeur.nl Versie 01D00 Datum 01-03-2014 Inhoudsopgave Introductie... - 3 - Hoofdstuk 1 - Databewerking - 4-1. Inleiding... - 5-2.

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

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

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

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

PROGRAMMA 2011-2012. Vak: informatica..

PROGRAMMA 2011-2012. Vak: informatica.. Vak: informatica.. Laag: Havo-. PROGRAMMA 2011-2012 week leerstof dagen toets overig 34-26.08 zomervakantie Bespreking PTA-404 Deze week: uitreiking van de Praktische Opdracht Programmeren Herhaling theorie

Nadere informatie

Basisvaardigheden Microsoft Excel

Basisvaardigheden Microsoft Excel Basisvaardigheden Microsoft Excel Met behulp van deze handleiding kun je de basisvaardigheden leren die nodig zijn om meetresultaten van een practicum te verwerken. Je kunt dan het verband tussen twee

Nadere informatie

Databases gebruiken. Databases gebruiken

Databases gebruiken. Databases gebruiken Databases gebruiken In deze module wordt van de kandidaat verwacht dat hij een goed begrip heeft van databases en aantoont competent te zijn in het gebruik van een database. Doel van de module De kandidaat:

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

Excel. Inleiding. Het meest gebruikte spreadsheet programma is Excel.

Excel. Inleiding. Het meest gebruikte spreadsheet programma is Excel. Excel Inleiding Het woord computer betekent zoiets als rekenmachine. Daarmee is is eigenlijk aangegeven wat een computer doet. Het is een ingewikkelde rekenmachine. Zelf voor tekstverwerken moet hij rekenen.

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

Hoofdstuk 16: Zoek- en verwijzingsfuncties

Hoofdstuk 16: Zoek- en verwijzingsfuncties Hoofdstuk 16: Zoek- en verwijzingsfuncties 16.0 Inleiding Eén van de belangrijkste functies binnen Excel is de mogelijkheid om te zoeken naar een specifieke waarde binnen een groot aantal cellen met gegevens.

Nadere informatie

Samenvoeging document syntax

Samenvoeging document syntax Samenvoeging document syntax Kleos beschikt over een interne model- en tekstblokbewerker om de aanmaak en de bewerking van modellen en tekstblokken mogelijk te maken. U kunt hiervoor echter ook een externe

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

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports) Labels en Rapporten in Atlantis 1 Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports) Rapporten Een rapport is eigenlijk altijd een tekst bestand, die vorm wordt gegeven

Nadere informatie

Excel voor beginners (3) Handleiding van Helpmij.nl

Excel voor beginners (3) Handleiding van Helpmij.nl Excel voor beginners (3) Handleiding van Auteur: Corverm Mei 2008 Excel voor beginners deel 3. Vorige delen: Deel 1 Deel 2 In het vorige deel hebben we beloofd om iets te gaan maken i.v.m. het EK voetbal,

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

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

Handleiding enquetemaken.be

Handleiding enquetemaken.be Hoofdstuk : Starten met je eigen enquête - Registreren - Enquete Maken - Instellingen Hoofdstuk 2 : Opstellen van de vragenlijst - Vragen maken - Vraagtypes - Vragenlijst beheren - Vertakkingen invoeren

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

1. Introductie tot SPSS

1. Introductie tot SPSS 1. Introductie tot SPSS Wat is SPSS? SPSS is een statistisch computerprogramma dat door wetenschappers wordt gebruikt om gegevens te verzamelen, analyseren en te bewerken. Het wordt voornamelijk gebruikt

Nadere informatie

Handleiding bij de Booktest Generator

Handleiding bij de Booktest Generator Handleiding bij de Booktest Generator Het programma voor het maken van toetsen bij boeken. (c) 2005/2009 Visiria Uitgeversmaatschappij Twisk Inleiding Onze dank voor het aanvragen van de Booktest Generator.

Nadere informatie

HANDLEIDING Q1600 Fashion

HANDLEIDING Q1600 Fashion HANDLEIDING Q1600 Fashion Pag.: 1 Inhoudsopgave Inleiding...3 Beheer...4 Kleurlijsten beheren...4 Kleurlijst groep aanmaken...6 Kleurlijst groep verwijderen...6 Kleuren (kleurnummers) aanmaken/wijzigen...7

Nadere informatie

1.3 Rekenen met pijlen

1.3 Rekenen met pijlen 14 Getallen 1.3 Rekenen met pijlen 1.3.1 Het optellen van pijlen Jeweetnuwatdegetallenlijnisendat0nochpositiefnochnegatiefis. Wezullen nu een soort rekenen met pijlen gaan invoeren. We spreken af dat bij

Nadere informatie

Databanken - les 2.

Databanken - les 2. Databanken - les 2 joost.vennekens@kuleuven.be http://www.cs.kuleuven.be/~joost/dn/ Bv. tennisclub Onze tennisclub heeft een aantal spelers, die allemaal een uniek spelersnummer hebben. Soms krijgt een

Nadere informatie

Samenvoegen met Word en Excel 2010

Samenvoegen met Word en Excel 2010 Samenvoegen met Word en Excel 2010 Inhoudsopgave Samenvoegen Word-Excel / Mailingen... 2 Tip Samenvoegvelden automatisch markeren... 4 Tip Installeer PDF-creator... 7 Tip Sla het Word-document en Excel-document

Nadere informatie

Macro s. 4.2 Een macro maken

Macro s. 4.2 Een macro maken 4.2 Een macro maken Een macro is een reeks van commando s die u kunt maken en die een programma uitvoeren. Wanneer u de macro in zijn geheel uitvoert, dan worden de acties opeenvolgend uitgevoerd. Elk

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

8.8 Records selecteren

8.8 Records selecteren 8.8 Records selecteren Voor het maken van een uittreksel van één of meerdere records die aan een bepaald criterium voldoen, maakt u gebruik van het 'Filter'. 8.8.1 Automatisch filter Klik in het gebied

Nadere informatie

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III Combinatorische Algoritmen: Binary Decision Diagrams, Deel III Sjoerd van Egmond LIACS, Leiden University, The Netherlands svegmond@liacs.nl 2 juni 2010 Samenvatting Deze notitie beschrijft een nederlandse

Nadere informatie

www.dubbelklik.nu Handleiding Access 2010

www.dubbelklik.nu Handleiding Access 2010 www.dubbelklik.nu Handleiding Access 2010 Deze handleiding is onderdeel van Dubbelklik, een lesmethode Technologie, ICT/ Loopbaanoriëntatie en Intersectoraal Alle rechten voorbehouden. Niets uit deze uitgave

Nadere informatie

Startgids 061 Nieuw product aanmaken en wijzigen

Startgids 061 Nieuw product aanmaken en wijzigen Startgids 061 Nieuw product aanmaken en wijzigen In deze startgids wordt uitleg gegeven hoe u nieuwe producten kunt aanmaken en wijzigen in de Safe Concept webapplicatie. Inhoud Een nieuw product aanmaken

Nadere informatie

11 Selecties. Selectie versus snelselectie Planon FacilityOffice SE kent naast selecties ook nog snelselecties. Wat is nu het verschil?

11 Selecties. Selectie versus snelselectie Planon FacilityOffice SE kent naast selecties ook nog snelselecties. Wat is nu het verschil? 11 Selecties Met behulp van de selectiefunctie bepaalt u welke elementen, bijvoorbeeld objecten, orders of personen u in de elementensectie wilt opnemen. U kunt bijvoorbeeld alle objecten uit het bouwjaar

Nadere informatie

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet. Les C-02: Werken met Programma Structuur Diagrammen 2.0 Inleiding In deze lesbrief bekijken we een methode om een algoritme zodanig structuur te geven dat er gemakkelijk programmacode bij te schrijven

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

Databanken - les 2.

Databanken - les 2. Databanken - les 2 joost.vennekens@kuleuven.be http://www.cs.kuleuven.be/~joost/dn/ Samenvattend Probleemstelling ER-Diagramma Databank definitie Gegevens invoeren Gegevens opvragen Huiswerk! Practicum

Nadere informatie

In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip:

In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip: FORMULIEREN In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip: belangrijk Importeer formulierdata uit een CSV-bestand precies zoals verderop beschreven. 1. Gedrag

Nadere informatie