Co je klauzule WHERE v MySQL?
WHERE Clause v MySQL je klíčové slovo používané k určení přesných kritérií dat nebo řádků, které budou ovlivněny zadaným příkazem SQL. Klauzuli WHERE lze použít s příkazy SQL, jako je INSERT, UPDATE, SELECT a DELETE, k filtrování záznamů a provádění různých operací s daty.
Podívali jsme se na to, jak dotazovat data z databáze pomocí příkazu SELECT v předchozím kurzu. Příkaz SELECT vrátil všechny výsledky z dotazované databázové tabulky.
Jsou však časy, kdy chceme omezit výsledky dotazu na zadanou podmínku. V takových situacích se klauzule WHERE v SQL hodí.
WHERE klauzule Syntaxe
Základní syntaxe klauzule WHERE při použití v příkazu MySQL SELECT WHERE je následující.
SELECT * FROM tableName WHERE condition;
TADY
- "SELECT * FROM tableName" je standardní příkaz SELECT
- „WHERE“ je klíčové slovo, které omezuje naši vybranou sadu výsledků dotazu, a „podmínka“ je filtr, který se použije na výsledky. Filtr může být rozsah, jedna hodnota nebo dílčí dotaz.
Pojďme se nyní podívat na praktický příklad .
Předpokládejme, že chceme získat osobní údaje člena z tabulky členů vzhledem k číslu členství 1, k dosažení tohoto cíle bychom použili následující skript.
SELECT * FROM `members` WHERE `membership_number` = 1;
Provedení výše uvedeného skriptu v pracovní ploše MySQL na „myflixdb“ by přineslo následující 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 klauzule v kombinaci s - A LOGICKÝ operátor
Podmínka WHERE v MySQL při použití společně s logickým operátorem AND se provede, pouze pokud jsou splněna VŠECHNA specifikovaná kritéria filtru. Pojďme se nyní podívat na praktický příklad - Předpokládejme, že chceme získat seznam všech filmů v kategorii 2, které byly vydány v roce 2008, k dosažení tohoto cíle bychom použili níže uvedený skript.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti "myflixdb" přináší následující výsledky.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
KDE klauzule v kombinaci s - NEBO LOGICKÝ operátor
Klauzule WHERE, pokud je použita společně s operátorem OR, je provedena pouze v případě, že je splněno jakékoli nebo celé zadané kritérium filtru. Následující skript získá všechny filmy v kategorii 1 nebo 2SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti "myflixdb" přináší následující 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 |
Klauzule WHERE kombinovaná s - IN Klíčové slovo
Klauzule WHERE v MySQL, pokud je použita společně s klíčovým slovem IN, ovlivní pouze řádky, jejichž hodnoty odpovídají seznamu hodnot poskytnutým v klíčovém slově IN. Příkaz MySQL IN pomáhá snížit počet klauzulí OR, které možná budete muset použít. Následující dotaz MySQL WHERE IN poskytuje řádky, kde je číslo_členství 1, 2 nebo 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti "myflixdb" přináší následující 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. |
WHERE klauzule kombinovaná s - NOT IN Klíčové slovo
Klauzule WHERE při použití společně s klíčovým slovem NOT IN NEVZTAHUJE na řádky, jejichž hodnoty odpovídají seznamu hodnot poskytnutým v klíčovém slově NOT IN. Následující dotaz poskytuje řádky, kde číslo_členství NENÍ 1, 2 nebo 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti "myflixdb" přináší následující 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 klauzule v kombinaci s - POROVNÁNÍ operátorů
S klauzulí WHERE lze použít operátory porovnání menší než (), rovné (=), ne rovné ()= Rovná se
Následující skript získá všechny ženské členy z tabulky členů pomocí operátoru rovná se porovnání.SELECT * FROM `members` WHERE `gender` = 'Female';
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti "myflixdb" přináší následující 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ětší než
Následující skript získá všechny platby, které jsou větší než 2 000, z tabulky plateb. VYBERTE * Z "plateb" KDE `částka_ zaplaceno '> 2000; Provedení výše uvedeného skriptu v pracovní ploše MySQL proti "myflixdb" přináší následující 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á se
Následující skript získá všechny filmy, jejichž ID kategorie není 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Provedení výše uvedeného skriptu v pracovní ploše MySQL proti "myflixdb" přináší následující 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 |
souhrn
- Klauzule SQL WHERE se používá k omezení počtu řádků ovlivněných dotazem SELECT, UPDATE nebo DELETE.
- Podmínku WHERE v SQL lze použít ve spojení s logickými operátory, jako jsou AND a OR, operátory porovnání, jako, = atd.
- Při použití s logickým operátorem AND musí být splněna všechna kritéria.
- Při použití s logickým operátorem OR musí být splněno kterékoli z kritérií.
- Klíčové slovo IN se používá k výběru řádků odpovídajících seznamu hodnot.
Hlavolam Předpokládejme, že chceme získat seznam vypůjčených filmů, které nebyly včas 25. 6. 2012 vráceny. K dosažení toho můžeme použít klauzuli příkazu SQL WHERE společně s operátorem less than comparison a logickým operátorem AND.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Provedení výše uvedeného skriptu v pracovní ploše MySQL poskytuje následující výsledky.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |