Що таке пункт WHERE у MySQL?
Речення WHERE у MySQL - це ключове слово, що використовується для вказівки точних критеріїв даних або рядків, на які вплине вказаний оператор SQL. Речення WHERE може використовуватися з такими операторами SQL, як INSERT, UPDATE, SELECT та DELETE, для фільтрування записів та виконання різних операцій над даними.
Ми розглянули, як запитувати дані з бази даних, використовуючи оператор SELECT у попередньому підручнику. Оператор SELECT повернув усі результати із запитуваної таблиці бази даних.
Однак бувають випадки, коли ми хочемо обмежити результати запиту заданою умовою. Застереження WHERE в SQL дуже зручно в таких ситуаціях.
Синтаксис речення 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 | |
---|---|---|---|---|---|---|---|
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 або категорії 2SELECT * 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 або 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 або 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 | |
---|---|---|---|---|---|---|---|
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 |