Wat is de WHERE-clausule in MySQL?
WHERE-clausule in MySQL is een trefwoord dat wordt gebruikt om de exacte criteria van gegevens of rijen te specificeren die worden beïnvloed door de opgegeven SQL-instructie. De WHERE-clausule 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.
In de vorige zelfstudie hebben we gekeken hoe u gegevens uit een database kunt opvragen met behulp van de SELECT-instructie. De SELECT-instructie heeft alle resultaten van de opgevraagde databasetabel geretourneerd.
Het zijn echter momenten waarop we de queryresultaten willen beperken tot een bepaalde voorwaarde. De WHERE-component in SQL is handig in dergelijke situaties.
WHERE-clausule Syntax
De basissyntaxis voor de WHERE-clausule bij gebruik in een MySQL SELECT WHERE-instructie is als volgt.
SELECT * FROM tableName WHERE condition;
HIER
- "SELECT * FROM tableName" is de standaard SELECT-instructie
- "WAAR" is het sleutelwoord dat onze geselecteerde queryresultaten beperkt en "voorwaarde" is het filter dat op de resultaten moet worden toegepast. Het filter kan een bereik, enkele waarde of subquery zijn.
Laten we nu naar een praktisch voorbeeld kijken .
Stel dat we de persoonlijke gegevens van een lid willen krijgen van de ledentabel gezien het lidmaatschapsnummer 1, dan gebruiken we het volgende script om dat te bereiken.
SELECT * FROM `members` WHERE `membership_number` = 1;
Het uitvoeren van het bovenstaande script 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
WHERE-clausule gecombineerd met - AND LOGICAL Operator
De WHERE-voorwaarde in MySQL wanneer deze samen met de logische operator AND wordt gebruikt, wordt alleen uitgevoerd als aan ALLE gespecificeerde filtercriteria is voldaan. Laten we nu naar een praktisch voorbeeld kijken - Stel dat we een lijst willen krijgen van alle films in categorie 2 die in 2008 zijn uitgebracht, dan zouden we het onderstaande script gebruiken om dat te bereiken.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de "myflixdb" levert de volgende resultaten op.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE-clausule gecombineerd met - OF LOGISCHE Operator
De WHERE-component wordt bij gebruik in combinatie met de OR-operator alleen uitgevoerd als aan een of alle opgegeven filtercriteria is voldaan. Het volgende script krijgt alle films in categorie 1 of categorie 2SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de "myflixdb" levert de volgende resultaten op.
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 Sleutelwoord
De WHERE in MySQL-clausule, wanneer gebruikt samen met het IN-sleutelwoord, heeft alleen invloed op de rijen waarvan de waarden overeenkomen met de lijst met waarden die in het IN-sleutelwoord worden verstrekt. De MySQL IN-instructie helpt om het aantal OR-clausules dat u mogelijk moet gebruiken, te verminderen. De volgende MySQL WHERE IN-query geeft rijen waarbij lidmaatschapsnummer 1, 2 of 3 isSELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de "myflixdb" levert de volgende resultaten op.
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
WHERE-clausule gecombineerd met - NOT IN Trefwoord
Wanneer de WHERE-component samen met het NOT IN-sleutelwoord wordt gebruikt, heeft dit GEEN invloed op de rijen waarvan de waarden overeenkomen met de lijst met waarden die in het NOT IN-sleutelwoord zijn opgegeven. De volgende query geeft rijen waarbij lidmaatschapsnummer NIET 1, 2 of 3 isSELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de "myflixdb" levert de volgende resultaten op.
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 - COMPARISON-operators
De vergelijkingsoperatoren kleiner dan (), gelijk aan (=), niet gelijk aan () kunnen worden gebruikt met de WHERE-clausule
Het volgende script haalt alle vrouwelijke leden uit de ledentabel met behulp van de operator voor gelijk aan vergelijking.SELECT * FROM `members` WHERE `gender` = 'Female';
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de "myflixdb" levert de volgende resultaten op.
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Het volgende script haalt alle betalingen die groter zijn dan 2.000 uit de betalingstabel. SELECTEER * UIT `betalingen` WAAR` bedrag_betaald`> 2000; Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de "myflixdb" levert de volgende resultaten op.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
Het volgende script haalt alle films op waarvan de categorie-ID niet 1 is.SELECT * FROM `movies` WHERE `category_id`<> 1;Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de "myflixdb" levert de volgende resultaten op.
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 |
Overzicht
- De SQL WHERE-clausule wordt gebruikt om het aantal rijen te beperken dat wordt beïnvloed door een SELECT-, UPDATE- of DELETE-query.
- De WHERE-voorwaarde in SQL kan worden gebruikt in combinatie met logische operatoren zoals AND en OR, vergelijkingsoperatoren zoals, = etc.
- Bij gebruik met de logische operator AND, moet aan alle criteria worden voldaan.
- Bij gebruik 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.
Brain Teaser Stel dat we een lijst willen krijgen met gehuurde films die niet op tijd zijn ingeleverd 25/06/2012. We kunnen de SQL WHERE-instructieclausule samen met de minder dan-vergelijkingsoperator en de logische AND-operator gebruiken om dat te bereiken.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Het uitvoeren van het bovenstaande script 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 |