MySQL WHERE-klausul: AND, OR, IN, NOT IN Spørringseksempel

Hva er WHERE-klausul i MySQL?

HVOR punkt in MySQL er et nøkkelord som brukes til å spesifisere de eksakte kriteriene for data eller rader som vil bli påvirket av den angitte SQL-setningen. WHERE-leddet kan brukes med SQL-setninger som INSERT, UPDATE, SELECT og DELETE for å filtrere poster og utføre ulike operasjoner på dataene.

Vi så på hvordan du kan spørre etter data fra en database ved å bruke SELECT-setningen i forrige veiledning. SELECT-setningen returnerte alle resultatene fra den spørrede databasetabellen.

Det er imidlertid tidspunkter da vi ønsker å begrense søkeresultatene til en spesifisert tilstand. WHERE-klausulen i SQL er nyttig i slike situasjoner.

WHERE-klausul i MySQL
WHERE-klausul i MySQL

WHERE-klausul Syntaks

Den grunnleggende syntaksen for WHERE-leddet når den brukes i en MySQL SELECT WHERE-setningen er som følger.

SELECT * FROM tableName WHERE condition;

HER

  • "VELG * FRA tabellnavn" er standarden SELECT-setning
  • "HVOR" er søkeordet som begrenser vårt utvalgte søkeresultatsett og "betingelse" er filteret som skal brukes på resultatene. Filteret kan være et område, enkeltverdi eller underspørring.

La oss nå se på en praktisk eksempel.

Anta at vi ønsker å få et medlems personlige detaljer fra medlemstabellen gitt medlemsnummer 1, vil vi bruke følgende skript for å oppnå det.

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

Utfører skriptet ovenfor i MySQL arbeidsbenk på "myflixdb" vil gi følgende resultater.

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 kombinert med – OG LOGISK Operator

WHERE-tilstanden i MySQL når den brukes sammen med den logiske AND-operatoren, utføres kun hvis ALLE filterkriterier som er spesifisert er oppfylt.

La oss nå se på et praktisk eksempel – Anta at vi ønsker å få en liste over alle filmene i kategori 2 som ble utgitt i 2008, vi ville bruke manuset vist nedenfor for å oppnå det.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir følgende resultater.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

WHERE-klausul kombinert med – OR LOGISK Operator

WHERE-klausulen når den brukes sammen med OR-operatoren, utføres bare hvis noen eller hele spesifiserte filterkriterier er oppfylt.
Følgende manus henter alle filmene i enten kategori 1 eller kategori 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir 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 kombinert med – IN søkeord

HVOR i MySQL klausul, når den brukes sammen med IN-nøkkelordet, påvirker bare radene hvis verdier samsvarer med listen over verdier gitt i IN-nøkkelordet. De MySQL IN-setningen bidrar til å redusere antall OR-klausuler du kanskje må bruke.
Følgende MySQL WHERE IN-spørringen gir rader der medlemsnummer er enten 1 , 2 eller 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir følgende resultater.

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 kombinert med – IKKE I søkeord

WHERE-leddet når det brukes sammen med NOT IN-nøkkelordet, påvirker IKKE radene hvis verdier samsvarer med listen over verdier gitt i NOT IN-nøkkelordet.
Følgende spørring gir rader der medlemsnummer IKKE er 1 , 2 eller 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir følgende resultater.

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 kombinert med – SAMMENLIGNING Operatorer

Sammenligningsoperatorene mindre enn (), lik (=), ikke lik () kan brukes med WHERE-setningen

= Lik

Følgende skript henter alle kvinnelige medlemmer fra medlemstabellen ved å bruke lik til sammenligningsoperatoren.
SELECT * FROM `members` WHERE `gender` = 'Female';

Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir følgende resultater.

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 enn

Følgende skript henter alle betalingene som er større enn 2,000 fra betalingstabellen.
VELG * FRA `betalinger` HVOR `amount_paid` > 2000;
Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir 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 lik

Følgende manus henter alle filmene hvis kategori-ID ikke er 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Utfører skriptet ovenfor i MySQL arbeidsbenk mot "myflixdb" gir 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

Sammendrag

  • SQL WHERE-leddet brukes til å begrense antall rader som påvirkes av en SELECT, UPDATE eller SLETT forespørsel.
  • WHERE-betingelsen i SQL kan brukes sammen med logiske operatorer som AND og OR, sammenligningsoperatorer som ,= osv.
  • Når den brukes med AND logisk operatør, må alle kriteriene være oppfylt.
  • Når den brukes med den logiske OR-operatoren, må alle kriteriene oppfylles.
  • Nøkkelordet IN brukes til å velge rader som samsvarer med en liste med verdier.

Hjernetrim

La oss anta at vi ønsker å få en liste over leide filmer som ikke har blitt returnert i tide 25. Vi kan bruke SQL WHERE-setningsleddet sammen med mindre enn sammenligningsoperatoren og AND logiske operatoren for å oppnå det.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

Utfører skriptet ovenfor i MySQL arbeidsbenk gir 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