SQL SELECT WHERE: filter precies wat jij wilt [TUTORIAL]
Wie gegevens opvraagt uit relationele databases met SQL zal niet altijd hele tabellen nodig hebben. Als je veel data opvraagt met een SQL query dan kan de output onoverzichtelijk worden en daarmee lastig te interpreteren.
In dit blog gaan we in op de SQL SELECT WHERE statement, waarmee je rijen uit een tabel selecteert die aan de gestelde conditie(s) voldoen.
Wil je op je eigen computer meedoen met deze tutorial? Volg dan deze stappen om SQL en PgAdmin te installeren. Ook de database die we gebruiken in dit blog download je op voorgaande installatiepagina.
Inhoud
Wat is het SQL SELECT WHERE statement?
Men gebruikt WHERE
binnen SQL om condities te specificeren waar de rijen die als output worden gegeven aan dienen te voldoen.
Op SELECT
na zul je de WHERE
clausule het allermeest gebruiken als je met SQL aan de slag gaat.
Ook interessant: een volledige uitleg van SQL SELECT
De syntax heeft de volgende structuur: SELECT column FROM tabel WHERE conditie;
In bovenstaande syntax zie je terug dat je zelf een conditie dient te specificeren wanneer je WHERE
gebruikt in jouw SQL statement. In deze conditie kun je gebruikmaken van:
- Vergelijkings-operatoren: hiermee bedoelen we vergelijkingen als bijvoorbeeld "A is groter dan B" (A > B) die resulteren in WAAR of ONWAAR. Nadere uitleg en voorbeelden volgen in de volgende paragraaf.
- Logische operatoren: hiermee bedoelen we AND, OR, en NOT. Dankzij deze logische operatoren kunnen we tegelijkertijd meerdere vergelijks-operatoren inzetten om zeer specifieke output op te vragen. Hier gaan we ook voorbeelden van laten zien.
Voorbeeldtoepassingen van SQL SELECT WHERE
Nu zullen we laten zien hoe je een SQL SELECT
WHERE
statement gebruikt in de praktijk. Hiervoor gebruiken we de IMDb voorbeeld dataset die beschreven staat op deze pagina. Je kunt de dataset ook downloaden via de pagina en als je nog geen mogelijkheid hebt om met SQL te werken op jouw computer dan kun je deze installatie-stappen volgen. In de installatiestappen laten we ook zien hoe je de IMDb database configureert op jouw computer.
We zullen in al onze voorbeelden binnen dit blog gebruik maken van de tabel actors, oftewel de tabel met acteurs die voorkomen in de verschillende films in de database.
Om een indruk te krijgen van de tabel voeren we de volgende query uit:
SELECT *
FROM actors;
We zien dat onze tabel een column bevat met id's, een met voornamen, een met achternamen, een met gender ("M" of "F") en een column met het aantal films waarin een acteur voor komt. Nu we een indruk hebben van alle data kunnen we gaan filteren door gebruik te maken van WHERE
.
Vergelijkings-operatoren inzetten i.c.m. SQL SELECT WHERE
Door WHERE
te gebruiken wordt iedere rij aan de gestelde conditie onderworpen. Het resultaat kan zijn WAAR (de rij wordt getoond in de output) of ONWAAR (de rij wordt niet getoond in de output).
Vergelijkings-operatoren die gebruik kunnen worden zijn:
- Is gelijk aan (=)
- Is groter dan (>)
- Is kleiner dan (<)
- is groter dan of gelijk aan (>=)
- is kleiner dan of gelijk aan (<=)
- is niet gelijk aan (<> of !=)
Zo kunnen we bijvoorbeeld met het volgende SQL statement alle rijen tonen uit de tabel actors waarbij de voornaam van een acteur gelijk is aan Jim.
SELECT *
FROM actors
WHERE first_name = 'Jim';
In onze output zien we alle acteurs met voornaam Jim uit onze tabel terug. Doordat we een asterix (*) hebben ingegeven zien we alle columns uit de tabel terug.
Het is ook mogelijk om slechts enkele columns in de output te tonen. Je kunt dan nogsteeds gebruikmaken van vergelijkings-operatoren op een column die niet in de output voor komt. Zo kun je met onderstaande SQL query de voor- en achternamen van acteurs tonen die in meer dan drie films hebben gespeeld.
SELECT first_name, last_name
FROM actors
WHERE film_count > 3;
We zien dat er één acteur is die in meer dan drie films heeft gespeeld en we zien inderdaad dat alleen de columns first_name en last_name als output worden weergegeven.
Logische operatoren inzetten i.c.m. SQL SELECT WHERE
Naast vergelijkings-operatoren kun je SELECT
WHERE
ook gebruiken in combinatie met de logische operatoren AND
, OR
, en NOT
. Deze logische operatoren geven je de flexibiliteit om diverse vergelijkings-operatoren tegelijk toe te passen op de rijen in een tabel.
Stel je voor dat je bijvoorbeeld de namen wilt weten van vrouwelijke acteurs die in meer dan twee films hebben gespeeld volgens onze tabel. Dit kan met onderstaande query waar door middel van AND
twee vergelijks-operatoren worden toegepast op iedere rij. Alleen als een acteur zowel in meer dan twee films heeft gespeeld als vrouw is dan wordt een rij in de output opgenomen.
SELECT first_name, last_name
FROM actors
WHERE film_count > 2 AND gender = 'F';
We zien dat slechts één rij in de tabel aan de gestelde condities voldoet. Actrice Uma Thurman heeft in meer dan twee films gespeeld binnen onze dataset.
Tenslotte is het mogelijk om combinaties te maken van logische operatoren. Stel je wilt alleen acteurs zien die in meer dan twee films hebben gespeeld én vrouw zijn óf Kevin heten. Dat is mogelijk met onderstaand SQL statement.
SELECT first_name, last_name
FROM actors
WHERE film_count > 2
AND (gender = 'F' OR first_name = 'Kevin');
We wisten al dat Uma in meer dan twee films heeft gespeeld en vrouw is. Hier is tevens Kevin aan toegevoegd die ook in meer dan twee films speelt. Dit klopt, want in een eerder voorbeeld zagen we al dat Kevin Bacon sowieso in meer dan drie films speelt.
Ook interessant:
Wil je nog veel meer leren over SQL? Bekijk dan onze SQL cursus voor data analyse of download onderstaande opleidingsbrochure. In onze SQL cursus wisselen theorie en praktijkoefening elkaar steeds af. Nadat je deze training hebt gevolgd kun je zelfstandig met SQL werken. Je kunt ook altijd even contact opnemen via info@datasciencepartners.nl of 020 - 24 43 146 als je een vraag hebt.
Rik is data scientist en marketeer bij Data Science Partners. Vanuit zijn achtergrond op de Technische Universiteit Eindhoven heeft hij veel affiniteit met data. Na zijn studie heeft hij als consultant altijd met data gewerkt en tevens ervaring opgedaan in het geven van trainingen.