MySQL WHERE-klausul: AND, OR, IN, NOT IN Query Example

Innholdsfortegnelse:

Anonim

Hva er HVOR Klausul i MySQL?

WHERE klausul i MySQL er et nøkkelord som brukes til å spesifisere de nøyaktige kriteriene for data eller rader som vil bli påvirket av den angitte SQL-setningen. WHERE-setningen 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 vi kan spørre om data fra en database ved hjelp av SELECT-setningen i forrige opplæring. SELECT-setningen returnerte alle resultatene fra den forespurte databasetabellen.

De er imidlertid tider da vi vil begrense søkeresultatene til en spesifisert tilstand. WHERE-klausulen i SQL er nyttig i slike situasjoner.

WHERE klausul i MySQL

WHERE klausul Syntaks

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

SELECT * FROM tableName WHERE condition;

HER

  • "SELECT * FROM tableName" er standard SELECT-setning
  • "WHERE" er nøkkelordet som begrenser vårt utvalgte søkeresultatsett, og "condition" er filteret som skal brukes på resultatene. Filteret kan være et område, en verdi eller en undersøk.

La oss nå se på et praktisk eksempel .

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

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

Å utføre ovennevnte skript 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 This email address is being protected from spambots. You need JavaScript enabled to view it.

WHERE klausul kombinert med - OG LOGISK operatør

WHERE-tilstanden i MySQL når den brukes sammen med den OG-logiske operatøren, utføres bare hvis ALLE spesifiserte filterkriterier 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 bruker skriptet vist nedenfor for å oppnå det.

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

Å utføre 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 - ELLER LOGISK operatør

WHERE-setningen når den brukes sammen med OR-operatøren, utføres bare hvis noen eller hele det angitte filterkriteriet er oppfylt. Følgende manus får alle filmene i kategori 1 eller kategori 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Å utføre 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 Keyword

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

Å utføre 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 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 kombinert med - NOT IN Keyword

WHERE-setningen når den brukes sammen med NOT IN-nøkkelordet, påvirker IKKE radene hvis verdier samsvarer med listen over verdier som er 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øre 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 - COMPARISON Operators

De mindre enn (), lik (=), ikke lik () sammenligningsoperatørene kan brukes med WHERE-klausulen

= Lik

Følgende skript får alle de kvinnelige medlemmene fra medlemstabellen ved hjelp av sammenligningsoperatøren.
SELECT * FROM `members` WHERE `gender` = 'Female';

Å utføre 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 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 enn

Følgende skript får alle betalingene som er større enn 2000 fra betalingstabellen. VELG * FRA `betalinger` HVOR` beløp_betalt`> 2000; Å utføre 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 får alle filmene hvis kategori-ID ikke er 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Å utføre 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-setningen brukes til å begrense antall rader som påvirkes av et SELECT-, UPDATE- eller DELETE-spørsmål.
  • WHERE-tilstanden i SQL kan brukes i forbindelse med logiske operatorer som AND og OR, sammenligningsoperatorer som, = etc.
  • Når det brukes sammen med den OG-logiske operatøren, må alle kriteriene være oppfylt.
  • Når det brukes med den ELLER logiske operatøren, må noen av kriteriene være oppfylt.
  • Stikkordet IN brukes til å velge rader som samsvarer med en liste over verdier.

Brain Teaser La oss anta at vi ønsker å få en liste over leide filmer som ikke er returnert i tide 25/06/2012. Vi kan bruke SQL WHERE-setningsparagrafen sammen med operatøren med mindre enn sammenligning og OG-logisk operatør for å oppnå det.

SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Å utføre 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