MySQL WHERE-clausule: AND, OR, IN, NOT IN Queryvoorbeeld
Wat is WHERE-clausule in MySQL?
WHERE Clausule in MySQL is een sleutelwoord dat wordt gebruikt om de exacte criteria van gegevens of rijen te specificeren die worden beïnvloed door de opgegeven SQL-instructie. De WHERE-component kan worden gebruikt met SQL-instructies zoals INSERT, UPDATE, SELECT en DELETE om records te filteren en verschillende bewerkingen op de gegevens uit te voeren.
We hebben gekeken hoe u gegevens kunt opvragen uit een databank met behulp van de SELECT-instructie uit de vorige zelfstudie. De SELECT-instructie retourneerde alle resultaten uit de opgevraagde databasetabel.
Het zijn echter momenten waarop we de queryresultaten willen beperken tot een bepaalde voorwaarde. De WHERE-clausule in SQL komt in dergelijke situaties van pas.

WHERE-clausule Syntaxis
De basissyntaxis voor de WHERE-clausule bij gebruik in a MySQL De SELECT WHERE-instructie is als volgt.
SELECT * FROM tableName WHERE condition;
HIER
- “SELECT * FROM tabelnaam” is de standaard SELECT-instructie
- "WAAR" is het trefwoord dat onze selectieresultatenset voor zoekopdrachten beperkt en "voorwaarde" is het filter dat op de resultaten moet worden toegepast. Het filter kan een bereik, een enkele waarde of een subquery zijn.
Laten we nu kijken naar A praktisch voorbeeld.
Stel dat we de persoonlijke gegevens van een lid willen ophalen uit de ledentabel met lidmaatschapsnummer 1. We gebruiken daarvoor het volgende script.
SELECT * FROM `members` WHERE `membership_number` = 1;
Voer het bovenstaande script uit in MySQL werkbank op de “myflixdb” zou de volgende resultaten opleveren.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
WHERE-clausule gecombineerd met – EN LOGISCH Operator
De WHERE-voorwaarde in MySQL wordt, wanneer deze samen met de logische operator AND wordt gebruikt, alleen uitgevoerd als aan ALLE opgegeven filtercriteria is voldaan.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE-clausule gecombineerd met – OR LOGISCH Operator
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE-clausule gecombineerd met – IN Keyword
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Voer het bovenstaande script uit in MySQL workbench tegen de “myflixdb” produceert de volgende resultaten.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
WHERE-clausule gecombineerd met – NIET IN Keyword
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Voer het bovenstaande script uit in MySQL workbench tegen de “myflixdb” produceert de volgende resultaten.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
WHERE-clausule gecombineerd met – VERGELIJKING Operaverdraaid
= Gelijk aan
SELECT * FROM `members` WHERE `gender` = 'Female';
Voer het bovenstaande script uit in MySQL workbench tegen de “myflixdb” produceert de volgende resultaten.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Groter dan
| payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
|---|---|---|---|---|---|
| 1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
| 3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
< > Niet gelijk aan
SELECT * FROM `movies` WHERE `category_id`<> 1;
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 5 | Daddy's Little Girls | NULL | 2007 | 8 |
| 6 | Angels and Demons | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schultz | 2005 | 8 |
Samenvatting
- De SQL WHERE-clausule wordt gebruikt om het aantal rijen te beperken dat wordt beïnvloed door een SELECT-, UPDATE- of VERWIJDER vraag.
- De WHERE-voorwaarde in SQL kan worden gebruikt in combinatie met logische operatoren zoals AND en OR, vergelijkingsoperatoren zoals ,= etc.
- Bij gebruik met de EN logische operator, moet aan alle criteria worden voldaan.
- Wanneer deze functie wordt gebruikt met de logische operator OR, moet aan een van de criteria worden voldaan.
- Het sleutelwoord IN wordt gebruikt om rijen te selecteren die overeenkomen met een lijst met waarden.
Denkspelletje
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Voer het bovenstaande script uit in MySQL workbench geeft de volgende resultaten.
| reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
|---|---|---|---|---|---|
| 14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |
