Databases en SQL (les 4 t/m 6): Verder met SQL

databases & SQL
Verder met SQL: Structuur van een database en gekoppelde tabellen
1 / 52
suivant
Slide 1: Diapositive
InformaticaMiddelbare schoolhavo, vwoLeerjaar 4

Cette leçon contient 52 diapositives, avec quiz interactifs et diapositives de texte.

time-iconLa durée de la leçon est: 45 min

Éléments de cette leçon

databases & SQL
Verder met SQL: Structuur van een database en gekoppelde tabellen

Slide 1 - Diapositive

Leerdoel
Je begrijpt wat een primaire sleutel en een vreemde sleutel zijn, kent de term redundantie, en weet wat een Entity Relationship Diagram is en hoe je deze kunt toepassen. Daarnaast kun je gegevens uit meerdere tabellen selecteren door ze te koppelen via een gemeenschappelijke kolom.

Slide 2 - Diapositive

Unieke waarden
Een database bestaat in de regel uit meerdere tabellen:
  • In één databasetabel zullen NOOIT twee exact dezelfde rijen
  • Hierdoor worden dubbele waarden voorkomen
  • Dit maakt een database
     efficiënt en betrouwbaar






Slide 3 - Diapositive

De primaire sleutel
Door de primaire sleutel is elke rij uniek
Deze sleutel is meestal één kolom (soms meer)
De primaire sleutel mag nooit NULL zijn

Dat heet entiteitsintegriteit
  • Er op kunnen vertrouwen dat elke rij ook echt uniek is







Slide 4 - Diapositive

De refererende of vreemde sleutel
Om tabellen te koppelen moeten primaire sleutels van de ene tabel ook in een andere tabel voorkomen

In die andere tabel heet dit dan een refererende, verwijzende of vreemde sleutel








Slide 5 - Diapositive

Redundantie (dubbele data)
  • Als een database onnodig dubbele data bevat noemen we   dat redundantie (=overtolligheid)
  • Als je op meer dan één plek dezelfde gegevens moet aanpassen bij   een wijziging, is er sprake van redundantie
  • Een uitzondering zijn refererende sleutels
  • Redundatie maakt een database minder betrouwbaar (integer)
  • Het voorkomen van redundantie maakt je database consistenter.









Slide 6 - Diapositive

Relationele databases
  • Bij een goede relationele database hebben (vrijwel) alle tabellen   een duidelijke relatie met minimaal één andere tabel
  • Een schema van een relationele database heet een ERD (Entity   Relationship Diagram)
  • Een tabel wordt ook wel entiteit genoemd










Slide 7 - Diapositive

Voorbeeld eenvoudig ERD
Een ERD van de eerder gebruikte
FastFood-database beschrijft de:

  • Entiteiten (tabellen)
  • onderlinge Relaties












Slide 8 - Diapositive

Gekoppelde tabellen
Veel queries maken gebruikt van gekoppelde tabellen
Je kunt informatie uit gekoppelde tabellen samenvoegen met een query


Je gebruikt daarbij het INNER JOIN statement












Slide 9 - Diapositive

Twee tabellen in een query
‘Geef bij elke bestelling de klantgegevens van de bijbehorende klant’

Slide 10 - Diapositive

Resultaat INNER JOIN
‘Geef bij elke bestelling de klantgegevens van de bijbehorende klant’

Slide 11 - Diapositive

Resultaat INNER JOIN
De koppeling maakt duidelijk dat Noa twee bestellingen heeft gedaan

Slide 12 - Diapositive

Resultaat INNER JOIN
Dit is duidelijk omdat klant_id 10 (van Noa) bij 2 bestellingen voorkomt

Slide 13 - Diapositive

Zelf proberen
Ga naar Fundament -> C5 -> 3. Verdieping: verder met SQL -> 3.2 Raadplegen van meer dan één tabel








En kies voor
SQL uitvoeren

Slide 14 - Diapositive

3.2 Gekoppelde tabellen - vraag 1
'Geef een overzicht van de bestelnummers en datum/tijdstippen van de bestellingen die gedaan zijn door de klant met
het e-mailadres 'fiorella_hoekstra@gomail.nl'.

  1. Bepaal het id van de klant
  2. Koppel (JOIN) de tabellen met dit id
  3. Toon de gevraagde kolommen



timer
1:00

Slide 15 - Diapositive

Tot hoeveel resultaten (rijen) leidde voorgaande query?

Slide 16 - Question ouverte

3.2 Gekoppelde tabellen - antwoord 1
Overzicht van bestelnummers en datum/tijdstippen van bestellingen gedaan zijn door klant 'fiorella_hoekstra@gomail.nl' - Deze klant heeft 7 bestellingen gedaan.

SELECT bestelling.id, datum, tijd
FROM klant
INNER JOIN bestelling ON bestelling.klant_id = klant.id
WHERE emailadres = 'fiorella_hoekstra@gomail.nl'


Koppel de tabellen met de kolom klant_id uit de tabel bestelling en de kolom id uit de tabel klant. Dit komt achter INNER JOIN te staan. Let op de volgorde! Eerst komt SELECT, daarna FROM en dan INNER JOIN. Pas hierna komt WHERE.

Slide 17 - Diapositive

Meer dan twee tabellen in een query
‘Geef bij de bestelling met id 47 de bijbehorende producten en aantallen

Slide 18 - Diapositive

Leerdoel gehaald?
Je begrijpt wat een primaire sleutel en een vreemde sleutel zijn, kent de term redundantie, en weet wat een Entity Relationship Diagram is en hoe je deze kunt toepassen. Daarnaast kun je gegevens uit meerdere tabellen selecteren door ze te koppelen via een gemeenschappelijke kolom.

Slide 19 - Diapositive

Maken: 2 & 3.1 t/m 3.2
  • Bekijk: Fundament -> C5 -> 2. Structuur van een database 
  • Bekijk: Fundament -> C5 -> 3. Verdieping: verder met SQL -> 3.1 t/m   3.2 
  • Maak: 3.2 -> vraag 2, 3, 4 en 5.

Slide 20 - Diapositive

Databases & SQL
Verder met SQL: Functies en keywords en groeperen

Slide 21 - Diapositive

Leerdoel
Je kunt SQL-functies en keywords zoals COUNT, SUM en AVG en DISTINCT gebruiken en weet hoe je gegevens kunt groeperen voordat je deze in een functie toepast.

Slide 22 - Diapositive

Rijen tellen - COUNT(*)
‘Hoeveel klanten staan er in de database?’


Slide 23 - Diapositive

Waarden tellen - COUNT(<kolom>)
‘Hoeveel klanten hebben een achternaam?’





Dus COUNT(*) telt aantal rijen, COUNT(<kolom>) het aantal keer dat een unieke waarde voorkomt in een kolom

Slide 24 - Diapositive

Waarden optellen - SUM(<kolom>)
‘Hoeveel producten zijn er totaal besteld van product 8?’






Slide 25 - Diapositive

Functieoverzicht

Slide 26 - Diapositive

Zelf proberen
Ga naar Fundament -> C5 -> 3. Verdieping: verder met SQL -> 3.3 Functies en keywords








En kies voor
SQL uitvoeren

Slide 27 - Diapositive

3.3 Het duurste product - vraag 1
'Wat is de prijs van het duurste product?'





timer
1:00

Slide 28 - Diapositive

Wat is de prijs van het duurste product?

Slide 29 - Question ouverte

3.1 Het duurste product - antwoord 1
'Wat is de prijs van het duurste product?'

SELECT MAX(prijs) AS 'Prijs duurste product'
FROM product

Met de functie MAX krijg je de grootste kolomwaarde

Slide 30 - Diapositive

Het keyword DISTINCT
Gebruik het keyword DISTINCT om dubbele waarden uit de resultaten te filteren.






Slide 31 - Diapositive

Groeperen
‘Geef het aantal bestelde producten per bestelling






Dit is het aantal zonder uitsplitsing op bestelling.







Slide 32 - Diapositive

Groeperen op een bepaalde kolom
‘Geef het aantal bestelde producten per bestelling






Dit is het aantal uitgesplitst per bestelling.







Slide 33 - Diapositive

Zelf proberen
Ga naar Fundament -> C5 -> 3. Verdieping: verder met SQL -> 3.4 Groeperen








En kies voor
SQL uitvoeren

Slide 34 - Diapositive

3.4 Bestellingen per klant - vraag 1
'Geef een overzicht waarin te zien is hoeveel bestellingen er bij ieder klantnummer horen.'





timer
1:00

Slide 35 - Diapositive

Hoeveel verschillende klantnummers hebben er bestellingen gedaan?

Slide 36 - Question ouverte

3.4 Bestellingen per klant - antwoord 1
'Geef een overzicht waarin te zien is hoeveel bestellingen er bij ieder klantnummer horen.'

SELECT klant_id, COUNT(*)
FROM bestelling
GROUP BY klant_id

Voor een overzicht met bestellingen per klant moet je groeperen op klant. Dit doe je door het klant_id te gebruiken, dat is voor iedere klant uniek. Het tellen van de bestellingen gaat met de functie COUNT, die de rijen telt. Iedere bestelling is immers een rij. 

Slide 37 - Diapositive

Leerdoel gehaald?
Je kunt SQL-functies en keywords zoals COUNT, SUM en AVG en DISTINCT gebruiken en weet hoe je gegevens kunt groeperen voordat je deze in een functie toepast.

Slide 38 - Diapositive

Maken: 3.3 t/m 3.4
  • Bekijk: Fundament -> C5 -> 3. Verdieping: verder met SQL -> 3.3 t/m   3.4 
  • Maak: 3.3 -> vraag 2, 3, 8, 9 en 13.
  • Maak: 3.4 -> vraag 2, 4 en 5.

Slide 39 - Diapositive

Databases & SQL
Verder met SQL: Voorwaarden aan groepen en subquery's

Slide 40 - Diapositive

Leerdoel
Je kunt voorwaarden stellen aan een groepering met HAVING in plaats van WHERE. Ook kun je subquery's gebruiken en ken je het gebruik van operatoren zoals IN en NOT IN en logische operatoren zoals =, > en < binnen subquery's.

Slide 41 - Diapositive

Voorwaarde aan gegroepeerde waarden
‘Welke bestellingen bestonden uit meer dan 20 producten?’


Slide 42 - Diapositive

Voorwaarde aan gegroepeerde waarden
‘Welke bestellingen bestonden uit meer dan 20 producten?’


Slide 43 - Diapositive

WHERE en HAVING tegelijk
‘Welke bestellingen uit 2018 bestonden uit meer dan 1 product?’


Slide 44 - Diapositive

Zelf proberen
Ga naar Fundament -> C5 -> 3. Verdieping: verder met SQL -> 3.5 Voorwaarden aan groepen








En kies voor
SQL uitvoeren

Slide 45 - Diapositive

3.5 Dubbele klantnamen - vraag 1
'Geef een overzicht van de klantnamen die meerdere keren voorkomen. Toon ook het aantal keer dat deze klantnaam voorkomt.'





timer
1:00

Slide 46 - Diapositive

Hoeveel klantnamen komen meerdere keren voor?

Slide 47 - Question ouverte

3.5 Dubbele klantnamen - antwoord 1
'Geef een overzicht van de klantnamen die meerdere keren voorkomen.'

SELECT naam, COUNT(*) AS aantal
FROM klant
GROUP BY naam
HAVING COUNT(*) > 1

In deze vraag gaat het om klantnamen. Dat moet je dus op groeperen. De voorwaarde is dat de namen meerdere keren voor moeten komen. Bij HAVING moet je dus rijen tellen met COUNT. De uitkomst hiervan moet groter zijn dan 1.

Slide 48 - Diapositive

Resultaat van een query in een andere query gebruiken
‘Geef alleen de naam van het duurste product



Slide 49 - Diapositive

Als het resultaat uit meerdere rijen bestaat
‘Geef de namen van de producten die nog nooit zijn besteld’




Slide 50 - Diapositive

Leerdoel gehaald?
Je kunt voorwaarden stellen aan een groepering met HAVING in plaats van WHERE. Ook kun je subquery's gebruiken en ken je het gebruik van operatoren zoals IN en NOT IN en logische operatoren zoals =, > en < binnen subquery's.

Slide 51 - Diapositive

Maken: 3.5 t/m 3.6
  • Bekijk: Fundament -> C5 -> 3. Verdieping: verder met SQL -> 3.5 t/m   3.5 
  • Maak: 3.5 -> vraag 2 en 3.
  • Maak: 3.4 -> vraag 2, 3 en 4.

Slide 52 - Diapositive