Čo je klauzula WHERE v MySQL?
KDE Klauzula v MySQL je kľúčové slovo používané na určenie presných kritérií údajov alebo riadkov, ktoré budú ovplyvnené uvedeným príkazom SQL. Klauzulu WHERE možno použiť s príkazmi SQL ako INSERT, UPDATE, SELECT a DELETE na filtrovanie záznamov a vykonávanie rôznych operácií s údajmi.
V predchádzajúcom návode sme sa pozreli na to, ako dotazovať údaje z databázy pomocou príkazu SELECT. Príkaz SELECT vrátil všetky výsledky z dotazovanej databázovej tabuľky.
Sú to však časy, keď chceme obmedziť výsledky dotazu na zadanú podmienku. V takýchto situáciách sa hodí klauzula WHERE v jazyku SQL.

Klauzula WHERE Syntax
Základná syntax pre klauzulu WHERE pri použití v príkaze MySQL SELECT WHERE je nasledovná.
SELECT * FROM tableName WHERE condition;
TU
- „SELECT * FROM tableName“ je štandardný príkaz SELECT
- „WHERE“ je kľúčové slovo, ktoré obmedzuje našu množinu výsledkov vyhľadávania vybraných dotazov, a „podmienka“ je filter, ktorý sa má použiť na výsledky. Filtrom môže byť rozsah, jedna hodnota alebo čiastkový dopyt.
Pozrime sa teraz na praktický príklad .
Predpokladajme, že chceme získať osobné údaje člena z tabuľky členov vzhľadom na číslo členstva 1, na to by sme použili nasledujúci skript.
SELECT * FROM `members` WHERE `membership_number` = 1;
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL na „myflixdb“ by prinieslo nasledujúce výsledky.
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. |
KDE je klauzula kombinovaná s - A LOGICKÝM operátorom
Podmienka WHERE v MySQL, ak sa používa spolu s logickým operátorom AND, sa vykoná, iba ak sú splnené VŠETKY zadané kritériá filtra. Pozrime sa teraz na praktický príklad - Predpokladajme, že chceme získať zoznam všetkých filmov v kategórii 2, ktoré boli uvedené v roku 2008, na dosiahnutie ktorého by sme použili nižšie uvedený skript.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti „myflixdb“ prinesie nasledujúce výsledky.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
KDE je klauzula kombinovaná s - ALEBO LOGICKÝM operátorom
Klauzula WHERE, ak sa používa spolu s operátorom OR, sa vykoná, iba ak sú splnené niektoré alebo celé zadané kritériá filtra. Nasledujúci skript obsahuje všetky filmy kategórie 1 alebo 2SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti „myflixdb“ prinesie nasledujúce výsledky.
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 |
Klauzula WHERE kombinovaná s - IN Kľúčové slovo
Klauzula WHERE in MySQL, ak sa používa spolu s kľúčovým slovom IN, ovplyvňuje iba riadky, ktorých hodnoty sa zhodujú so zoznamom hodnôt poskytnutým v kľúčovom slove IN. Príkaz MySQL IN pomáha znižovať počet klauzúl OR, ktoré budete pravdepodobne musieť použiť. Nasledujúci dopyt MySQL WHERE IN poskytuje riadky, kde je číslo_členstva 1, 2 alebo 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti „myflixdb“ prinesie nasledujúce výsledky.
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. |
KDE klauzula kombinovaná s - NIE JE V kľúčovom slove
Klauzula WHERE, ak sa používa spolu s kľúčovým slovom NOT IN, NEMÁ vplyv na riadky, ktorých hodnoty sa zhodujú so zoznamom hodnôt poskytnutým v kľúčovom slove NOT IN. Nasledujúci dopyt poskytuje riadky, kde číslo_členstva NIE JE 1, 2 alebo 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti „myflixdb“ prinesie nasledujúce výsledky.
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 |
KDE je klauzula kombinovaná s - POROVNÁVANIE operátorov
Operátory porovnania menej ako (), rovné (=), nie rovné () je možné použiť s klauzulou WHERE= Rovná sa
Nasledujúci skript získa všetky ženské členky z tabuľky členov pomocou operátora porovnania.SELECT * FROM `members` WHERE `gender` = 'Female';
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti „myflixdb“ prinesie nasledujúce výsledky.
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 |
> Väčšie ako
Nasledujúci skript získa všetky platby, ktoré sú vyššie ako 2 000, z tabuľky platieb. VYBERTE * Z "platieb" KDE `vyplatená suma '> 2000; Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti „myflixdb“ prinesie nasledujúce výsledky.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 |
<> Nerovná sa
Nasledujúci skript získa všetky filmy, ktorých ID kategórie nie je 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti „myflixdb“ prinesie nasledujúce výsledky.
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 |
Zhrnutie
- Klauzula SQL WHERE sa používa na obmedzenie počtu riadkov ovplyvnených dotazom SELECT, UPDATE alebo DELETE.
- Podmienku WHERE v SQL je možné použiť v spojení s logickými operátormi ako AND a OR, operátormi porovnania ako, = atď.
- Pri použití s logickým operátorom AND musia byť splnené všetky kritériá.
- Pri použití s logickým operátorom OR musí byť splnené ktorékoľvek z kritérií.
- Kľúčové slovo IN sa používa na výber riadkov zhodujúcich sa so zoznamom hodnôt.
Brain Teaser Predpokladajme, že chceme získať zoznam požičaných filmov, ktoré neboli vrátené v termíne 25. 6. 2012. Aby sme to dosiahli, môžeme použiť doložku príkazu SQL WHERE spolu s operátorom menej ako porovnanie a logickým operátorom AND.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Vykonanie vyššie uvedeného skriptu v pracovnej ploche MySQL poskytne nasledujúce výsledky.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |