MySQL WHERE klausel: AND, OR, IN, NOT IN Päringu näide

Mis on WHERE-klausel sees MySQL?

kui klausel in MySQL on märksõna, mida kasutatakse andmete või ridade täpsete kriteeriumide määramiseks, mida määratud SQL-lause mõjutab. WHERE-klauslit saab kasutada SQL-lausetega nagu INSERT, UPDATE, SELECT ja DELETE, et filtreerida kirjeid ja teha andmetega erinevaid toiminguid.

Vaatasime, kuidas pärida andmeid a andmebaas kasutades eelmises õpetuses käsku SELECT. SELECT-lause tagastas kõik päringuga andmebaasi tabelist saadud tulemused.

Need on aga ajad, mil tahame päringutulemusi teatud tingimusega piirata. SQL-i WHERE-klausel on sellistes olukordades kasulik.

KUS klausel sisse MySQL
KUS klausel sisse MySQL

WHERE-klausel Süntaks

WHERE-klausli põhisüntaks, kui seda kasutatakse punktis a MySQL SELECT WHERE avaldus on järgmine.

SELECT * FROM tableName WHERE condition;

SIIN

  • "SELECT * FROM tableName" on standard SELECT avaldus
  • "KUS" on märksõna, mis piirab meie valitud päringu tulemuste komplekti ja "seisukord" on tulemustele rakendatav filter. Filter võib olla vahemik, üks väärtus või alampäring.

Vaatame nüüd a praktiline näide.

Oletame, et tahame liikmete tabelist saada liikme isikuandmeid, võttes arvesse liikmenumbrit 1, kasutaksime selle saavutamiseks järgmist skripti.

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

Ülaltoodud skripti käivitamine MySQL töölaud "myflixdb" puhul annaks järgmised tulemused.

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-klausel koos - JA LOOGILINE Operator

Tingimuses WHERE MySQL kui seda kasutatakse koos loogilise operaatoriga JA, käivitatakse ainult siis, kui KÕIK määratud filtrikriteeriumid on täidetud.

Vaatame nüüd praktilist näidet – oletame, et tahame saada nimekirja kõigist 2. kategooria filmidest, mis ilmusid 2008. aastal, kasutaksime selle saavutamiseks allpool näidatud stsenaariumi.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Ülaltoodud skripti käivitamine MySQL töölaud "myflixdb" vastu annab järgmised tulemused.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

WHERE-klausel koos - OR LOOGILINE Operator

WHERE-klauslit, kui seda kasutatakse koos operaatoriga OR, täidetakse ainult siis, kui mõni või kogu määratud filtrikriteerium on täidetud.
Järgmine stsenaarium sisaldab kõiki 1. või 2. kategooria filme
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Ülaltoodud skripti käivitamine MySQL töölaud "myflixdb" vastu annab järgmised tulemused.
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-klausel koos - IN Võtmesõna

KUS sees MySQL klausel, kui seda kasutatakse koos märksõnaga IN, mõjutab see ainult neid ridu, mille väärtused ühtivad märksõnas IN esitatud väärtuste loendiga. The MySQL IN-lause aitab vähendada OR-klauslite arvu, mida peate kasutama.
Järgmised MySQL Päring WHERE IN annab read, kus liikmelisuse_number on kas 1 , 2 või 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Ülaltoodud skripti käivitamine MySQL töölaud "myflixdb" vastu annab järgmised tulemused.

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-klausel koos - EI SISSE Võtmesõna

WHERE-klausel, kui seda kasutatakse koos märksõnaga NOT IN, EI mõjuta ridu, mille väärtused ühtivad märksõnas NOT IN esitatud väärtuste loendiga.
Järgmine päring annab read, kus liikmelisuse_number EI OLE 1, 2 ega 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Ülaltoodud skripti käivitamine MySQL töölaud "myflixdb" vastu annab järgmised tulemused.

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-klausel koos - VÕRDLUS Operatorse

Võrdlustehteid väiksem kui (), võrdne (=), mitte võrdne () saab kasutada koos WHERE-klausliga

= Võrdne

Järgmine skript hangib kõik naisliikmed liikmete tabelist, kasutades võrreldusega operaatorit.
SELECT * FROM `members` WHERE `gender` = 'Female';

Ülaltoodud skripti käivitamine MySQL töölaud "myflixdb" vastu annab järgmised tulemused.

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

> Suurem kui

Järgmine skript hangib maksete tabelist kõik maksed, mis on suuremad kui 2,000.
SELECT * FROM `maksed` WHERE `makstud_summa` > 2000;
Ülaltoodud skripti käivitamine MySQL töölaud "myflixdb" vastu annab järgmised tulemused.
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

< > Pole võrdne

Järgmine stsenaarium saab kõik filmid, mille kategooria ID ei ole 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Ülaltoodud skripti käivitamine MySQL töölaud "myflixdb" vastu annab järgmised tulemused.
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

kokkuvõte

  • SQL WHERE-klauslit kasutatakse ridade arvu piiramiseks, mida mõjutavad SELECT, UPDATE või KUSTUTA päring.
  • SQL-i WHERE-tingimust saab kasutada koos loogiliste operaatoritega, nagu AND ja OR, võrdlustehtetega, nagu ,= jne.
  • Kui seda kasutatakse koos AND-ga loogiline operaator, peavad kõik kriteeriumid olema täidetud.
  • Loogilise operaatori VÕI kasutamisel peab mis tahes kriteerium olema täidetud.
  • Võtmesõna IN kasutatakse väärtuste loendile vastavate ridade valimiseks.

Aju õrritaja

Oletame, et tahame saada nimekirja laenutatud filmidest, mida ei ole õigeks ajaks tagastatud 25. Selle saavutamiseks saame kasutada SQL WHERE lauseklauslit koos vähem kui võrdlusoperaatori ja AND loogilise operaatoriga.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

Ülaltoodud skripti käivitamine MySQL töölaud annab järgmised tulemused.

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0