MySQL Речення WHERE: AND, OR, IN, NOT IN Приклад запиту

⚡ Розумний підсумок

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

  • 🔍 Основна мета: Речення WHERE обмежує, яких рядків стосується оператор, тому SELECT, UPDATE та DELETE впливають лише на відповідні рядки.
  • 🔗 І Operaтор: Рядки повертаються лише тоді, коли кожна умова має значення true, що звужує набір результатів.
  • 🔀 OR Operaтор: Рядки повертаються, коли будь-яка окрема умова має значення true, розширюючи результуючий набір.
  • 📋 В і НЕ В: Ключове слово IN зіставляє список значень в одному виразі, тоді як NOT IN виключає той самий список.
  • 🇧🇷 порівняння Operaторс: «Дорівнює» (=), «більше» (>), «менше» (<) та «не дорівнює» (<>) фільтрують числові, текстові та датні стовпці.
  • ⚠️ Обробка NULL: NULL ніколи не збігається з = або <>, тому для перевірки на наявність відсутніх значень потрібні IS NULL та IS NOT NULL.

Що таке речення WHERE в MySQL?

пропозиція WHERE in MySQL це ключове слово, яке використовується для визначення точних критеріїв даних або рядків, на які впливатиме вказаний оператор SQL. Речення WHERE можна використовувати з інструкціями SQL, такими як INSERT, UPDATE, SELECT і DELETE, для фільтрації записів і виконання різноманітних операцій з даними.

Ми розглянули, як запитувати дані з a база даних використовуючи оператор SELECT у попередньому посібнику. Оператор SELECT повернув усі результати із запитуваної таблиці бази даних.

Однак бувають випадки, коли нам потрібно обмежити результати запиту певною умовою. У таких ситуаціях зручно використовувати речення WHERE в SQL, яке працює так само, як і в Запит на видалення або оновлення як це робиться в запиті SELECT.

речення WHERE в MySQL

Синтаксис пропозиції 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 email
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 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

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

Набір результатів показано нижче.

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

Поширені запитання

ДЕ фільтрує окремі рядки перед групуваннямping, тому він не може посилатися на агрегатні функції. HAVING фільтрує групи після виконання GROUP BY, що робить його правильним місцем для таких умов, як COUNT(*) > 5.

Використовуйте IS NULL або IS NOT NULL. OperaТакі оператори, як = та <>, повертають невідоме значення для NULL, тому `postal_address` = NULL нічого не відповідає, тоді як `postal_address` IS NULL працює.

Так, коли відфільтрований стовпець індексовано, MySQL читає лише відповідні рядки замість сканування таблиці.ping стовпець у функції, такий як YEAR(`date_of_birth`) = 1980, запобігає використанню індексу.

Так. Помічники зі штучним інтелектом перетворюють просту англійську на SQL, і MySQL Верстак можна запустити результат. RevПерегляньте кожну умову за вашою схемою, оскільки модель може вигадувати назви стовпців.

Спочатку перевірте це за допомогою SELECT. Неправильний пункт WHERE у Запит на видалення або оновлення може змінити кожен рядок. Перегляньте попередній перегляд збігів рядків, а потім повторно використовуйте ту саму умову для запису.

Підсумуйте цей пост за допомогою: