MySQL Klauzule WHERE: AND, OR, IN, NOT IN Příklad dotazu
V čem je klauzule WHERE MySQL?
klauzule WHERE in 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 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 se dotazovat na data z a 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 chvíle, kdy chceme omezit výsledky dotazu na určitou podmínku. V takových situacích se hodí klauzule WHERE v SQL.

Syntaxe klauzule WHERE
Základní syntaxe klauzule WHERE při použití v a MySQL Příkaz SELECT WHERE je následující.
SELECT * FROM tableName WHERE condition;
ZDE
- "VYBRAT * Z názvu tabulky" je standard příkaz SELECT
- "KDE" je klíčové slovo, které omezuje naši sadu výsledků výběrového dotazu a "stav" je filtr, který se použije na výsledky. Filtr může být rozsah, jedna hodnota nebo dílčí dotaz.
Podívejme se nyní na a praktický příklad.
Předpokládejme, že chceme získat osobní údaje člena z tabulky členů s členským číslem 1, použili bychom k tomu následující skript.
SELECT * FROM `members` WHERE `membership_number` = 1;
Spuštění výše uvedeného skriptu v MySQL ponk 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 | janetjones@yagoo.cm |
klauzule WHERE v kombinaci s – A AUTOMATIZACI LOGICKÝ OperaTor
Stav KDE v MySQL při použití společně s logickým operátorem AND se provede pouze tehdy, jsou-li splněna VŠECHNA zadaná kritéria filtru.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
klauzule WHERE v kombinaci s – OR LOGICKÝ OperaTor
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
| 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 v kombinaci s – IN Klíčové slovo
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Spuštění výše uvedeného skriptu v MySQL workbench proti „myflixdb“ poskytuje 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 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
klauzule WHERE v kombinaci s – NE V Klíčové slovo
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Spuštění výše uvedeného skriptu v MySQL workbench proti „myflixdb“ poskytuje 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 |
klauzule WHERE v kombinaci s – SROVNÁNÍ Operatorů
= Rovná
SELECT * FROM `members` WHERE `gender` = 'Female';
Spuštění výše uvedeného skriptu v MySQL workbench proti „myflixdb“ poskytuje 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 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Větší než
| 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
SELECT * FROM `movies` WHERE `category_id`<> 1;
| 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 |
Shrnutí
- Klauzule SQL WHERE se používá k omezení počtu řádků ovlivněných příkazem SELECT, UPDATE nebo DELETE dotaz.
- Podmínku WHERE v SQL lze použít ve spojení s logickými operátory, jako je AND a OR, operátory porovnání, jako je ,= atd.
- Při použití s AND logický operátor, 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
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Spuštění výše uvedeného skriptu v MySQL workbench dává 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 |
