MySQL WHERE-klausul: OCH, ELLER, IN, INTE I frågeexempel

Innehållsförteckning:

Anonim

Vad är WHERE-klausulen i MySQL?

WHERE Clause i MySQL är ett nyckelord som används för att specificera de exakta kriterierna för data eller rader som påverkas av det angivna SQL-uttalandet. 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 ställer frågor från en databas med SELECT-uttalandet i föregående handledning. SELECT-uttalandet returnerade alla resultat från den förfrågade databastabellen.

De är emellertid tillfällen då vi vill begränsa frågeresultaten till ett angivet tillstånd. WHERE-klausulen i SQL kommer till hands i sådana situationer.

VAR klausul i MySQL

VAR klausul Syntax

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

SELECT * FROM tableName WHERE condition;

HÄR

  • "SELECT * FROM tableName" är standardvalet för SELECT
  • "VAR" är nyckelordet som begränsar vår utvalda sökresultatuppsättning och "villkor" är det filter som ska tillämpas på resultaten. Filtret kan vara ett intervall, ett värde eller en underfråga.

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

Antag att vi vill få en medlems personliga uppgifter 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;

Att utföra ovanstående skript i MySQL-arbetsbänken 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 This email address is being protected from spambots. You need JavaScript enabled to view it.

VAR klausul i kombination med - OCH LOGISK operatör

WHERE-villkoret i MySQL när det används tillsammans med den OG-operatören körs endast om ALLA angivna filterkriterier är uppfyllda. Låt oss nu titta på ett praktiskt exempel - Antag att vi vill få en lista över alla filmer i kategori 2 som släpptes 2008, vi skulle använda manuset som visas nedan för att uppnå det.

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

Att utföra ovanstående skript i MySQL-arbetsbänken mot "myflixdb" ger följande resultat.

 
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

VAR klausul i kombination med - ELLER LOGISK operatör

WHERE-satsen när den används tillsammans med OR-operatören körs endast om någon eller hela det angivna filterkriteriet är uppfyllt. Följande manus hämtar alla filmer i antingen kategori 1 eller kategori 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Att utföra ovanstående skript i MySQL-arbetsbänken 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 i kombination med - IN Keyword

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

Att utföra ovanstående skript i MySQL-arbetsbänken 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 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.

VAR klausul i kombination med - INTE i nyckelord

WHERE-satsen när den används tillsammans med INTE-nyckelordet påverkar INTE de rader vars värden matchar listan över värden i INTE-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);

Att utföra ovanstående skript i MySQL-arbetsbänken 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 i kombination med - JÄMFÖRELSE operatörer

Operatörerna mindre än (), lika med (=), inte lika med () kan användas med WHERE-klausulen

= Lika med

Följande skript får alla kvinnliga medlemmar från medlemstabellen med jämförelseoperatören.
SELECT * FROM `members` WHERE `gender` = 'Female';

Att utföra ovanstående skript i MySQL-arbetsbänken 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 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

> Större än

Följande skript hämtar alla betalningar som är större än 2000 från betalningstabellen. VÄLJ * FRÅN "betalningar" VAR "belopp_betalt"> 2000; Att utföra ovanstående skript i MySQL-arbetsbänken 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 får alla filmer vars kategori-id inte är 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Att utföra ovanstående skript i MySQL-arbetsbänken 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-tillståndet i SQL kan användas i kombination med logiska operatorer som AND och OR, jämförelseoperatorer som, = etc.
  • När den används med den AND-logiska operatören måste alla kriterier vara uppfyllda.
  • När det används med den OR-logiska operatören måste något av kriterierna vara uppfyllda.
  • Nyckelordet IN används för att välja rader som matchar en lista med värden.

Brain Teaser 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-satsfrasen tillsammans med operatören för mindre än jämförelse och OCH-logisk operatör för att uppnå det.

SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Att utföra ovanstående skript 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