De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Informatica klas 5 Hoofdstuk 9 Relationele databases en SQL Inleiding SQL: basis twee tabellen.

Verwante presentaties


Presentatie over: "LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Informatica klas 5 Hoofdstuk 9 Relationele databases en SQL Inleiding SQL: basis twee tabellen."— Transcript van de presentatie:

1 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Informatica klas 5 Hoofdstuk 9 Relationele databases en SQL Inleiding SQL: basis twee tabellen functies oefeningen subqueries exists

2 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Een aantal termen Database Gegevensbank = verzameling van gegegevens DBMS Database Management systeem Relationeel model Een manier om een database te organiseren, nl. met tabellen Een rij in de tabel: Alle gegevens van een bepaalde kaart of record Kolommen in de tabel: Worden ook wel velden genoemd Een aantal DBMS’en: Access Filemaker Oracle MySQL

3 LauwersCollege Buitenpost 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)

4 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Voorbeeld database Tabel: LEERLINGEN LLNR - VOORNAAM - TUSSENVOEGSEL - ACHTERNAAM - STRAAT - HUISNUMMER - POSTCODE - PLAATS - TELEFOON - GESLACHT - GEB_DATUM - KLAS Tabel: AUTEURS AUTEURNR - VOORNAAM - VOORLETTERS - TUSSEN- VOEGSEL - ACHTERNAAM - GEB_DATUM - STERF_JAAR Tabel: BOEKEN BOEKNR - AUTNR - TITEL - RUBRIEK Tabel: EXEMPLAREN EXNR - BOEKNR - UITLEENBAAR - STATUS De voorbeelden op de volgende dia’s hebben betrekking op de database Bibliotheek, met de volgende tabellen:

5 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Kolommen met alleen een nummer Er komen kolommen voor die alleen maar een nummer bevatten: LLNR / AUTEURNR / BOEKNR / EXNR Reden: Een nummer is altijd uniek. Je kunt twee leerlingen met exact dezelfde naam hebben, maar de leerlingennummers verschillen altijd. Met een nummer kun je gemakkelijk verwijzen naar een andere tabel.

6 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL in Access Basisstructuur van een eenvoudige query

7 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: select en from SELECT:Achter SELECT geef je de kolommen op die je in de uitvoer wilt zien. Zet je achter select een sterretje in plaats van kolomnamen, dan krijg je de inhoud van alle kolommen op het scherm. FROM: Achter FROM geef je de naam van de tabel (of tabellen) waaruit deze kolommen komen.

8 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SELECTVOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROMLEERLINGEN ORDER BY ACHTERNAAM Je kunt ook op twee of meer kolommen laten sorteren, door achter ORDER BY de twee kolommen op te geven. SQL: order by Door de opdracht ORDER BY wordt de lijst gesorteerd.

9 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: desc SELECT VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROM LEERLINGEN ORDER BY3 DESC DESC betekent: Aflopend (Descending), dus van Z naar A. Als er niets vermeld wordt (of ASC = ascending) wordt oplopend gesorteerd. Nu wordt op de 3e kolom gesorteerd (ACHTERNAAM)

10 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: distinct SELECTPLAATS FROM LEERLINGEN Het resultaat is een lange rij van plaatsnamen. Die plaatsnamen kunnen meerdere keren voorkomen. SELECTDISTINCT PLAATS FROMLEERLINGEN Door DISTINCT wordt elke plaats maar één keer afgedrukt.

11 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: where Er kunnen voorwaarden worden gesteld aan de rijen, die moeten worden afgedrukt. SELECT FROM WHERE VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM LEERLINGEN GESLACHT = "M" Voorwaarden geef je achter het sleutelwoord: WHERE Alleen de leerlingen, die als geslacht M hebben, worden afgedrukt

12 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: like Je mag wildcards gebruiken bij de voorwaarden, maar je moet dan geen = maar like als vergelijkingsoperator gebruiken. SELECT FROM WHERE VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM LEERLINGEN VOORNAAM like "M*" Alle leerlingen, waarvan de voornaam met een M begint, worden afgedrukt

13 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL:Wildcards en vergelijkingsoperatoren: % _ = Standaard SQL: er mag alles staan (ook meer tekens) Standaard SQL: één willekeurig teken Kleiner dan / groter dan Kleiner dan of gelijk aan / groter dan of gelijk aan Niet gelijk aan * In Access: er mag alles staan (ook meerdere tekens) In Access: één willekeurig teken ?

14 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: is null SELECT * FROM LEERLINGEN WHERE TELEFOON IS NULL Dit betekent: Er is niets ingevuld

15 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: Samengestelde voorwaarden Als er aan meer dan één voorwaarde moet worden voldaan gebruik je AND SELECT * FROM LEERLINGEN WHERE ACHTERNAAM = "Bakker" AND TUSSENVOEGSEL = "de" AND VOORNAAM = "Jantine" Alleen de gegevens van Jantine de Bakker worden afgedrukt

16 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: OR Deze OR is niet exclusief. D.w.z.: rijen die aan allebei de voorwaarden voldoen worden ook afgedrukt. SELECT * FROM LEERLINGEN WHERE KLAS = "4A" OR KLAS = "4B" Leerlingen die in klas 4A of 4B zitten worden afgedrukt, dus je krijgt een lijstje van de leerlingen van 4a en van 4b Als aan de ene of aan de andere voorwaarde moet worden voldaan gebruik je OR

17 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Functies in SQL SUM(KOLOMNAAM) MAX(KOLOMNAAM) MIN(KOLOMNAAM) AVG(KOLOMNAAM) De gemiddelde waarde in de kolom COUNT(KOLOMNAAM) De kleinste waarde in de kolom De grootste waarde in de kolom De som van alle getallen in de kolom Het aantal getallen of woorden in de kolom

18 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: subqueries We willen weten welke leerling de hoogste boete heeft betaald na het lenen van een boek Dat doen we eerst m.b.v. twee queries, of als je de naam van de leerling ook wilt weten, zelfs drie 1: Wat is de maximale boete die betaald is? 2: Welke leerling(en) moesten die boete betalen? Daarna laten we zien hoe het ook met één query kan m.b.v. subqueries

19 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SELECT MAX (BOETE) FROM UITLENINGEN We gaan eerst de maximale boete uitzoeken m.b.v. een query: Dan zoeken we uit welk leerlingennummer uit de tabel UITLENINGEN bij die maximale boete hoort. Die maximale boete blijkt 4 euro te zijn SELECT LLNR FROM UITLENINGEN WHERE BOETE = 4 Deze twee queries gaan we combineren tot een query Deze twee queries gaan we combineren tot één query SQL: subqueries

20 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: subqueries SELECT LLNR FROM UITLENINGEN WHERE BOETE = ( SELECT MAX (BOETE) FROM UITLENINGEN ) Dit is een subquery Nu weet je alleen het LLNR en nog niet de naam. Als je die wilt weten moet er nog een subquery bij. Die staat op de volgende dia

21 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: subqueries SELECT NAAM, KLAS FROM LEERLINGEN WHERE LLNR IN (SELECTLLNR FROMUITLENING WHERE BOETE = ( SELECT MAX(BOETE) FROM UITLENINGEN ) )

22 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: Tabellen combineren BoeknrAuteurnrTitelPub_jaarRubriek 8847De woeste wandeling1981nederl 8948Jan van Gent1968nederl We willen weten wie de auteur is van het boek met de titel: De woeste wandeling. Daarvoor moeten we twee tabellen combineren: AUTEURS en BOEKEN Tabel Boeken: Tabel Auteurs: AuteurnrVoornaamAchternaamGeb_jaar 47Willem FrederikHermans WardHermans Deze nummers moeten gelijk zijn Deze nummers moeten gelijk zijn

23 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: subqueries SELECT TITEL, VOORNAAM, ACHTERNAAM FROM BOEKEN, AUTEURS WHERE TITEL = "De woeste wandeling" AND BOEKEN.AUTEURNR = AUTEURS. AUTEURNR Dit noem je een join Denk bij een query met twee tabellen altijd om de join (zie hierboven) De query, die de naam van de auteur van het boek met de titel De woeste wandeling levert, is:

24 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: GROUP BY Met GROUP BY kun je groeperen: de rijen van een kolom worden ingedeeld in groepen, die dezelfde gegevens in een kolom hebben. Daar kun je dan een functie op toepassen, bijv. het aantal rijen tellen, of de getallen optellen. SELECT PLAATS, COUNT(*) FROMLEERLINGEN GROUP BYPLAATS Voorbeeld: geef de plaatsen, waar leerlingen wonen, met het aantal leerlingen per plaats Het aantal per plaats wordt geteld

25 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: HAVING SELECT PLAATS, COUNT(*) FROMLEERLINGEN GROUP BYPLAATS HAVINGCOUNT(*) > 5 Alleen de plaatsen waar meer dan vijf leerlingen wonen worden afgedrukt Stel je bij het gebruik van GROUP BY een extra voorwaarde aan de uitkomst van de functie, dan doe je dat met HAVING

26 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica SQL: Exists SELECT VOORNAAM, ACHTERNAAM FROMLEERLINGEN WHERE NOT EXISTS ( SELECT * FROM UITLENINGEN Die zijn er dus niet! Geef de leerlingen die nooit een boek geleend hebben De query, waarin je om de boeken vraagt die de leerling heeft geleend, moet geen resultaten opleveren! WHERE UITLENINGEN.LLNR = LEERLINGEN.LLNR)

27 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Er komen nu een aantal vragen die betrekking hebben op een database waarin de administratie van rundveehouderijen wordt bijgehouden SQL-oefeningen Bedenk na elke opgave zelf wat de sql-query zal zijn, druk dan op PageDown of klik op de muis

28 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Bedrijven Rundvee administratie: De tabellen en velden Koeien Jaarprod Tabellen Kolommen of Velden

29 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef naam, adres en plaats van het bedrijf met nummer 213 Select naam,adres,plaats SQL, de basis From bedrijven Where bedrijfsnr=‘213’ ;

30 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef alle gegevens van de koeien van het bedrijf met nummer 213 gesorteerd op geboortedatum Select * Alle kolommen From koeien Where bedrijfsnr=‘213’ Order by gebdat ;

31 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef een lijstje van alle plaatsen waar bedrijven zijn gevestigd (elke plaats maar één keer tonen) Select distinct plaats Duplicaten voorkomen From bedrijven ;

32 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef de nummers van de koeien die in 2002 een melkproductie hadden van meer dan 8000 kg. Select koenr Samengestelde voorwaarde From jaarprod Where jaar=‘2002’ and kgmelk>8000;

33 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef naam, adres en plaats van alle bedrijven waarvan de postcode met 92 begint Select naam, adres, plaats Wildcards From bedrijven Where postcode like ‘92*’ ;

34 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef het aantal koeien dat ze op het bedrijf met nummer 213 hebben Select count(*) De rijen tellen From koeien Where bedrijfsnr=‘213’ ;

35 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef het totaal aantal kg. melk dat in 2002 is gemolken Select sum(kgmelk) De som van alle getallen in een kolom From jaarprod Where jaar=‘2002’ ;

36 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef een lijstje van alle bedrijfsnummers met het aantal koeien op dat bedrijf Select bedrijfsnr, count(*) Verdeel in groepjes en tel de aantallen daarin From koeien Group by bedrijfsnr;

37 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef een lijstje van alle koe- nummers met het aantal kg. melk dat ze in totaal hebben gegeven Select koenr, sum(kgmelk) Groeperen From jaarprod Group by koenr; N.B.:achter group by en achter select altijd dezelfde kolomnamen zetten !

38 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef een lijstje van alle moeders die meer dan 10 kinderen hebben Select moeder, count(*) Having From koeien Group by moeder Having count(*)>10;

39 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef het nummer van de koe die in 2002 de grootste hoeveelheid melk gaf Select koenr Een subquery from jaarprod where Kgmelk=(select max(kgmelk) from jaarprod where jaar=‘2002’) ;

40 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef een lijstje van de koenummers van de koeien van bedrijven die gevestigd zijn in Oenkerk Select koenr from koeien Subquery met in Where bedrijfsnr in (select bedrijfsnr from bedrijven where plaats = ‘Oenkerk’) ;

41 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef van koenr 213 de geboorte- datum en de naam en plaats van het bijbehorende bedrijf Select gebdatum,naam,plaats Twee tabellen gebruiken From bedrijven, koeien Where koenr=‘213’ and bedrijven.bedrijfsnr=koeien.bedrijfsnr;

42 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica 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 Drie tabellen gebruiken From bedrijven, koeien, jaarprod Where kgmelk>8000 and jaar=‘2002’ and bedrijven.bedrijfsnr=koeien.bedrijfsnr and koeien.koenr=jaarprod.koenr;

43 LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Geef alle bedrijfsnrs van bedrijven die geen koeien hebben die meer dan 8000 kg. melk hebben gegeven Select distinct bedrijfsnr from koeien Exists en not exists Where not exists (select koenr From jaarprod where kgmelk>8000 And jaarprod.koenr=koeien.koenr); Einde


Download ppt "LauwersCollege Buitenpost LauwersCollege Buitenpost Informatica Informatica klas 5 Hoofdstuk 9 Relationele databases en SQL Inleiding SQL: basis twee tabellen."

Verwante presentaties


Ads door Google