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

Зміст:

Anonim

Що таке пункт WHERE у MySQL?

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

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

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

Речення WHERE в MySQL

Синтаксис речення WHERE

Основний синтаксис речення WHERE при використанні в операторі MySQL SELECT WHERE є таким.

SELECT * FROM tableName WHERE condition;

ТУТ

  • "SELECT * FROM tableName" - це стандартний оператор SELECT
  • "WHERE" - це ключове слово, яке обмежує наш вибір результатів запиту на вибір, а "condition" - фільтр, який застосовується до результатів. Фільтр може бути діапазоном, одним значенням або підзапитом.

Давайте зараз розглянемо практичний приклад .

Припустимо, що ми хочемо отримати особисті дані учасника з таблиці членів з урахуванням номера членства 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 This email address is being protected from spambots. You need JavaScript enabled to view it.

Речення WHERE у поєднанні з оператором AND AND LOGICAL

Умова WHERE в MySQL при використанні разом з логічним оператором AND виконується лише в тому випадку, якщо виконуються ВСІ вказані критерії фільтра. Давайте тепер розглянемо практичний приклад - припустимо, ми хочемо отримати список усіх фільмів категорії 2, які вийшли в прокат у 2008 році, ми б використали сценарій, показаний нижче, щоб досягти цього.

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

Виконання вищезазначеного сценарію в робочому середовищі MySQL проти "myflixdb" дає такі результати.

 
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Застереження WHERE у поєднанні з - OR LOGICAL Operator

Застереження WHERE при використанні разом з оператором OR виконується лише за умови, що виконуються будь-які або всі вказані критерії фільтрації. У наступному сценарії потрапляють усі фільми категорії 1 або категорії 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Виконання вищезазначеного сценарію в робочому середовищі MySQL проти "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

Застереження WHERE у MySQL при використанні разом із ключовим словом IN впливає лише на рядки, значення яких відповідають списку значень, наведеному в ключовому слові IN. Заява MySQL IN допомагає зменшити кількість речень OR, які можуть вам знадобитися. Наступний запит MySQL WHERE IN надає рядки, де кількість членів дорівнює 1, 2 або 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Виконання вищезазначеного сценарію в робочому середовищі 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 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 у поєднанні з - NOT IN Keyword

Речення WHERE при використанні разом із ключовим словом NOT IN НЕ впливає на рядки, значення яких відповідають списку значень, наведеному в ключовому слові NOT IN. Наступний запит дає рядки, де кількість_членів НЕ 1, 2 або 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Виконання вищезазначеного сценарію в робочому середовищі MySQL проти "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 у поєднанні з - Порівняння операторів

Оператори порівняння менше (), що дорівнює (=), не дорівнює (), можуть використовуватися з реченням WHERE

= Дорівнює

Наступний сценарій отримує всіх жінок-членів з таблиці членів за допомогою оператора порівняння, що дорівнює.
SELECT * FROM `members` WHERE `gender` = 'Female';

Виконання вищезазначеного сценарію в робочому середовищі 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 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

> Більше ніж

Наступний сценарій отримує всі платежі, що перевищують 2000, із таблиці платежів. ВИБЕРІТЬ * З `платежів` ДЕ` виплачена сума`> 2000; Виконання вищезазначеного сценарію в робочому середовищі MySQL проти "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 проти "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

Резюме

  • Речення SQL WHERE використовується для обмеження кількості рядків, на які впливає запит SELECT, UPDATE або DELETE.
  • Умова WHERE в SQL може використовуватися разом із логічними операторами, такими як AND та OR, операторами порівняння, такими як, = тощо.
  • При використанні з логічним оператором AND всі критерії повинні відповідати.
  • При використанні з логічним оператором АБО повинен відповідати будь-якому з критеріїв.
  • Ключове слово IN використовується для вибору рядків, що відповідають списку значень.

Мозок, припустимо, ми хочемо отримати список орендованих фільмів, які не були повернуті вчасно 25/06/2012. Для досягнення цього ми можемо використати речення SQL WHERE із оператором меншого порівняння та логічним оператором AND.

SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Виконання вищезазначеного сценарію в робочому середовищі MySQL дає такі результати.
 
reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0