SQL
1 Introductie phpMyAdmin en SELECT
🎯 Leerdoelen
- Je weet hoe je XAMPP en phpMyAdmin gebruikt.
- Je kunt een database importeren.
- Je weet wat SQL is.
- Je kunt gegevens ophalen met
SELECT
enFROM
.
💡 Uitleg
In deze eerste opdracht werk je met een database met informatie over films. Je gebruikt de SELECT
-instructie om gegevens op te halen uit de tabel movies
.
Je voert verschillende queries uit om de inhoud van de tabel te verkennen.
Wat is SQL precies?
SQL staat voor Structured Query Language. Het is een programmeertaal die speciaal is ontworpen om te "praten" met databases. Een database is eigenlijk gewoon een heel goed georganiseerde verzameling van gegevens. Denk bijvoorbeeld aan de databases van:
- Instagram: met alle gebruikers, foto's, likes en reacties.
- Fortnite: met alle spelers, hun skins, V-Bucks en statistieken.
- Een webshop: met alle producten, prijzen en voorraad.
Met SQL kun je deze databases vragen stellen (queries) of opdrachten geven.
Wat heb je nodig?
- XAMPP (Apache en MySQL moeten aan staan)
- De database
mdb_movies.sqlsql
XAMPP en phpMyAdmin
We gaan gebruik maken van phpMyAdmin.
phpMyAdmin is eenonderdeel van XAMPP en wordt veel gebruikt om met datbases te werken. Je kan databases aanmaken, verwijderen, aanpassen en inzien.
Je kunt phpMyAdmin pas opstarten als je XAMPP goed draait; Apache en mySQL staan aan.
Start localhost/phpmyadmin
Stappen om de database te importeren:
- Start Apache en MySQL via het XAMPP Control Panel.
- Ga naar
http://localhost/phpmyadmin
in je browser. - Maak een nieuwe database aan met de naam
imdb_movies
. - Selecteer de database en gebruik het tabblad Import om het bestand
imdb_movies.sql
te importeren.
Kom je er niet uit: hier staat met plaatjes uitgelegd hoe je een database importeert.
🛠️ Opdracht
- Je hebt de database imdb_movies.sql geimporteerd
- Voer de volgende drie SQL-query’s uit op de tabel
movies
:SELECT * FROM movies;
SELECT title FROM movies;
SELECT title, rating FROM movies;
Heb je meer uitleg nodig over hoe je query maakt, hier staat een voorbeeld met plaatjes)
- Bekijk het resultaat van elke query. Wat valt je op?
🧠 Reflectie
- Welke kolommen lijken jou het nuttigst als je een lijst met filmaanbevelingen zou maken?
- Wat is het verschil tussen
SELECT *
enSELECT kolomnaam
?
📤 Inleveren
- Maak een screenshot waarbij je laat zien dat je een query hebt uitgevoerd op de database imdb_movies.
- Beantwoord de refelctievragen en lever die in (txt of pdf).
2 WHERE en logica
🎯 Leerdoelen
- Je kunt gegevens filteren met
WHERE
. - Je begrijpt het gebruik van logische operatoren zoals
=
,>
,<
,AND
, enOR
. - Je kunt AI gebruiken om een query te genereren en deze zelf controleren en verbeteren.
💡 Uitleg
Met SELECT
haal je gegevens op. Met WHERE
kun je die gegevens filteren. Bijvoorbeeld: alleen landen met een hoge geluksindex, of alleen landen uit Europa.
We gebruiken de database mod-mysql-basic-worldhappiness.sql. Deze bevat o.a. tabellen jaar2015
en jaar2016
met kolommen als country
, region
, rank
en score
.
Voorbeelden:
SELECT * FROM jaar2016 WHERE score > 7000;
SELECT country, region FROM jaar2015 WHERE region = "Western Europe";
SELECT country, score FROM jaar2016 WHERE region = "Western Europe" AND score > 7300;
🛠️ Opdracht
- Importeer de database mod-mysql-basic-worldhappiness.sql in phpMyAdmin en selecteer de database
worldhappiness
. - Voer de volgende query's uit en controleer het resultaat:
- Selecteer alle landen uit de tabel
jaar2015
. - Selecteer alleen
country
enscore
uitjaar2016
. - Selecteer alle regio's uit 2015.
- Selecteer alle scores hoger dan 7200 in 2016.
- Selecteer landen uit de regio "Western Europe" in 2015.
- Selecteer alle landen uit de tabel
- Gebruik ChatGPT om een extra query te genereren waarbij je gebruik maakt van
OR
.
🧠 Reflectie
- Welke query vond je het lastigst en waarom?
- Welke filters heb je gebruikt? Noem minstens twee logische operatoren.
- Wat heeft AI (ChatGPT) goed gedaan, en wat moest je zelf aanpassen?
📤 Inleveren
- Lever de zelf gemaakte query (opdrachtstap 3) in en leg uit in eigen woorden hoe die werkt.
3 Aggregatiefuncties
🎯 Leerdoelen
- Je kunt gebruik maken van SQL-functies zoals
COUNT()
,AVG()
,SUM()
,MIN()
enMAX()
. - Je kunt kolommen hernoemen met
AS
(alias). - Je begrijpt het verschil tussen
SELECT
van rijen en het samenvatten van gegevens.
💡 Uitleg
Aggregatiefuncties worden gebruikt om samenvattingen te maken van gegevens in een kolom. Ze voeren een berekening uit op meerdere rijen tegelijk in plaats van één rij.
Belangrijkste functies:
Functie | Doel | Voorbeeld |
---|---|---|
COUNT() |
Telt hoeveel rijen er zijn | SELECT COUNT(*) FROM players; |
AVG() |
Geeft het gemiddelde van een kolom met getallen | SELECT AVG(wage) FROM players; |
SUM() |
Telt alle waarden in een kolom bij elkaar op | SELECT SUM(value) FROM players; |
MIN() |
Laat de kleinste waarde zien | SELECT MIN(age) FROM players; |
MAX() |
Laat de grootste waarde zien | SELECT MAX(value) FROM players; |
Alias gebruiken met AS
Je kunt je resultaatkolom een duidelijke naam geven met het sleutelwoord AS
.
SELECT AVG(wage) AS gemiddeld_loon FROM players;
Bonus: afronden met ROUND()
SELECT ROUND(AVG(wage)) AS gemiddeld_loon_afgerond FROM players;
🛠️ Opdracht
Gebruik de database mod-mysql-basic-fifa2018.sql
- Voer de volgende queries uit in phpMyAdmin:
- Toon het gemiddelde loon van alle spelers bij Ajax.
- Toon de totale waarde van spelers onder de 20 jaar.
- Toon het hoogste loon van een speler bij FC Utrecht.
- Toon het aantal spelers uit Nederland.
- Toon het gemiddelde loon van alle Braziliaanse spelers, afgerond op hele euro's.
- Gebruik bij elke query een duidelijke alias via
AS
.
🧠 Reflectie
- Wat is het voordeel van een samenvattende query (zoals
AVG()
) in plaats van het handmatig bekijken van individuele rijen? - Welke query vond je het lastigst en waarom?
📤 Inleveren
- Lever een .txt-bestand in met alle 5 query’s.
Vergeer de aliasen niet!