MySQL WHERE Клауза: И, ИЛИ, IN, NOT IN Пример за заявка

Какво представлява клаузата WHERE в MySQL?

КЪДЕ клауза in MySQL е ключова дума, използвана за указване на точните критерии за данни или редове, които ще бъдат засегнати от посочения SQL оператор. Клаузата WHERE може да се използва с SQL изрази като INSERT, UPDATE, SELECT и DELETE за филтриране на записи и извършване на различни операции върху данните.

Разгледахме как да правим заявки за данни от a база данни използвайки оператора SELECT в предишния урок. Операторът SELECT върна всички резултати от заявената таблица на базата данни.

Това обаче са моменти, когато искаме да ограничим резултатите от заявката до определено условие. Клаузата WHERE в SQL е полезна в такива ситуации.

WHERE клауза в MySQL
WHERE клауза в MySQL

WHERE клауза Синтаксис

Основният синтаксис за клаузата WHERE, когато се използва в a MySQL Изявлението SELECT WHERE е както следва.

SELECT * FROM tableName WHERE condition;

ТУК

  • „ИЗБЕРЕТЕ * ОТ име на таблица“ е стандартът SELECT израз
  • „КЪДЕ“ е ключовата дума, която ограничава набора от резултати от нашата заявка за избор и „състояние“ е филтърът, който трябва да се приложи към резултатите. Филтърът може да бъде диапазон, единична стойност или подзаявка.

Нека сега да разгледаме a практически пример.

Да предположим, че искаме да получим личните данни на член от таблицата на членовете, като имаме членски номер 1, ще използваме следния скрипт, за да постигнем това.

SELECT * FROM `members` WHERE `membership_number` = 1;

Изпълнение на горния скрипт в MySQL работна маса на „myflixdb“ ще доведе до следните резултати.

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

Клауза WHERE в комбинация с – И ЛОГИЧНО OperaTor

Условието WHERE в MySQL когато се използва заедно с логическия оператор И, се изпълнява само ако ВСИЧКИ посочени критерии за филтър са изпълнени.

Нека сега да разгледаме един практически пример – Да предположим, че искаме да получим списък с всички филми в категория 2, които са пуснати през 2008 г., ще използваме скрипта, показан по-долу, за да постигнем това.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Изпълнение на горния скрипт в MySQL workbench срещу “myflixdb” дава следните резултати.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Клауза WHERE в комбинация с – OR ЛОГИЧНО OperaTor

Клаузата WHERE, когато се използва заедно с оператора OR, се изпълнява само ако е изпълнен някой или целият указан критерии за филтър.
Следният скрипт получава всички филми в категория 1 или категория 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Изпълнение на горния скрипт в MySQL workbench срещу “myflixdb” дава следните резултати.
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

Клауза WHERE в комбинация с – IN Ключова дума

КЪДЕ в MySQL клауза, когато се използва заедно с ключовата дума IN, засяга само редовете, чиито стойности съвпадат със списъка със стойности, предоставен в ключовата дума IN. The MySQL Операторът IN помага да се намали броят на клаузите ИЛИ, които може да се наложи да използвате.
По-долу MySQL Заявката WHERE IN дава редове, където membership_number е 1, 2 или 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Изпълнение на горния скрипт в MySQL workbench срещу “myflixdb” дава следните резултати.

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

Клауза WHERE в комбинация с – НЕ В Ключова дума

Клаузата WHERE, когато се използва заедно с ключовата дума NOT IN, НЕ засяга редовете, чиито стойности съвпадат със списъка със стойности, предоставен в ключовата дума NOT IN.
Следната заявка дава редове, където membership_number НЕ е 1, 2 или 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Изпълнение на горния скрипт в MySQL workbench срещу “myflixdb” дава следните резултати.

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

Клауза WHERE в комбинация с – СРАВНЕНИЕ Operaтори

Операторите за сравнение по-малко от (), равно на (=), не е равно на () могат да се използват с клаузата WHERE

= Равна на

Следният скрипт извлича всички членове от женски пол от таблицата с членове, използвайки оператора за равно на сравнение.
SELECT * FROM `members` WHERE `gender` = 'Female';

Изпълнение на горния скрипт в MySQL workbench срещу “myflixdb” дава следните резултати.

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

> По-велик от

Следният скрипт получава всички плащания, които са по-големи от 2,000 от таблицата с плащания.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
Изпълнение на горния скрипт в MySQL workbench срещу “myflixdb” дава следните резултати.
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

< > Не е равно на

Следният скрипт получава всички филми, чийто идентификатор на категория не е 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Изпълнение на горния скрипт в MySQL workbench срещу “myflixdb” дава следните резултати.
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

Oбобщение

  • Клаузата SQL WHERE се използва за ограничаване на броя на редовете, засегнати от SELECT, UPDATE или DELETE заявка.
  • Условието WHERE в SQL може да се използва заедно с логически оператори като AND и OR, оператори за сравнение като ,= и т.н.
  • Когато се използва с И логически оператор, всички критерии трябва да бъдат изпълнени.
  • Когато се използва с логическия оператор OR, всеки от критериите трябва да бъде изпълнен.
  • Ключовата дума IN се използва за избиране на редове, съответстващи на списък със стойности.

Главоблъсканица

Да предположим, че искаме да получим списък с наети филми, които не са върнати навреме на 25/06/2012. Можем да използваме клаузата на оператора SQL WHERE заедно с оператора за сравнение по-малко и логическия оператор И, за да постигнем това.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

Изпълнение на горния скрипт в MySQL workbench дава следните резултати.

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0

Обобщете тази публикация с: