MySQL WHERE Клауза: И, ИЛИ, IN, NOT IN Пример за заявка
Какво представлява клаузата WHERE в MySQL?
КЪДЕ клауза in MySQL е ключова дума, използвана за указване на точните критерии за данни или редове, които ще бъдат засегнати от посочения SQL оператор. Клаузата WHERE може да се използва с SQL изрази като INSERT, UPDATE, SELECT и DELETE за филтриране на записи и извършване на различни операции върху данните.
Разгледахме как да правим заявки за данни от a база данни използвайки оператора SELECT в предишния урок. Операторът SELECT върна всички резултати от заявената таблица на базата данни.
Това обаче са моменти, когато искаме да ограничим резултатите от заявката до определено условие. Клаузата WHERE в SQL е полезна в такива ситуации.

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 | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
Клауза WHERE в комбинация с – И ЛОГИЧНО OperaTor
Условието WHERE в MySQL когато се използва заедно с логическия оператор И, се изпълнява само ако ВСИЧКИ посочени критерии за филтър са изпълнени.
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 |
Клауза WHERE в комбинация с – OR ЛОГИЧНО 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 |
Клауза WHERE в комбинация с – IN Ключова дума
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 | |
|---|---|---|---|---|---|---|---|
| 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 в комбинация с – НЕ В Ключова дума
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 | |
|---|---|---|---|---|---|---|---|
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Клауза WHERE в комбинация с – СРАВНЕНИЕ Operaтори
= Равна на
SELECT * FROM `members` WHERE `gender` = 'Female';
Изпълнение на горния скрипт в MySQL workbench срещу “myflixdb” дава следните резултати.
| 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 |
> По-велик от
| 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 |
< > Не е равно на
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 |
Oбобщение
- Клаузата SQL WHERE се използва за ограничаване на броя на редовете, засегнати от SELECT, UPDATE или DELETE заявка.
- Условието WHERE в SQL може да се използва заедно с логически оператори като AND и OR, оператори за сравнение като ,= и т.н.
- Когато се използва с И логически оператор, всички критерии трябва да бъдат изпълнени.
- Когато се използва с логическия оператор OR, всеки от критериите трябва да бъде изпълнен.
- Ключовата дума IN се използва за избиране на редове, съответстващи на списък със стойности.
Главоблъсканица
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 |
