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.

klauzule WHERE MySQL
klauzule WHERE MySQL

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 email
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.

Podívejme se nyní 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í toho bychom použili níže uvedený scénář.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Spuštění výše uvedeného skriptu v MySQL workbench proti „myflixdb“ poskytuje následující výsledky.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

klauzule WHERE v kombinaci s – OR LOGICKÝ OperaTor

Klauzule WHERE, je-li použita společně s operátorem OR, se provede pouze v případě, že je splněno některé nebo celé zadané kritérium filtru.
Následující scénář obsahuje všechny filmy v kategorii 1 nebo kategorii 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Spuštění výše uvedeného skriptu v MySQL workbench proti „myflixdb“ poskytuje 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 v kombinaci s – IN Klíčové slovo

THE WHERE IN MySQL klauzule, pokud je použita společně s klíčovým slovem IN, ovlivní pouze řádky, jejichž hodnoty odpovídají seznamu hodnot poskytnutých v klíčovém slově IN. The MySQL Příkaz IN pomáhá snížit počet klauzulí OR, které možná budete muset použít.
Následující MySQL Dotaz WHERE IN poskytuje řádky, kde členské_číslo je buď 1, 2 nebo 3
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 email
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

Klauzule WHERE při použití společně s klíčovým slovem NOT IN NEOVLIVŇUJE řádky, jejichž hodnoty odpovídají seznamu hodnot zadaným v klíčovém slově NOT IN.
Následující dotaz poskytuje řádky, kde členské_číslo NENÍ 1, 2 nebo 3
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 email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

klauzule WHERE v kombinaci s – SROVNÁNÍ Operatorů

Operátory porovnání menší než (), rovno (=), nerovná se () lze použít s klauzulí WHERE

= Rovná

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';

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 email
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ž

Následující skript získá všechny platby, které jsou větší než 2,000 XNUMX z tabulky plateb.
SELECT * FROM `platby` WHERE `zaplacená_částka` > 2000;
Spuštění výše uvedeného skriptu v MySQL workbench proti „myflixdb“ poskytuje 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í scénář obsahuje všechny filmy, jejichž id kategorie není 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Spuštění výše uvedeného skriptu v MySQL workbench proti „myflixdb“ poskytuje 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

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

Předpokládejme, že chceme získat seznam vypůjčených filmů, které nebyly vráceny včas 25. 06. 2012. K dosažení toho můžeme použít klauzuli příkazu SQL WHERE spolu s operátorem porovnání menší než a logickým operátorem AND.
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

Shrňte tento příspěvek takto: