SQL Verdieping

← Terug naar overzicht

IN

Met IN filter je op een lijst van mogelijke waarden. Dit is korter en leesbaarder dan meerdere OR-voorwaarden.

-- In plaats van:
SELECT * FROM animals WHERE color = 'red' OR color = 'blue' OR color = 'green'

-- Kun je schrijven:
SELECT * FROM animals WHERE color IN ('red', 'blue', 'green')

Je kunt IN ook combineren met een subquery: een query binnen een query.

SELECT * FROM animals
WHERE color IN (
    SELECT color FROM animals WHERE owner = 'Joep'
)

De database voert eerst de binnenste query uit (welke kleuren hebben Joeps dieren?) en gebruikt dat resultaat voor de buitenste query.

Oefening 1

De boer wil alle dieren zien die geel, paars of goth-kleurig zijn. Schrijf dit zo kort mogelijk. Tabel: animals, kolom: color.

Jouw code:

Oefening 2

Frits vraagt: "Welke dieren zijn van hetzelfde type als mijn dieren?" Schrijf een query met een subquery die dit in een keer beantwoordt. Tabel: animals, kolommen: animaltype, owner.

Jouw code:

BETWEEN

Met BETWEEN filter je op een bereik. De grenzen zijn inclusief.

SELECT * FROM animals WHERE age BETWEEN 3 AND 7

Dit haalt alle dieren op van 3 t/m 7 jaar oud.

Oefening 3

De dierenarts wil alle dieren tussen de 5 en 12 jaar oud onderzoeken (inclusief 5 en 12). Tabel: animals.

Jouw code:

Oefening 4

Een klant zoekt producten in de prijsklasse €10 tot €50. Tabel: products, kolom: prijs.

Jouw code:

LIKE

Met LIKE zoek je naar patronen in tekst. Je gebruikt wildcards:

-- Alle namen die beginnen met 'A'
SELECT * FROM animals WHERE name LIKE 'A%'

-- Alle namen die eindigen op 'a'
SELECT * FROM animals WHERE name LIKE '%a'

-- Alle namen waar ergens 'ar' in zit
SELECT * FROM animals WHERE name LIKE '%ar%'

Oefening 5

De boer is de naam van een dier vergeten, maar weet dat het begint met een B. Welke dieren komen in aanmerking? Tabel: animals.

Jouw code:

Oefening 6

Een student zoekt alle docenten die een Gmail-adres hebben (eindigend op @gmail.com). Tabel: docenten, kolom: email.

Jouw code:

Oefening 7

De boer wil alle dieren vinden die ergens 'ie' in de naam hebben. Tabel: animals.

Jouw code:

AS

Met AS geef je een kolom een tijdelijke andere naam in het resultaat. Dit verandert niets aan de database zelf.

SELECT name AS dierennaam FROM animals

Dit is vooral handig wanneer je tabellen koppelt (JOIN) en kolommen met dezelfde naam hebt.

Oefening 8

Je baas wil een rapport in het Nederlands. Toon de naam als "dierennaam" en de leeftijd als "leeftijd" uit de tabel animals.

Jouw code:

DISTINCT

Met DISTINCT verwijder je dubbele waarden uit het resultaat.

SELECT DISTINCT color FROM animals

Dit geeft een lijst van alle unieke kleuren die voorkomen in de tabel, zonder duplicaten.

Oefening 9

De boer wil weten welke soorten dieren hij heeft, zonder dubbelen. Tabel: animals, kolom: animaltype.

Jouw code:

Oefening 10

Welke unieke combinaties van kleur en patroon bestaan er op de boerderij? Tabel: animals, kolommen: color, pattern.

Jouw code: