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

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

Lad os nu se på et praktisk eksempel – Antag, at vi ønsker at få en liste over alle de film i kategori 2, der blev udgivet i 2008, ville vi bruge scriptet vist nedenfor for at opnå det.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Udførelse af ovenstående script i MySQL workbench 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 – OR LOGISK OperaTor

WHERE-sætningen, når den bruges sammen med OR-operatoren, udføres kun, hvis et eller flere af de angivne filterkriterier er opfyldt.
Følgende script henter alle filmene i enten kategori 1 eller kategori 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Udførelse af ovenstående script i MySQL workbench 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 Søgeord

HVOR i MySQL klausul, når den bruges sammen med IN-nøgleordet, påvirker det kun de rækker, hvis værdier matcher listen over værdier, der er angivet i IN-nøgleordet. Det MySQL IN-sætning hjælper med at reducere antallet af OR-klausuler, du muligvis skal bruge.
Følgende MySQL WHERE IN-forespørgslen giver rækker, hvor medlemsnummer er enten 1 , 2 eller 3
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 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 kombineret med – IKKE I Søgeord

WHERE-sætningen, når den bruges sammen med NOT IN-nøgleordet, påvirker IKKE de rækker, hvis værdier matcher listen over værdier, der er angivet i NOT IN-nøgleordet.
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);

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 email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

WHERE-klausul kombineret med – SAMMENLIGNING Operatorer

Sammenligningsoperatorerne mindre end (), lig med (=), ikke lig med () kan bruges med WHERE-sætningen

= Svarende til

Følgende script henter alle kvindelige medlemmer fra medlemstabellen ved hjælp af lig med sammenligningsoperatoren.
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 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 end

Følgende script henter alle betalinger, der er større end 2,000, fra betalingstabellen.
VÆLG * FRA `betalinger` HVOR `beløb_betalt` > 2000;
Udførelse af ovenstående script i MySQL workbench 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

Følgende script henter alle de film, hvis kategori-id ikke er 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Udførelse af ovenstående script i MySQL workbench 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-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

Lad os antage, at vi ønsker at få en liste over lejede film, der ikke er blevet returneret til tiden 25/06/2012. Vi kan bruge SQL WHERE-sætningsklausulen sammen med mindre end sammenligningsoperatoren og AND logiske operator 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