Hvad er HVOR Klausul i MySQL?
WHERE Klausul i MySQL er et nøgleord, der bruges til at specificere de nøjagtige kriterier for data eller rækker, der vil blive påvirket af den specificerede SQL-sætning. WHERE-klausulen kan bruges med SQL-sætninger som INSERT, UPDATE, SELECT og DELETE til at filtrere poster og udføre forskellige operationer på dataene.
Vi så på, hvordan man forespørger om data fra en database ved hjælp af SELECT-sætningen i den foregående tutorial. SELECT-sætningen returnerede alle resultaterne fra den forespurgte databasetabel.
De er dog tidspunkter, hvor vi vil begrænse forespørgselsresultaterne til en bestemt tilstand. WHERE-klausulen i SQL er praktisk i sådanne situationer.

WHERE klausul Syntaks
Den basale syntaks for WHERE-klausulen, når den bruges i en MySQL SELECT WHERE-sætning, er som følger.
SELECT * FROM tableName WHERE condition;
HER
- "SELECT * FROM tableName" er standard SELECT-sætningen
- "HVOR" er nøgleordet, der begrænser vores valgte forespørgselsresultatsæt, og "betingelse" er det filter, der skal anvendes på resultaterne. Filteret kan være et interval, en enkelt værdi eller en underforespørgsel.
Lad os nu se på et praktisk eksempel .
Antag, at vi ønsker at få et medlems personlige oplysninger fra medlemstabellen givet medlemsnummer 1, vi bruger følgende script til at opnå det.
SELECT * FROM `members` WHERE `membership_number` = 1;
At udføre ovenstående script i MySQL-arbejdsbænken på "myflixdb" ville give følgende resultater.
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. |
Hvor klausul kombineret med - OG LOGISK operatør
WHERE-betingelsen i MySQL, når den bruges sammen med den OG-logiske operator, udføres kun, hvis ALLE angivne filterkriterier er opfyldt. Lad os nu se på et praktisk eksempel - Antag, at vi ønsker at få en liste over alle filmene i kategori 2, der blev udgivet i 2008, og vi bruger det manuskript, der er vist nedenfor, for at opnå det.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
At udføre ovenstående script i MySQL-arbejdsbænken mod "myflixdb" giver følgende resultater.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE klausul kombineret med - ELLER LOGISK operatør
WHERE-klausulen, når den bruges sammen med OR-operatøren, udføres kun, hvis et eller hele det angivne filterkriterium er opfyldt. Det følgende manuskript får alle filmene i enten kategori 1 eller kategori 2SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
At udføre ovenstående script i MySQL-arbejdsbænken mod "myflixdb" giver følgende resultater.
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 kombineret med - IN Keyword
WHERE i MySQL-klausul påvirker, når det bruges sammen med IN-nøgleordet, kun de rækker, hvis værdier svarer til listen over værdier, der er angivet i IN-nøgleordet. MySQL IN-erklæringen hjælper med at reducere antallet af OR-klausuler, du muligvis skal bruge. Følgende MySQL WHERE IN-forespørgsel giver rækker, hvor membership_number enten er 1, 2 eller 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
At udføre ovenstående script i MySQL-arbejdsbænken mod "myflixdb" giver følgende resultater.
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. |
WHERE klausul kombineret med - NOT IN Keyword
WHERE-klausulen, når den bruges sammen med nøgleordet IKKE I, påvirker IKKE de rækker, hvis værdier matcher listen over værdier, der er angivet i nøgleordet IKKE IN. Den følgende forespørgsel giver rækker, hvor medlemsnummer IKKE er 1, 2 eller 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
At udføre ovenstående script i MySQL-arbejdsbænken mod "myflixdb" giver følgende resultater.
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 kombineret med - COMPARISON Operators
De mindre end (), lig med (=), ikke lig med () sammenligningsoperatorer kan bruges med WHERE-klausulen= Lig med
Følgende script henter alle de kvindelige medlemmer fra medlemstabellen ved hjælp af sammenligningsoperatoren.SELECT * FROM `members` WHERE `gender` = 'Female';
At udføre ovenstående script i MySQL-arbejdsbænken mod "myflixdb" giver følgende resultater.
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 end
Følgende script henter alle de betalinger, der er større end 2.000 fra betalingstabellen. VÆLG * FRA `betalinger` HVOR` beløb_betalt`> 2000; At udføre ovenstående script i MySQL-arbejdsbænk mod "myflixdb" giver følgende resultater.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 |
<> Ikke lig med
Det følgende script henter alle de film, hvis kategori-id ikke er 1.SELECT * FROM `movies` WHERE `category_id`<> 1;At udføre ovenstående script i MySQL-arbejdsbænken mod "myflixdb" giver følgende resultater.
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 |
Resumé
- SQL WHERE-klausulen bruges til at begrænse antallet af rækker, der er påvirket af en SELECT-, UPDATE- eller DELETE-forespørgsel.
- WHERE-tilstanden i SQL kan bruges i forbindelse med logiske operatorer som AND og OR, sammenligningsoperatorer såsom, = osv.
- Når det bruges sammen med den OG-logiske operator, skal alle kriterierne være opfyldt.
- Når det bruges med den ELLER logiske operator, skal ethvert af kriterierne være opfyldt.
- Nøgleordet IN bruges til at vælge rækker, der matcher en liste med værdier.
Brain Teaser Lad os antage, at vi ønsker at få en liste over lejede film, der ikke er returneret til tiden 25/06/2012. Vi kan bruge SQL WHERE-sætningsklausulen sammen med operatøren med mindre end sammenligning og OG-logisk operatør for at opnå det.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Udførelse af ovenstående script i MySQL workbench giver følgende resultater.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |