Kas ir WHERE klauzula MySQL?
WHERE klauzula MySQL ir atslēgvārds, ko izmanto, lai norādītu precīzus datu vai rindu kritērijus, kurus ietekmēs norādītais SQL priekšraksts. Klauzulu WHERE var izmantot ar SQL priekšrakstiem, piemēram, INSERT, UPDATE, SELECT un DELETE, lai filtrētu ierakstus un veiktu dažādas darbības ar datiem.
Mēs apskatījām, kā vaicāt datus no datu bāzes, izmantojot iepriekšējās apmācības paziņojumu SELECT. Izraksts SELECT atgrieza visus rezultātus no pieprasītās datu bāzes tabulas.
Tomēr tie ir gadījumi, kad mēs vēlamies ierobežot vaicājuma rezultātus līdz noteiktam nosacījumam. Šādās situācijās SQL klauzula WHERE ir noderīga.

KUR klauzulas sintakse
Pamata sintakse klauzulai WHERE, ja to izmanto MySQL SELECT WHERE priekšrakstā, ir šāda.
SELECT * FROM tableName WHERE condition;
ŠEIT
- "SELECT * FROM tableName" ir standarta SELECT priekšraksts
- “WHERE” ir atslēgvārds, kas ierobežo mūsu atlasīto vaicājuma rezultātu kopu, un “condition” ir filtrs, kas jāpielieto rezultātiem. Filtrs var būt diapazons, viena vērtība vai apakšvaicājums.
Tagad aplūkosim praktisku piemēru .
Pieņemsim, ka mēs vēlamies iegūt dalībnieka personisko informāciju no dalībnieku tabulas ar dalības numuru 1, lai to panāktu, mēs izmantosim šādu skriptu.
SELECT * FROM `members` WHERE `membership_number` = 1;
Izpildot iepriekš minēto skriptu MySQL darbagaldā "myflixdb", tiktu iegūti šādi rezultāti.
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. |
KURA klauzula apvienota ar - UN LOGICAL Operator
WHERE nosacījums MySQL, lietojot to kopā ar loģisko operatoru AND, tiek izpildīts tikai tad, ja ir izpildīti VISI norādītie filtrēšanas kritēriji. Tagad aplūkosim praktisku piemēru - Pieņemsim, ka mēs vēlamies iegūt visu 2. kategorijas filmu sarakstu, kas tika izlaistas 2008. gadā, mēs izmantotu zemāk redzamo skriptu, lai to panāktu.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret "myflixdb" rada šādus rezultātus.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE klauzula apvienojumā ar - OR LOGICAL Operator
Klauzula WHERE, ja to izmanto kopā ar operatoru OR, tiek izpildīta tikai tad, ja ir izpildīti visi norādītie filtra kritēriji vai visi tie. Šis skripts iegūst visas filmas vai nu 1., vai 2. kategorijāSELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret "myflixdb" rada šādus rezultātus.
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 |
KUR klauzula apvienojumā ar - IN Atslēgvārds
Klauzula WHERE in MySQL, lietojot to kopā ar IN atslēgvārdu, ietekmē tikai tās rindas, kuru vērtības atbilst IN atslēgvārdā sniegto vērtību sarakstam. MySQL IN paziņojums palīdz samazināt klauzulu skaitu VAI, kuras jums var nākties izmantot. Šis MySQL WHERE IN vaicājums dod rindas, kurās dalības_numurs ir vai nu 1, 2 vai 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret "myflixdb" rada šādus rezultātus.
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. |
KUR klauzula apvienota ar - NOT IN Keyword
Klauzula WHERE, lietojot to kopā ar atslēgvārdu NOT IN, neietekmē rindas, kuru vērtības sakrīt ar atslēgvārdā NOT IN sniegto vērtību sarakstu. Šis vaicājums dod rindas, kurās dalības_numurs NAV 1, 2 vai 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret "myflixdb" rada šādus rezultātus.
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 |
Klauzula apvienojumā ar - SALĪDZINĀJUMA operatori
Mazāk par (), vienāds ar (=), kas nav vienāds ar () salīdzināšanas operatoriem, var izmantot klauzulu WHERE= Vienāds ar
Šis skripts saņem visas dalībnieces no dalībnieku tabulas, izmantojot vienādu ar salīdzinājumu operatoru.SELECT * FROM `members` WHERE `gender` = 'Female';
Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret "myflixdb" rada šādus rezultātus.
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 |
> Lielāks par
Šis skripts no maksājumu tabulas iegūst visus maksājumus, kuru vērtība pārsniedz 2000. SELECT * FROM `maksājumi` WHERE` summa_maksāts`> 2000; Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret "myflixdb" rada šādus rezultātus.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 |
<> Nav vienāds ar
Šis skripts iegūst visas filmas, kuru kategorijas ID nav 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret "myflixdb" rada šādus rezultātus.
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 |
Kopsavilkums
- Klauzula SQL WHERE tiek izmantota, lai ierobežotu to rindu skaitu, kuras ietekmē vaicājums SELECT, UPDATE vai DELETE.
- SQL nosacījumu WHERE var izmantot kopā ar loģiskajiem operatoriem, piemēram, AND un OR, salīdzināšanas operatoriem, piemēram, = utt.
- Lietojot kopā ar loģisko operatoru AND, ir jāatbilst visiem kritērijiem.
- Lietojot kopā ar loģisko operatoru OR, ir jāatbilst jebkuram no kritērijiem.
- Atslēgas vārds IN tiek izmantots, lai atlasītu rindas, kas atbilst vērtību sarakstam.
Brain Teaser Pieņemsim, ka mēs vēlamies iegūt īrētu filmu sarakstu, kuras nav atgrieztas laikā, 25.06.2012. Lai to panāktu, mēs varam izmantot SQL WHERE paziņojuma klauzulu kopā ar mazāku nekā salīdzināšanas operatoru un loģisko operatoru AND.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Izpildot iepriekš minēto skriptu MySQL darbagaldā, tiek iegūti šādi rezultāti.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |