MySQL WHERE-klausul: AND, OR, IN, NOT IN Forespørgselseksempel
Hvad er WHERE-klausul i MySQL?
HVOR klausul in 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 angivne SQL-sætning. WHERE-sætningen 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 data fra en database ved at bruge SELECT-sætningen i den forrige øvelse. SELECT-sætningen returnerede alle resultater fra den forespurgte databasetabel.
Det er dog tidspunkter, hvor vi ønsker at begrænse forespørgselsresultaterne til en bestemt tilstand. WHERE-sætningen i SQL er praktisk i sådanne situationer.
WHERE klausul Syntaks
Den grundlæggende syntaks for WHERE-sætningen, når den bruges i en MySQL SELECT WHERE-sætningen er som følger.
SELECT * FROM tableName WHERE condition;
HER
- "VÆLG * FRA tabelnavn" er standarden SELECT erklæring
- "HVOR" er det søgeord, der begrænser vores udvalgte forespørgselsresultatsæt og "tilstand" 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å en praktisk eksempel.
Antag, at vi ønsker at få et medlems personlige oplysninger fra medlemstabellen givet medlemsnummer 1, ville vi bruge følgende script til at opnå det.
SELECT * FROM `members` WHERE `membership_number` = 1;
Udførelse af ovenstående script i MySQL arbejdsbord 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 | janetjones@yagoo.cm |
WHERE-klausul kombineret med – AND LOGISK OperaTor
WHERE-tilstanden i MySQL når det bruges sammen med den logiske AND-operator, udføres kun, hvis ALLE angivne filterkriterier er opfyldt.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE-klausul kombineret med – OR LOGISK OperaTor
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
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 Søgeord
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Udførelse af ovenstående script i MySQL workbench 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 | 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 kombineret med – IKKE I Søgeord
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Udførelse af ovenstående script i MySQL workbench 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 – SAMMENLIGNING Operatorer
= Svarende til
SELECT * FROM `members` WHERE `gender` = 'Female';
Udførelse af ovenstående script i MySQL workbench 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 | 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 end
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
SELECT * FROM `movies` WHERE `category_id`<> 1;
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-sætningen bruges til at begrænse antallet af rækker, der påvirkes af en SELECT, UPDATE eller SLET forespørgsel.
- WHERE-betingelsen i SQL kan bruges sammen med logiske operatorer som AND og OR, sammenligningsoperatorer som ,= osv.
- Når det bruges sammen med AND logisk operator, skal alle kriterier være opfyldt.
- Når det bruges sammen med den logiske OR-operator, skal et hvilket som helst af kriterierne være opfyldt.
- Nøgleordet IN bruges til at vælge rækker, der matcher en liste med værdier.
Hjerne teaser
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 |