MySQL Речення WHERE: AND, OR, IN, NOT IN Приклад запиту
⚡ Розумний підсумок
MySQL Речення WHERE фільтрує рядки, перш ніж вони досягнуть результуючого набору, застосовуючи точні критерії до операторів SELECT, UPDATE та DELETE. Розуміння операторів AND, OR, IN, NOT IN та порівняння дозволяє початківцям отримувати саме ті записи, які потрібні для запиту.

Що таке речення WHERE в MySQL?
пропозиція WHERE in MySQL це ключове слово, яке використовується для визначення точних критеріїв даних або рядків, на які впливатиме вказаний оператор SQL. Речення WHERE можна використовувати з інструкціями SQL, такими як INSERT, UPDATE, SELECT і DELETE, для фільтрації записів і виконання різноманітних операцій з даними.
Ми розглянули, як запитувати дані з a база даних використовуючи оператор SELECT у попередньому посібнику. Оператор SELECT повернув усі результати із запитуваної таблиці бази даних.
Однак бувають випадки, коли нам потрібно обмежити результати запиту певною умовою. У таких ситуаціях зручно використовувати речення WHERE в SQL, яке працює так само, як і в Запит на видалення або оновлення як це робиться в запиті SELECT.
Синтаксис пропозиції WHERE
Основний синтаксис речення WHERE такий.
SELECT * FROM tableName WHERE condition;
ТУТ
- «SELECT * FROM tableName» є стандартом Оператор SELECT
- «ДЕ» — ключове слово, яке обмежує набір результатів, і "хвороба" – це фільтр, застосований до результатів. Фільтр може бути діапазоном, одним значенням або підзапитом.
Припустимо, нам потрібні дані учасника з таблиці members, враховуючи номер членства 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 з логічні оператори.
Речення WHERE у поєднанні з – І ЛОГІЧНИЙ Operaтор
За допомогою логічного оператора «І» рядок повертається лише за умови виконання ВСІХ заданих критеріїв.
Припустимо, нам потрібні всі фільми категорії 2, що вийшли у 2008 році. Наведений нижче сценарій дозволяє нам це зробити.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Виконання вищезазначеного скрипта для “myflixdb” призводить до наступного результату.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
І звужує набір результатів. АБО розширює його.
Речення WHERE у поєднанні з – OR ЛОГІЧНИЙ Operaтор
За допомогою оператора АБО рядок повертається, якщо виконується БУДЬ-ЯКИЙ із зазначених критеріїв.
Наступний сценарій потрапляє до всіх фільмів або категорії 1, або категорії 2.
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 |
Ланцюжок багатьох умов OR стає важкочитабельним. Ключове слово IN вирішує цю проблему.
Речення WHERE у поєднанні з – IN ключове слово
Речення WHERE, коли використовується з ключовим словом IN, впливає лише на рядки, значення яких відповідають наданому списку. IN зменшує кількість речень OR, які ви б інакше написали.
Наступні MySQL Запит WHERE IN повертає рядки, де membership_number дорівнює 1, 2 або 3.
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Набір результатів показано нижче.
| 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 |
NOT IN виконує протилежний фільтр.
Речення WHERE у поєднанні з – НЕ В ключове слово
З ключовим словом NOT IN, речення WHERE виключає кожен рядок, значення якого відповідає наданому списку.
Наступний запит повертає рядки, де membership_number НЕ дорівнює 1, 2 або 3.
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Набір результатів показано нижче.
| 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 також фільтрує значення за розміром та рівністю, використовуючи оператори порівняння.
Речення WHERE у поєднанні з – ПОРІВНЯННЯ Operaторс
Оператори порівняння «менше ніж» (<), «дорівнює» (=), «більше ніж» (>) та «не дорівнює» (<>) можна використовувати з реченням WHERE.
= Дорівнює
Наступний сценарій отримує всіх учасників жіночої статі з таблиці members за допомогою оператора порівняння дорівнює.
SELECT * FROM `members` WHERE `gender` = 'Female';
Набір результатів показано нижче.
| 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 |
> Більш чим
Наступний сценарій отримує всі платежі, які перевищують 2,000, із таблиці платежів.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
Набір результатів показано нижче.
| 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;
Набір результатів показано нижче.
| 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 |
Короткий огляд: речення WHERE Operaторс
Оператори, які найчастіше поєднуються з WHERE, наведено нижче. Повні визначення наведено в MySQL посилання на оператора.
| Operaтор | Сенс | Приклад умови |
|---|---|---|
| = | Дорівнює | `gender` = 'Жіноча' |
| <> | Не дорівнює | `category_id` <> 1 |
| > / | Більше ніж / менше ніж | `сума_сплачена` > 2000 |
| ТА / АБО | Усі критерії / будь-які критерії | `category_id` = 2 ТА `year_released` = 2008 |
| ВХІД / НЕ ВХІД | Збігається / виключає список | `номер_членства` IN (1,2,3) |
| НУЛЬ / НЕ НУЛЬ | Тести на відсутні значення | `поштова_адреса` ДОрівнює NULL |
⚠️ Примітка: NULL ніколи не збігається з = або <>. Використовуйте IS NULL або IS NOT NULL, якщо стовпець може не містити значення.
Головоломка: Знайдіть фільми, повернуті із запізненням
Припустимо, нам потрібні орендовані фільми, які не були повернуті до кінцевої дати 25.06.2012. Цього досягаємо, поєднуючи WHERE з оператором «менше» та AND.
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 |

