MySQL WHERE Klausul: AND, OR, IN, NOT IN Frågeexempel

Vad är WHERE-klausul i MySQL?

WHERE in MySQL är ett nyckelord som används för att ange de exakta kriterierna för data eller rader som kommer att påverkas av den angivna SQL-satsen. WHERE-satsen kan användas med SQL-satser som INSERT, UPDATE, SELECT och DELETE för att filtrera poster och utföra olika operationer på data.

Vi tittade på hur man frågar efter data från en databas med hjälp av SELECT-satsen i föregående handledning. SELECT-satsen returnerade alla resultat från den efterfrågade databastabellen.

Det är dock tillfällen då vi vill begränsa frågeresultaten till ett specificerat tillstånd. WHERE-satsen i SQL är praktisk i sådana situationer.

WHERE klausul in MySQL
WHERE klausul in MySQL

WHERE-sats Syntax

Den grundläggande syntaxen för WHERE-satsen när den används i en MySQL SELECT WHERE-satsen är som följer.

SELECT * FROM tableName WHERE condition;

HÄR

  • "VÄLJ * FRÅN tabellnamn" är standarden SELECT-sats
  • "VAR" är nyckelordet som begränsar vårt urval av sökfrågor och resultat "skick" är filtret som ska användas på resultaten. Filtret kan vara ett intervall, ett enda värde eller en underfråga.

Låt oss nu titta på en praktiskt exempel.

Anta att vi vill få en medlems personuppgifter från medlemstabellen med tanke på medlemsnummer 1, vi skulle använda följande skript för att uppnå det.

SELECT * FROM `members` WHERE `membership_number` = 1;

Exekvera skriptet ovan i MySQL arbetsbänk på "myflixdb" skulle ge följande resultat.

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-klausul kombinerad med – AND LOGISK Operator

WHERE-tillståndet i MySQL när den används tillsammans med den logiska operatorn AND, exekveras endast om ALLA angivna filterkriterier är uppfyllda.

Låt oss nu titta på ett praktiskt exempel – Anta att vi vill få en lista över alla filmer i kategori 2 som släpptes 2008, vi skulle använda skriptet nedan för att uppnå det.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

WHERE-klausul kombinerad med – OR LOGISK Operator

WHERE-satsen, när den används tillsammans med OR-operatorn, exekveras endast om något eller hela det angivna filterkriteriet är uppfyllt.
Följande manus får alla filmer i antingen kategori 1 eller kategori 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.
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-klausul kombinerad med – IN Nyckelord

VAR i MySQL sats, när den används tillsammans med nyckelordet IN påverkar endast de rader vars värden matchar listan med värden som anges i nyckelordet IN. De MySQL IN-satsen hjälper till att minska antalet OR-satser du kan behöva använda.
Följande MySQL WHERE IN-frågan ger rader där medlemsnummer är antingen 1 , 2 eller 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.

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-klausul kombinerad med – INTE I Nyckelord

WHERE-satsen när den används tillsammans med NOT IN-nyckelordet DOES NOT påverkar raderna vars värden matchar listan med värden som anges i NOT IN-nyckelordet.
Följande fråga ger rader där medlemsnummer INTE är 1 , 2 eller 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.

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-klausul kombinerad med – JÄMFÖRELSE Operatorer

Jämförelseoperatorerna mindre än (), lika med (=), inte lika med () kan användas med WHERE-satsen

= Lika med

Följande skript hämtar alla kvinnliga medlemmar från medlemstabellen med hjälp av operatorn lika med jämförelse.
SELECT * FROM `members` WHERE `gender` = 'Female';

Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.

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

> Större än

Följande skript hämtar alla betalningar som är större än 2,000 XNUMX från betalningstabellen.
VÄLJ * FRÅN `betalningar` VAR `amount_paid` > 2000;
Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.
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

< > Inte lika med

Följande manus hämtar alla filmer vars kategori-id inte är 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Exekvera skriptet ovan i MySQL arbetsbänk mot "myflixdb" ger följande resultat.
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

Sammanfattning

  • SQL WHERE-satsen används för att begränsa antalet rader som påverkas av en SELECT, UPDATE eller DELETE-fråga.
  • WHERE-villkoret i SQL kan användas tillsammans med logiska operatorer som AND och OR, jämförelseoperatorer som ,= etc.
  • När den används med AND logisk operatör, måste alla kriterier vara uppfyllda.
  • När den används med den logiska operatorn OR måste något av kriterierna uppfyllas.
  • Nyckelordet IN används för att välja rader som matchar en lista med värden.

Hjärngymnastik

Låt oss anta att vi vill få en lista över hyrda filmer som inte har returnerats i tid 25-06-2012. Vi kan använda SQL WHERE-satssatssatsen tillsammans med mindre än jämförelseoperatorn och den logiska operatorn AND för att uppnå det.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

Exekvera skriptet ovan i MySQL arbetsbänk ger följande resultat.

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0