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

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 email
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.

Laten we nu naar een praktisch voorbeeld kijken. Stel dat we een lijst willen hebben van alle films in categorie 2 die in 2008 zijn uitgebracht. Om dat te bereiken, zouden we het onderstaande script gebruiken.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Voer het bovenstaande script uit in MySQL workbench tegen de “myflixdb” produceert de volgende resultaten.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

WHERE-clausule gecombineerd met – OR LOGISCH Operator

Wanneer de WHERE-component samen met de OR-operator wordt gebruikt, wordt deze alleen uitgevoerd als aan een of meer van de opgegeven filtercriteria is voldaan.
Het volgende script haalt alle films in categorie 1 of categorie 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Voer het bovenstaande script uit in MySQL workbench tegen de “myflixdb” produceert de volgende resultaten.
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

Het WAAR in MySQL De clausule heeft, wanneer deze samen met het trefwoord IN wordt gebruikt, alleen invloed op de rijen waarvan de waarden overeenkomen met de lijst met waarden in het trefwoord IN. De MySQL IN-verklaring helpt het aantal OR-clausules dat u mogelijk moet gebruiken, te verminderen.
De volgende MySQL De WHERE IN-query geeft rijen waarin lidmaatschapsnummer 1, 2 of 3 is
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 email
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

Wanneer de WHERE-clausule samen met het trefwoord NOT IN wordt gebruikt, heeft dit GEEN invloed op de rijen waarvan de waarden overeenkomen met de lijst met waarden die is opgegeven in het trefwoord NOT IN.
De volgende query geeft rijen waarin membership_number NIET 1, 2 of 3 is
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 email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

WHERE-clausule gecombineerd met – VERGELIJKING Operaverdraaid

De vergelijkingsoperatoren kleiner dan (), gelijk aan (=), niet gelijk aan () kunnen worden gebruikt met de WHERE-clausule

= Gelijk aan

Het volgende script haalt alle vrouwelijke leden op uit de ledentabel met behulp van de gelijk aan-vergelijkingsoperator.
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 email
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

Het volgende script haalt alle betalingen die groter zijn dan 2,000 op uit de betalingstabel.
SELECTEER * VAN `betalingen` WAAR `bedrag_betaald` > 2000;
Voer het bovenstaande script uit in MySQL workbench tegen de “myflixdb” produceert de volgende resultaten.
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;
Voer het bovenstaande script uit in MySQL workbench tegen de “myflixdb” produceert de volgende resultaten.
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

Stel dat we een lijst willen opvragen van gehuurde films die niet op tijd zijn teruggebracht (25/06/2012). We kunnen hiervoor de SQL WHERE-statementclausule gebruiken in combinatie met de vergelijkingsoperator 'kleiner dan' en de logische operator 'AND'.
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

Vat dit bericht samen met: