Kaj je klavzula WHERE v MySQL?
Klavzula WHERE v MySQL je ključna beseda, ki se uporablja za določanje natančnih meril podatkov ali vrstic, na katere bo naveden stavek SQL vplival. Stavek WHERE je mogoče uporabiti s stavki SQL, kot so INSERT, UPDATE, SELECT in DELETE, za filtriranje zapisov in izvajanje različnih operacij s podatki.
Preučili smo, kako poizvedovati po podatkih iz baze podatkov z uporabo stavka SELECT v prejšnji vadnici. Stavek SELECT je vrnil vse rezultate iz poizvedbene tabele baze podatkov.
So pa časi, ko želimo rezultate poizvedbe omejiti na določen pogoj. Klavzula WHERE v SQL je v takšnih primerih priročna.
Klavzula WHERE Sintaksa
Osnovna sintaksa za stavek WHERE, kadar se uporablja v stavku MySQL SELECT WHERE, je naslednja.
SELECT * FROM tableName WHERE condition;
TUKAJ
- "SELECT * FROM tableName" je standardni stavek SELECT
- "KJE" je ključna beseda, ki omejuje naš nabor rezultatov izbrane poizvedbe, "pogoj" pa je filter, ki se uporabi za rezultate. Filter je lahko obseg, ena vrednost ali podpoizvedba.
Oglejmo si zdaj praktični primer .
Recimo, da želimo dobiti članske osebne podatke iz tabele članov glede na številko članstva 1, bi za to uporabili naslednji skript.
SELECT * FROM `members` WHERE `membership_number` = 1;
Izvedba zgornjega skripta v delovnem okolju MySQL na "myflixdb" bi dala naslednje rezultate.
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. |
Klavzula WHERE v kombinaciji z - IN LOGICAL Operator
Pogoj WHERE v MySQL, kadar se uporablja skupaj z logičnim operatorjem AND, se izvede le, če so izpolnjeni VSE navedeni kriteriji filtriranja. Oglejmo si zdaj praktični primer - če želimo dobiti seznam vseh filmov kategorije 2, ki so bili izdani leta 2008, bi uporabili spodnji scenarij, da to dosežemo.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Klavzula WHERE v kombinaciji z - OR LOGICAL Operator
Klavzula WHERE, kadar se uporablja skupaj z operaterjem OR, se izvede le, če je izpolnjeno katero koli ali celotno določeno merilo filtra. Naslednji scenarij vsebuje vse filme v kategoriji 1 ali kategoriji 2SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.
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 |
Stavek WHERE v kombinaciji s ključno besedo - IN
Stavek WHERE v MySQL, kadar se uporablja skupaj s ključno besedo IN, vpliva samo na vrstice, katerih vrednosti se ujemajo s seznamom vrednosti, navedenim v ključni besedi IN. Izjava MySQL IN pomaga zmanjšati število stavkov OR, ki jih boste morda morali uporabiti. Naslednja poizvedba MySQL WHERE IN daje vrstice, v katerih je članstvo_številka 1, 2 ali 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.
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. |
Stavek WHERE v kombinaciji z - NOT IN Keyword
Stavek WHERE, kadar se uporablja skupaj s ključno besedo NOT IN, NE vpliva na vrstice, katerih vrednosti se ujemajo s seznamom vrednosti iz ključne besede NOT IN. Naslednja poizvedba daje vrstice, v katerih število_članic NI 1, 2 ali 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.
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 |
Klavzula WHERE v kombinaciji z - OPERATERJI
Operatorje primerjave z manj kot (), enako (=), ne z () je mogoče uporabiti s stavkom WHERE= Enako
Naslednji skript dobi vse ženske člane iz tabele članov z uporabo enakega operatorja primerjave.SELECT * FROM `members` WHERE `gender` = 'Female';
Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.
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 |
> Več kot
Naslednji skript dobi iz plačila tabele vsa plačila, ki presegajo 2.000. IZBERITE * OD `plačila` KJE` plačano_znesek`> 2000; Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.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 |
<> Ni enako
Naslednji scenarij vsebuje vse filme, katerih id kategorije ni 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z "myflixdb" povzroči naslednje rezultate.
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 |
Povzetek
- Stavek SQL WHERE se uporablja za omejitev števila vrstic, na katere vpliva poizvedba SELECT, UPDATE ali DELETE.
- Pogoj WHERE v SQL se lahko uporablja skupaj z logičnimi operatorji, kot sta AND in OR, primerjalnimi operaterji, kot je, = itd.
- Pri uporabi z logičnim operatorjem AND morajo biti izpolnjeni vsi kriteriji.
- Če se uporablja z logičnim operatorjem OR, mora biti izpolnjeno katero koli merilo.
- Ključna beseda IN se uporablja za izbiro vrstic, ki se ujemajo s seznamom vrednosti.
Mozgalica Predpostavimo, da želimo dobiti seznam izposojenih filmov, ki niso bili vrnjeni pravočasno 25. 6. 2012. Za to lahko uporabimo stavek SQL WHERE skupaj z operatorjem manj kot primerjavo in logičnim operatorjem AND.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Izvedba zgornjega skripta v delovnem okolju MySQL daje naslednje rezultate.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |