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 - Tekstslide
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 - Tekstslide
Praktijkvoorbeeld App Fastfood keten
Slide 4 - Tekstslide
Welke informatie biedt de app?
Producten
Productcategorieën
Klanten
Bestellingen
Bestelregels
Relationeel model
Slide 5 - Tekstslide
Tabellen
De database van de app bestaat dus uit meerdere tabellen.
Slide 6 - Tekstslide
Een eenvoudige query (1)
We willen alle klantgegevens uit de tabel klant opvragen.
SELECT * FROM klant
Resultaat
Slide 7 - Tekstslide
Een eenvoudige query (2)
We willen uit de tabel klant alleen de e-mailadressen opvragen.
SELECT emailadres FROM klant
ERD
Slide 8 - Tekstslide
Nu jullie!
URL database:
Gebruikersnaam:
Wachtwoord:
Slide 9 - Tekstslide
Voer deze query's eens uit
SELECT * FROM klant
SELECT naam FROM klant
SELECT naam, emailadres FROM klant
timer
3:00
Slide 10 - Tekstslide
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 - Tekstslide
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 - Tekstslide
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 - Tekstslide
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 - Tekstslide
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 - Tekstslide
Relatieoperatoren
= gelijk aan
!= niet gelijk aan
> groter dan
>= groter dan of gelijk aan
< kleiner dan
<= kleiner dan of gelijk aan
Slide 16 - Tekstslide
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 - Tekstslide
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 - Tekstslide
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 - Tekstslide
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 - Tekstslide
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 - Tekstslide
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 - Tekstslide
Voorbeeld (vervolg)
Stap 1 is het ophalen van de product_id uit de tabel bestelregel.
SELECT bestelregel.product_id
FROM bestelregel
Slide 23 - Tekstslide
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 - Tekstslide
Nu jullie weer
Maar de SQL query die bij alle bestellingen de naam van de klant weergeeft.
Slide 25 - Tekstslide
Antwoord
SELECT bestelling.klant_id, klant.naam
FROM bestelling
INNER JOIN klant
ON klant.id=bestelling.klant_id
Slide 26 - Tekstslide
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 - Tekstslide
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.