Aan het eind van deze les ken je de opbouw van Structured Query Language (SQL) en kan je zelf een simpele query schrijven.
Slide 2 - Slide
SQL?
SQL staat voor Structured Query Language
SQL is een vraagtaal voor het opvragen van gegevens uit een database
Je vraagt gegevens op met een zogenaamde query
Slide 3 - Slide
Praktijkvoorbeeld App Fastfood keten
Slide 4 - Slide
Welke informatie biedt de app?
Producten
Productcategorieën
Klanten
Bestellingen
Bestelregels
Relationeel model
Slide 5 - Slide
Tabellen
De database van de app bestaat dus uit meerdere tabellen.
Slide 6 - Slide
Een eenvoudige query (1)
We willen alle klantgegevens uit de tabel klant opvragen.
SELECT * FROM klant
Resultaat
Slide 7 - Slide
Een eenvoudige query (2)
We willen uit de tabel klant alleen de e-mailadressen opvragen.
SELECT emailadres FROM klant
ERD
Slide 8 - Slide
Nu jullie!
URL database:
Gebruikersnaam:
Wachtwoord:
Slide 9 - Slide
Voer deze query's eens uit
SELECT * FROM klant
SELECT naam FROM klant
SELECT naam, emailadres FROM klant
timer
3:00
Slide 10 - Slide
Maak deze query's
Haal van alle producten de naam op
Geef de naam van alle productcategoriën op
timer
3:00
ERD
Slide 11 - Slide
Query met een voorwaarde (1)
De tabel product heeft een attribuut met de naam "formaat"
We willen een query gaan schrijven die de naam en de prijs weergeeft van producten met formaat "large".
We stellen nu dus een voorwaarde aan het resultaat
Slide 12 - Slide
Query met een voorwaarde (2)
Geef de naam en de prijs van alle producten met formaat "large"
De SQL query ziet er dan als volgt uit
SELECT naam, prijs FROM product WHERE formaat = "large"
Resultaat
Slide 13 - Slide
Query met een voorwaarde (3)
Geef de naam van alle producten die duurder zijn dan €3
De SQL query ziet er dan als volgt uit
SELECT naam FROM product WHERE prijs > 3
Resultaat
Slide 14 - Slide
Voer de query's zelf eens uit
timer
3:00
SELECT naam, prijs
FROM product
WHERE formaat = "large"
SELECT naam
FROM product
WHERE prijs > 3
Slide 15 - Slide
Relatieoperatoren
= gelijk aan
!= niet gelijk aan
> groter dan
>= groter dan of gelijk aan
< kleiner dan
<= kleiner dan of gelijk aan
Slide 16 - Slide
Nu jullie weer, maak deze query's
Geef de naam van alle producten met meer dan 600 caloriën
Geef de naam en de prijs van alle producnten met meer dan 25 mg suiker
timer
3:00
ERD
Slide 17 - Slide
Twee voorwaarden tegelijk (1)
Geef de naam van alle producten die meer dan 600 caloriën bevatten en meer dan 25 mg suiker bevatten.
SELECT naam
FROM product WHERE calorieen < 600 AND suiker < 25
Slide 18 - Slide
Twee voorwaarden tegelijk (2)
Geef de naam van alle producten die meer dan dan 600 caloriën bevatten ofduurder zijn dan €4.
SELECT naam
FROM product WHERE calorieen < 600 OR prijs < 4
Slide 19 - Slide
Voer de query's zelf eens uit
timer
3:00
SELECT naam
FROM product
WHERE calorieen < 600
AND suiker < 25
SELECT naam
FROM product
WHERE calorieen < 600
OR prijs < 4
Slide 20 - Slide
Zoeken in meerdere tabellen
Het zoeken van informatie in één tabel is handig, maar bij een database hebben diverse tabellen een relatie met elkaar. De relatie wordt gelegd met de vreemde sleutel.
Met een SQL query moet je dus kunnen zoeken in meer dan één tabel tegelijkertijd. Dit doe je met JOIN
Slide 21 - Slide
Voorbeeld
We willen de namen van de producten bij alle bestelregels. In de tabel bestelregel wordt van een product de product_id bijgehouden. Dit is een vreemde sleutel die verwijst naar het attribuutid in de tabel product.
Denk even goed na wat hierboven staat. Maak gebruik van de ERD.
ERD
Slide 22 - Slide
Voorbeeld (vervolg)
Stap 1 is het ophalen van de product_id uit de tabel bestelregel.
SELECT bestelregel.product_id
FROM bestelregel
Slide 23 - Slide
Voorbeeld (vervolg)
Stap 2 is het ophalen van de naam van het product uit de tabel product.
SELECT bestelregel.product_id, product.naam
FROM bestelregel
INNER JOIN product
ON product.id=bestelregel.product_id
Slide 24 - Slide
Nu jullie weer
Maar de SQL query die bij alle bestellingen de naam van de klant weergeeft.
Slide 25 - Slide
Antwoord
SELECT bestelling.klant_id, klant.naam
FROM bestelling
INNER JOIN klant
ON klant.id=bestelling.klant_id
Slide 26 - Slide
Nog een stapje verder...
Je wil vaak maar heel specifieke gegevens uit een database halen. Bijvoorbeeld de naam van alle producten die zijn besteld bij bestelling met id 11. Je moet dan nog een voorwaarde meegeven om alleen die gegevens te zien.
Slide 27 - Slide
Nog een stapje verder...
Stap 1
Om de naam van alle bestelde producten van bestelling met nummer (id) 11 weer te geven hebben om te beginnen product_id nodig uit de tabel bestelregel. Met de product_id uit de tabel bestelregel kunnen we nu uit de tabel product de naam ophalen. We willen alleen de naam van de producten zien uit bestelling 11. Dus wel moeten nog een voorwaarde stellen dat dit dus alleen geldt voor bestelling_id 11.