Projecties

leestijd: 4 minuten

where between in like

Selecties

Met een projectie wordt, met een select-query, bepaald welke kolommen uit een tabel worden genomen om een nieuwe tabel te maken.

Een selectie is heel gelijkaardig, maar werkt met de records in plaats van de fields. Met een selectie wordt bepaald welke rijen uit een tabel worden genomen om een nieuwe tabel te maken.

Een selectie legt voorwaarden op aan elke rij, in een extra where-clausule. Alleen rijen die aan de voorwaarde(n) voldoen, worden opgenomen in de resultaattabel.

select componist, titel, niveau 	-- 3: projectie
from Stuk 				-- 1: brontabel
where genre = 'klassiek'; 		-- 2: selectie

Voorwaarde met vergelijking

De meest eenvoudige voorwaarde vergelijkt twee waarden met elkaar, met behulp van de gekende logische operators:

Al deze logische operators kunnen vergelijkingen maken tussen getallen, tekst en datums. Meerdere voorwaarden kunnen aan elkaar verbonden worden met behulp van and en or.

Voorwaarde met between … and …

Een voorwaarde kan ook opgebouwd worden met behulp van between ... and ...

select naam, geboortedatum
from Componist
where geboortedatum between '1700-01-01' and '1799-12-31';

In dit geval is de voorwaarde hetzelfde als geboortedatum >= '1700-01-01' and geboortedatum <= '1799-12-31'. De resultaattabel bestaat uit alle componisten die geboren zijn in de achttiende eeuw:

NAAM GEBOORTEDATUM
W.A. Mozart 1756-01-27

Een between ... and ... voorwaarde kan ook worden omgekeerd met behulp van het not keyword. Dit geeft dan alle componisten terug die niet zijn geboren tussen die data.

select naam, geboortedatum
from Componist
where geboortedatum not between '1700-01-01' and '1799-12-31';

Voorwaarde met like …

Voor tekst bestaat er een speciale voorwaarde: like. De like voorwaarde kan op delen van een tekst zoeken.

Zo kan bijvoorbeeld een selectie worden gemaakt van componisten op basis van een deel van hun naam:

select naam componist
from Componist
where naam like '%ar%';

Het resultaat bevat iedereen met ‘ar’ in de naam:

COMPONIST
Charlie Parker
W.A. Mozart
Karl Schumann

De like voorwaarde maakt gebruikt van wildcards. Een wildcard is een speciaal symbool, waar een like-voorwaarde mee bepaald of twee teksten gelijk zijn of niet.

Symbool Omschrijving Voorbeeld
% 0 of meer tekens in een tekst bl% vindt bl, black, blue, en blob
_ Één teken in een tekst h_t vindt hot, hat, en hit, maar niet hoot of heart
[ ] Alle tekens die tussen de haakjes staan h[oa]t vindt hot en hat, maar niet hit
^ Geen enkele van de tekens die tussen de haakjes staan h[^oa]t vindt hit, maar niet hot en hat
- Een reeks van tekens c[a-b]t vindt cat en cbt

Voorwaarde met in …

Een select-query met or kan soms worden vereenvoudigd door het gebruik van in voorwaarde.

select *
from Stuk
where genre = 'klassiek' or genre = 'jazz' or genre = 'house';

kan worden vereenvoudigd tot:

select *
from Stuk
where genre in ('klassiek', 'jazz', 'house');

Vergelijking met null

Ook op nulls kan worden gecontroleerd binnen een selectievoorwaarde. In de volgende query worden alle originele stukken geselecteerd:

select *
from Stuk
where origineel is null; -- alle originele stukken

Want: de originele stukken zijn de niet-bewerkte stukken, dus de stukken waarvan de kolom ‘origineel’ niet is ingevuld.

Let op! Bij null kan geen gebruik worden gemaakt van de ‘=’ operator. Er moet gebruik gemaakt worden van het keyword ‘is’.

Bewerkingen zijn dan de stukken waarbij origineel juist wel is ingevuld, dus ‘not null’ is:

select *
from Stuk
where origineel is not null; -- alle bewerkingen