Informaticasite van het Sondervick College te Veldhoven                 © L.J.M van Haperen (bron : R.J. van der Beek)
 
[De tabellen]   [De opdrachten]   [SQL-uitleg]  

SQL op de bibliotheek-database

  § 1. De tabellen

De vragen van paragraaf 2 hebben betrekking op de database BIBLIOTHEEK
Die database bestaat uit zes tabellen:

LEERLINGEN
LLNRVOORNAAMTUSSENVOEGSELACHTERNAAMSTRAATHUISNUMMER
POSTCODEPLAATSTELEFOONGESLACHTGEB_DATUMKLAS

AUTEURS
AUTEURNRVOORNAAMVOORLETTERSTUSSENVOEGSELACHTERNAAMGEB_JAARSTERF_JAAR

BOEKEN
BOEKNRAUTEURNRTITELPUB_JAARAANTALPAGSGENRERUBRIEK

EXEMPLAREN
EXNRBOEKNRUITLEENBAARSTATUS

UITLENINGEN
BOEKNREXNRLLNRDATUM_UITDATUM_TERUGBOETE

RESERVERINGEN
BOEKNRLLNRDATUM_RESERVERINGDATUM_BESCHIKBAARKOSTEN_BETAALDSTATUS



Misschien ontdek je bij het uitproberen van de queries dat de tabellen niet meer de juiste gegevens bevatten. Je kunt namelijk zelf de inhoud van de tabellen veranderen m.b.v. INSERT, UPDATE en DELETE.
Wil je dat de tabellen LEERLINGEN, AUTEURS, BOEKEN, EXEMPLAREN en RESERVERINGEN de oorspronkelijke gegevens weer bevatten, klik dan op oorspronkelijke tabellen herstellen

Wil je dat de tabel UITLENINGEN de oorspronkelijke gegevens weer bevat, klik dan op oorspronkelijke tabel UITLENINGEN herstellen

  § 2. Opdrachten


Je moet bij de volgende opdrachten steeds queries maken, die kun je hieronder uitproberen.
Voer de query in, dan wordt hij door MySQL verwerkt.

         Voer hier de query in:
         

         

1. Maak de volgende sql-queries m.b.t. de database Bibliotheek
a. Maak een lijst van alle leerlingen (voornaam, achternaam, klas) gesorteerd op klas, en binnen de klas op de achternaam (en noteer de query om die lijst te maken, niet de lijst zelf. Dat geldt steeds !)
b. Maak een lijst van alle auteurs (voornaam, achternaam, geboortejaar), gesorteerd op achternaam en bij gelijke achternaam op geboortejaar.
c. Maak een lijst van alle boeken (titel, rubriek) gesorteerd op rubriek, en binnen de rubriek op titel.
 
2. Distinct
a. Maak een lijst van de boeknummers die wel eens zijn uitgeleend. Sorteer ze in oplopende volgorde.
b. Maak een lijst van alle klassen, die in de gegevensbank voorkomen.
 
3. Voorwaarden met where
a. Welke leerlingen hebben de achternaam Dijkstra ? (geef de voornaam en de achternaam)
b. Welke schrijvers zijn na 1900 geboren ? (geef de voornaam, achternaam en geboortejaar)
c. Welke boeken vallen niet in de rubriek Nederlands ?
d. Welke boeken zijn er van Gerard Reve in de bibliotheek (Er zijn twee SQL-query's nodig!)
d. Welke leerlingen hebben een boete van meer dan twee euro gehad ?
 
4. Like, and, or
a. Welke leerlingen hebben de lettercombinatie 'an' in hun naam ? (geef de voornaam en de achternaam)
b. Welke leerlingen uit klas 6 (dus 6a of 6b) wonen in Utrecht aan de Julianaweg ? (geef de voornaam, achternaam, klas, adres en woonplaats)
c. Welke leerlingen uit de vierde klas zijn na 1 juni 1991 geboren ? (geef de voornaam, achternaam, klas, geboortedatum)
N.B. Een datum moet je in Access (als je met SQL werkt) tussen hekjes # typen, dus 1 juni 1991 tik je in als #1-jun-1991#
d. Welke leerlingen wonen in Bunnik of Schalkwijk ? (geef de voornaam, achternaam, adres en woonplaats))
e. Komt de schrijver William Somerset Maugham voor bij de auteurs ?
 
5. Functies: max, min, count, average, sum
a. Wat is de grootste boete, die iemand heeft moeten betalen ?
b. Wat is de gemiddelde boete die werd opgelegd, gerekend over alle uitleningen ?
c. Wat is de geboortedatum van de oudste leerling? En wat van de jongste ?
d. Hoeveel boeken zijn er in reparatie ?
 
6. Group by
a. Maak een lijstje van aantallen leerlingen per woonplaats (dus een lijstje van alle plaatsen met daarachter het aantal leerlingen uit die plaats)
b. Maak een lijstje waarin het aantal jongens en het aantal meisjes staat
c. Maak een overzicht van de aantallen jongens en meisje per klas.
d. Maak een lijstje waarin het aantal boeken per rubriek staat.
 
7. Subqueries (Subqueries werken niet in Mysql, doe het in Mysql in twee keer)
a. Wie is de oudste leerling in de database (geef voornaam, achternaam, geboortedatum)
b. Kun je IN DE QUERY VAN vraag 16a het beste WHERE GEB_DATUM = gebruiken of WHERE GEB_DATUM IN ? Leg uit waarom.
c. Welke boeken in de rubriek Nederlands zijn in reparatie ? (geef de titel en de rubriek)
d. Van welke auteurs werden er boeken gereserveerd ? (geef de voornaam en achternaam)
e. Er is een exemplaar van "Hoe vreselijk is dit alles" van Marten Toonder beschadigd. Welke leerling kan dat op zijn geweten hebben ?
 
8. Twee tabellen gebruiken
a. Maak een lijst van auteurs en de titels van hun boeken, die in de bibliotheek zijn (voornaam en achternaam van de auteur, titel van het boek)
b. Maak een lijst van leerlingen en de boetes die ze hebben betaald (alleen degenen die echt een boete hebben gehad, dus als er in de kolom boete 0,00 staat moet die niet worden afgedrukt)
c. Welke boeken zijn er van schrijvers uit de negentiende eeuw (geef de titel, de voornaam en achternaam en geboortedatum van de auteur)
d. Van welke auteurs zijn er boeken in reparatie ? (geef de titel en de status van het boek, de voornaam en achternaam van de auteur)
e. Maak een lijstje van de boeken uit de categorie Nederlands, die zijn uitgeleend aan leerlingen uit de zesde klas (geef de titel van het boek en de categorie, en de voornaam en achternaam en klas van de leerling)
 
9. Having
a. Maak een lijstje van de plaatsen waar minstens tien leerlingen wonen (geef de plaatsnaam en het aantal leerlingen uit die plaats)
b. Maak een lijstje van de auteurs, waarvan meer dan vijf boektitels aanwezig zijn (geef de voornaam, achternaam, en aantal boektitels)
c. Maak een lijstje van de boeken, die meer dan tien keer zijn uitgeleend (geef de titel en het aantal keren uitgeleend)
 
10. Not exists (werkt niet in mysql, want dit moet met subqueries)
a. Maak een lijstje van de boeken, die nog nooit zijn uitgeleend (geef alleen de titels)
b. Welke leerlingen hebben nog nooit een nederlands boek geleend (geef voornaam en achternaam)
c. Welke leerlingen hebben in totaal meer dan € 5,- aan boete betaald (geef voornaam en achternaam en de totale hoeveelheid boete, denk er om dat de leerlingen vaker dan één keer boete kunnen krijgen!)
 
11. Ingewikkelde queries
a. Maak een lijstje met alle openstaande uitleningen (geef titel boek, naam auteur, naam en klas van leerling). Ga er daarbij vanuit dat het vandaag 3 maart 2006 is.
b. Er komt iemand in de bibliotheek die het boek Giph! van Ronald Giphart wil lenen. Ga met een query na of er een uitleenbaar exemplaar is dat aan hem uitgeleend kan worden.
c. Maak een lijst van alle uitgeleende boeken waarvan de uitleentermijn verstreken is. Ga er daarbij vanuit dat het vandaag 3 maart 2006 is, en dat de uitleentermijn drie weken is.
d. Een leerling brengt het boek Figuranten van Arnon Grunberg, met boeknummer 66, terug op 3 maart 2006. Schrijf een query die nagaat of er een reservering voor dat boek is en welke leerling in dat geval die reservering gedaan heeft.
e. Maak een lijstje van boeken, met titel en auteur, waarin per boek is aangegeven hoe vaak het is uitgeleend.
 
12. Insert, update, delete
a. Er is een nieuw boek voor de bibliotheek gekocht, en dit moet in de database worden ingevoerd. Het gaat om het boek Kathys dochtervan Tim Krabbé (auteurnr. 124). Het is gepubliceerd in 2004, het heeft 207 pagina's, het genre is roman, en het hoort bij de rubriek nederlands. Het boek krijgt boeknr. 328
Geef de query waarmee je dit boek kunt invoeren.
b. Er is nog een nieuw boek voor de bibliotheek gekocht, en dit moet ook in de database worden ingevoerd. Het gaat om het boek Het instituutvan Vincent Bijlo. Het is gepubliceerd in 2005, het heeft 112 pagina's, het genre is novelle, en het hoort bij de rubriek nederlands. Het boek krijgt boeknr. 329
De auteur Vincent Bijlo komt nog niet voor bij de namen van de auteurs, die moet ook nog worden ingevoerd. Hij krijgt auteurnummer 191, en zijn geboortejaar is 1965.
Voer het boek en de auteur beide in m.b.v. een SQL-query.
c. Rafael Menendez is verhuisd naar Veldwachterserf 14 in Houten, postcode 3991 KW. Voer dit in m.b.v. een SQL-query.
e. Er is een exemplaar van het boek Giph! van Ronald Giphart zoekgeraakt. Het is exemplaar nr. 2 van boeknummer 185, en dit kan verwijderd worden uit de tabel EXEMPLAREN. Zorg dat dit gebeurt m.b.v. een SQL-query.