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

Indholdsfortegnelse:

Anonim

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 i MySQL

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 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.

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