MySQL WHERE-clausule: EN, OF, IN, NIET IN Queryvoorbeeld

Inhoudsopgave:

Anonim

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 in MySQL

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 email
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 2
SELECT * 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 is
SELECT * 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 email
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 is
SELECT * 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 email
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 email
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