MySQL WHERE Clause: AND, OR, IN, NOT IN Query Example

Obsah:

Anonim

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 v MySQL

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 email
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 2
SELECT * 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 3
SELECT * 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 email
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 3
SELECT * 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 email
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 email
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