Mis on MySQL-i klausel WHERE?
WHERE lause MySQL-is on märksõna, mida kasutatakse andmete või ridade täpsete kriteeriumide määramiseks, mida määratud SQL-lause mõjutab. Klauslit WHERE saab kasutada SQL-i lausetega nagu INSERT, UPDATE, SELECT ja DELETE kirjete filtreerimiseks ja andmetega mitmesuguste toimingute tegemiseks.
Uurisime, kuidas andmebaasis andmeid pärida, kasutades eelmises õpetuses käsku SELECT. Lausel SELECT tagastati kõik päringu andmebaasi tabeli tulemused.
Need on ajad, mil soovime päringu tulemused piirata määratud tingimusega. SQL-i klausel WHERE on sellistes olukordades mugav.

WHERE klausli süntaks
WHERE-lause põhisüntaks, kui seda kasutatakse MySQL SELECT WHERE-lauses, on järgmine.
SELECT * FROM tableName WHERE condition;
SIIN
- "SELECT * FROM tableName" on standardne SELECT-lause
- "WHERE" on märksõna, mis piirab meie valitud päringu tulemuste komplekti ja "tingimus" on tulemustele rakendatav filter. Filter võib olla vahemik, üks väärtus või alampäring.
Vaatame nüüd praktilist näidet .
Oletame, et soovime saada liikme isiklikke andmeid liikmete numbrilt 1 antud liikmete tabelist, kasutaksime selle saavutamiseks järgmist skripti.
SELECT * FROM `members` WHERE `membership_number` = 1;
Ülaltoodud skripti käivitamine MySQL-i töölaual "myflixdb-l" annab järgmised tulemused.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
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 klausel koos operaatoriga AND AND LOGICAL
MySQL-i tingimus WHERE, kui seda kasutatakse koos loogilise operaatoriga AND, täidetakse 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 skripti.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Ülaltoodud skripti käivitamine MySQL-i töölaual "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 LOGICAL Operaatoriga
WHERE-klausel, kui seda kasutatakse koos operaatoriga OR, täidetakse ainult siis, kui kõik määratud filtri kriteeriumid või kogu see on täidetud. Järgmine skript saab kõik 1. või 2. kategooria filmidSELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Ülaltoodud skripti käivitamine MySQL-i töölaual "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 märksõnaga - IN
Klausel WHERE MySQL-is mõjutab koos märksõnaga IN ainult ridu, mille väärtused vastavad IN-märksõnas toodud väärtuste loendile. MySQL IN-lause aitab vähendada VÕI-klauslite arvu, mida peate võib-olla kasutama. Järgmine päring MySQL WHERE IN annab ridu, kus liikmesuse number on kas 1, 2 või 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Ülaltoodud skripti käivitamine MySQL-i töölaual "myflixdb" vastu annab järgmised tulemused.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
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 klausel koos - NOT IN märksõnaga
Klausel WHERE, kui seda kasutatakse koos märksõnaga NOT IN, EI mõjuta ridu, mille väärtused vastavad märksõnas NOT IN toodud väärtuste loendile. Järgmine päring annab ridu, kus liikmeskonna number EI ole 1, 2 ega 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Ülaltoodud skripti käivitamine MySQL-i töölaual "myflixdb" vastu annab järgmised tulemused.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
WHERE klausel koos operaatoritega - VÕRDLUS
Väikseimat (), võrdset (=), mitte võrdset () võrdlusoperaatorit saab kasutada WHERE klausliga= Võrdne
Järgmine skript saab võrdlusoperaatori abil kõik naisliikmed liikmete tabelist.SELECT * FROM `members` WHERE `gender` = 'Female';
Ülaltoodud skripti käivitamine MySQL-i töölaual "myflixdb" vastu annab järgmised tulemused.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
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 |
> Suurem kui
Järgmine skript saab maksetabelist kõik maksed, mis on suuremad kui 2000. VALI * FROM "maksetest" WHERE "summa_makstud"> 2000; Ülaltoodud skripti käivitamine MySQL-i töölaual "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 skript saab kõik filmid, mille kategooria ID pole 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Ülaltoodud skripti käivitamine MySQL-i töölaual "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
- Klauslit SQL WHERE kasutatakse ridade arvu piiramiseks, mida päring SELECT, UPDATE või DELETE mõjutab.
- SQL-i tingimust WHERE saab kasutada koos loogiliste operaatoritega nagu AND ja OR, võrdlusoperaatoritega nagu = = jne.
- Loogilise operaatori AND kasutamisel peavad kõik kriteeriumid olema täidetud.
- Loogilise operaatori OR kasutamisel peab olema täidetud ükskõik milline kriteerium.
- Märksõna IN kasutatakse väärtuste loendile vastavate ridade valimiseks.
Ajurünnak Oletame, et soovime saada nimekirja renditud filmidest, mida ei ole õigeaegselt tagastatud 25.06.2012. Selle saavutamiseks võime kasutada SQL WHERE lause klauslit koos vähem kui võrdlusoperaatori ja loogilise operaatoriga AND.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Ülaltoodud skripti käivitamine MySQL-i töölaual 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 |