LauwersCollege Buitenpost Informatica Informatica deel 2 Hoofdstuk 10 en 11 Tabellen Relationele databases en SQL: basis Database managementsysteem functies subquery twee tabellen exists sleutel enz SQL: wijzigen LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Rundvee administratie We gaan in deze presentatie alle voorbeelden betrekken op een database waarin de administratie van rundveehouderijen wordt bijgehouden Bedenk na elke opgave zelf wat de sql-query zal zijn, druk dan op PageDown of klik op de muis LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Rundvee administratie: De tabellen en velden Kolommen of Velden Bedrijven Koeien Tabellen Jaarprod LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica SQL: structured query language begin met select, eindig met ; Geef naam, adres en plaats van het bedrijf met nummer 213 Select naam,adres,plaats From bedrijven Where bedrijfsnr=‘213’ ; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica select * betekent: druk alle kolommen af Geef alle gegevens van de koeien van het bedrijf met nummer 213 gesorteerd op geboortedatum Select * From koeien Where bedrijfsnr=‘213’ Order by gebdat ; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica distinct betekent: duplicaten worden voorkomen Geef een lijstje van alle plaatsen waar bedrijven zijn gevestigd (elke plaats maar één keer tonen) Select distinct plaats From bedrijven ; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Samengestelde voorwaarde met where: gebruik and , soms ook or Geef de nummers van de koeien die in 2002 een melkproductie hadden van meer dan 8000 kg. Select koenr From jaarprod Where jaar=‘2002’ and kgmelk>8000; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Wildcards: * staat voor een wille-keurig aantal tekens ? staat voor één wille-keurig teken in Access. Gebruik like Geef naam, adres en plaats van alle bedrijven waarvan de postcode met 92 begint Select naam, adres, plaats From bedrijven Where postcode like ‘92*’ ; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Count( .. ) betekent: tel de rijen Geef het aantal koeien dat ze op het bedrijf met nummer 213 hebben Select count(*) From koeien Where bedrijfsnr=‘213’ ; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Sum( .. ) betekent: geef de som van alle getallen in de kolom .. (Zo heb je ook max(..),min(..),avg(..) ) Geef het totaal aantal kg. melk dat in 2002 is gemolken Select sum(kgmelk) From jaarprod Where jaar=‘2002’ ; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Group by en count(..): verdeel in groepjes en tel de aantallen daarin Geef een lijstje van alle bedrijfsnummers met het aantal koeien op dat bedrijf Select bedrijfsnr, count(*) From koeien Group by bedrijfsnr; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Group by en sum(..): verdeel in groepjes en tel de getallen in kolom .. op N.B.:achter group by en achter select altijd dezelfde kolomnamen zetten ! Geef een lijstje van alle koe-nummers met het aantal kg. melk dat ze in totaal hebben gegeven Select koenr, sum(kgmelk) From jaarprod Group by koenr; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Having: voorwaarde (gebruikt bij group by) die betrekking heeft op sum(..) of count(..) of avg(..) of max(..) of min(..) Geef een lijstje van alle moeders die meer dan 10 kinderen hebben Select moeder, count(*) From koeien Group by moeder Having count(*)>10; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Een subquery Geef het nummer van de koe die in 2002 de grootste hoeveelheid melk gaf Select koenr from jaarprod where Kgmelk=(select max(kgmelk) from jaarprod where jaar=‘2002’) ; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Subquery met in Geef een lijstje van de koenummers van de koeien van bedrijven die gevestigd zijn in Oenkerk Select koenr from koeien Where bedrijfsnr in (select bedrijfsnr from bedrijven where plaats = ‘Oenkerk’) ; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Twee tabellen gebruiken: denk om de koppel-voorwaarde Geef van koenr 213 de geboorte-datum en de naam en plaats van het bijbehorende bedrijf Select gebdatum,naam,plaats From bedrijven, koeien Where koenr=‘213’ and bedrijven.bedrijfsnr=koeien.bedrijfsnr; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Drie tabellen gebruiken: dan heb je twee koppel-voorwaarden Geef een lijstje met de nummers en de geboorte-data van de koeien en de naam en plaats van het bedrijf van de koeien die in 2002 meer dan 8000 kg. melk gaven. Select koeien.koenr,gebdat,naam,plaats From bedrijven, koeien, jaarprod Where kgmelk>8000 and jaar=‘2002’ and bedrijven.bedrijfsnr=koeien.bedrijfsnr and koeien.koenr=jaarprod.koenr; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Exists en not exists Geef alle bedrijfsnrs van bedrijven die geen koeien hebben die meer dan 8000 kg. melk hebben gegeven Select distinct bedrijfsnr from koeien Where not exists (select koenr From jaarprod where kgmelk>8000 And jaarprod.koenr=koeien.koenr); LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Taken van een databasesysteem Het opslaan van gegevens en het mogelijk maken van wijzigingen Het kunnen opvragen van informatie en het verwerken van informatie Het bewaken van de integriteit (dus het voorkomen van fouten) LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica (Primaire) Sleutel van een tabel Een kolom die uniek is In elke rij moet een waarde in de sleutelkolom zijn ingevuld en deze waarden zijn allemaal verschillend In het strokendiagram wordt de sleutel aangegeven met een dubbele pijl LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Verwijzing of referentie-sleutel Een kolom waarnaar verwezen wordt Het controleren van de verwijzingen noem je het bewaken van de referentiële integriteit Dit heeft gevolgen voor de volgorde van invullen van de database; je moet eerst de tabel bedrijven invullen, daarna de tabel koeien want als je daar het bedrijfsnr invult wordt gecontroleerd of dat voorkomt in de tabel bedrijven. LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Het type van een kolom Een veld kan tekst, getallen, datums, enz bevatten. Dat kun je in Access aangeven Getallen: Integer,Smallint,Real,enz. Tekst: bijv. char(15) Je hebt ook het type Date en Time Tekst moet tussen aanhalingstekens, getallen niet (SQL: where name=‘Piet’ , where kgmelk= 8000) LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Het type van een kolom Het type kun je in Access aan-geven als je op de tabel klikt, en dan op ont-werpen. Bij Gegevenstype het type in-voeren, bij veldlengte of notatie kun je dat verfijnen LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Validatieregel: controle van invoer Je kun in Access regels vastleggen waarmee invoer gecontroleerd kan worden: Klik op een tabel, dan op ontwerpen Voer bijv. bij het veld geslacht als validatie-regel in: =“m” or =“v” LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Database wijzigen met SQL Opvragen van informatie gaat met Select Toevoegen van regels met Insert Wijzigen van regels met Update Verwijderen van regels met Delete Tabel maken met Create Table LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica SQL: Toevoegen met insert Er is een kalfje geboren op 05-11-2003, het koenummer wordt 1245, het nummer van de moeder is 756, van de vader 877, het nummer van het bedrijf is 2003 Insert into koeien (koenr,vader,moeder,gebdat,bedrijfsnr) Values (‘1245’,’877’,’756’,’05-11-2003’,’2003’); LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica SQL: Wijzigen met update Het kalfje met nr. 1245 van de vorige dia wordt verkocht, het nummer van het nieuwe bedrijf is 1765 Update koeien Set bedrijfsnr=‘1765’ Where koenr=‘1245’; LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica SQL: Verwijderen met delete Het kalfje met nr. 1245 van de vorige dia is ziek geworden en helaas overleden. Het kan uit de database worden verwijderd. Delete from koeien Where koenr=‘1245’; Einde LauwersCollege Buitenpost Informatica