SQL staat voor Structured Query Language: een gestructureerde manier om vragen aan je database te stellen. SQL bestaat uit verschillende onderdelen:
In dit hoofdstuk focussen we op DML.
Met SELECT haal je gegevens op uit de database.
SELECT *
FROM animals
WHERE size = 'medium'
SELECT * -- haal alle kolommen op (de * betekent "alles")FROM animals -- uit de tabel 'animals'WHERE size = 'medium' -- alleen rijen waar size gelijk is aan 'medium'Je kunt ook specifieke kolommen opvragen:
SELECT name, age
FROM animals
De dierenarts wil een overzicht van alle dieren op de boerderij. Schrijf een query op de tabel animals.
De boer wil een naamlijst met leeftijden van zijn dieren. Hij heeft geen interesse in de andere gegevens. Tabel: animals.
Welke dieren op de boerderij zijn blauw? Tabel: animals, kleurkolom: color.
Met INSERT voeg je nieuwe rijen toe aan een tabel.
INSERT INTO animals (name, size, species)
VALUES ('Rex', 'medium', 'dog')
INSERT INTO animals -- voeg toe aan de tabel 'animals'(name, size, species) -- de kolommen waarvoor je waarden aanlevertVALUES ('Rex', 'medium', 'dog') -- de waarden die je wilt invoegenDe boer heeft een nieuwe hond gekocht. Het beest heet Bella, is bruin en het is een dog. Voeg haar toe aan de tabel animals (kolommen: name, color, species).
Er heeft zich een nieuwe student aangemeld: Lisa de Vries, studentnummer S1099999. Registreer haar in de tabel students (kolommen: voornaam, achternaam, studentnummer).
Met UPDATE wijzig je bestaande gegevens.
UPDATE animals
SET size = 'large'
WHERE name = 'Rex'
UPDATE animals -- wijzig gegevens in de tabel 'animals'SET size = 'large' -- stel de nieuwe waarde inWHERE name = 'Rex' -- alleen voor rijen waar name 'Rex' isBelangrijk: Gebruik altijd een WHERE-clause bij UPDATE, anders worden alle rijen gewijzigd!
Teun de kip is geverfd en is nu groen. Pas zijn kleur aan in de tabel animals.
Alle kippen op de boerderij zijn vandaag 3 jaar geworden (dat kan, op een boerderij). Pas de leeftijd aan voor alle kippen in animals (diersoort-kolom: animaltype).
Met DELETE verwijder je rijen uit een tabel.
DELETE FROM animals
WHERE name = 'Rex'
Belangrijk: Gebruik altijd een WHERE-clause bij DELETE, anders wordt je hele tabel leeggemaakt!
Boris is verkocht. Verwijder hem uit de tabel animals.
Alle dieren ouder dan 10 jaar gaan met pensioen en worden uit de administratie verwijderd. Tabel: animals.
De WHERE-clause filtert je query. Je kunt het vergelijken met een if-statement in JavaScript: in JS bepaalt een if welke code uitgevoerd wordt, in SQL bepaalt WHERE op welke rijen de query betrekking heeft.
Vergelijkingsoperatoren:
= gelijk aan!= of <> niet gelijk aan> groter dan< kleiner dan>= groter dan of gelijk aan<= kleiner dan of gelijk aanDe dierenarts wil alle jonge dieren inenten. Geef een lijst van dieren die nog geen 5 jaar oud zijn. Tabel: animals.
De boer heeft een hekel aan rode dieren. Geef hem een lijst van alle dieren die NIET rood zijn. Tabel: animals.
Met AND en OR combineer je meerdere voorwaarden. Vergelijk AND met && en OR met || in JavaScript.
SELECT * FROM animals
WHERE species = 'dog' AND size = 'large'
Let op de volgorde: AND wordt voor OR uitgevoerd. Gebruik haakjes om de volgorde te bepalen:
-- Fout: geeft alle honden + alle 7-jarige katten
SELECT * FROM animals
WHERE species = 'dog' OR species = 'cat' AND age = 7
-- Goed: geeft alle 7-jarige honden en katten
SELECT * FROM animals
WHERE (species = 'dog' OR species = 'cat') AND age = 7
Belangrijk: Herhaal altijd de kolomnaam bij elke vergelijking!
-- Fout:
WHERE age > 5 AND < 10
-- Goed:
WHERE age > 5 AND age < 10
De boer zoekt een specifiek dier: het is geel en mannelijk. Welke dieren komen in aanmerking? Tabel: animals, kolommen: color, gender.
De veearts komt langs voor de kippen en koeien. Welke dieren moet hij bekijken? Tabel: animals, kolom: animaltype.
De veearts wil alleen de kippen en koeien zien die ouder zijn dan 5 jaar. Zorg dat de query correct werkt (let op de volgorde van AND/OR!). Tabel: animals.
Met ORDER BY sorteer je de resultaten. Standaard wordt oplopend (ASC) gesorteerd. Met DESC sorteer je aflopend.
SELECT * FROM animals ORDER BY age DESC
De boer wil zijn dieren op alfabetische volgorde zien. Tabel: animals, kolom: name.
Welk dier gaat het eerste met pensioen? Toon alle dieren met de oudste bovenaan. Tabel: animals.
Met LIMIT beperk je het aantal resultaten. Met OFFSET sla je rijen over. Dit is essentieel voor paginering.
-- Eerste 5 resultaten
SELECT * FROM animals LIMIT 5
-- Resultaten 11 t/m 15 (pagina 3 met 5 per pagina)
SELECT * FROM animals LIMIT 5 OFFSET 10
De boer wil alleen de eerste 3 dieren zien die de database teruggeeft. Tabel: animals.
Je bouwt een webshop. Op elke pagina staan 10 producten, gesorteerd op prijs (goedkoopste eerst). De klant zit op pagina 3. Schrijf de query. Tabel: products, kolom: prijs.