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 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 | |
---|---|---|---|---|---|---|---|
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 2SELECT * 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 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 | |
---|---|---|---|---|---|---|---|
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 |