Ознайомлення з операторами AND і OR в MySQL
Із сьогоднішньої практичної статті ви дізнаєтеся, як за допомогою операторів AND і OR в MySQL об’єднувати кілька логічних виразів для фільтрації результатів в базі даних.
Оператор AND в MySQL
Оператор AND
(І) – це логічний оператор, який об’єднує два або більше логічних вирази і повертає true
(істина), тільки якщо обидва вирази мають значення true
. Оператор AND
повертає false
(хиба), якщо одне з двох виразів оцінюється як false
.
Нижче представлений синтаксис оператора AND:
логічний_вираз_1 AND логічний_вираз_2
Логічний вираз – це булевий вираз, тобто, вираз, результатом якого є або ІСТИНА (true
), або ХИБА (false
), або NULL
.
У цій табличці показано результати оператора AND при різних комбінаціях з true
, false
і null
.
TRUE | FALSE | NULL | |
---|---|---|---|
TRUE | TRUE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
Оператор AND
часто використовується в умові WHERE операторів SELECT, UPDATE, DELETE для формування більш детальної умови. Оператор AND
також використовується в умовах приєднання виразів INNER JOIN
та LEFT JOIN
.
При оцінці виразу з оператором AND
, MySQL зупиняє оцінку решти частин умови щоразу, коли він може визначити результат. Ця функція називається оцінкою короткого замикання.
Розглянемо наступний приклад.
SELECT 1 = 0 AND 1 / 0;
Зверніть увагу, що в MySQL нуль вважається хибним (false), а ненульове значення вважається істиною (true).
В результаті оцінки короткого замикання, MySQL буде оцінювати тільки першу частину виразу (1 = 0
). Оскільки вираз 1 = 0
повертає false
, MySQL може завершити оцінку всього виразу, результатом якого буде false
. MySQL не буде оцінювати решту виразу (1 / 0
). Якщо ж це було б не так, тоді ви отримаєте помилку, оскільки не можна ділити на нуль.
Приклад використання оператора AND в MySQL
У наступному запиті оператор AND
використовується для пошуку автомобілів, які випускаються і в Німеччині, і в США:
SELECT cars, country FROM cars WHERE country = 'Germany' AND country = 'USA';
Використовуючи оператор AND
, ви можете комбінувати й більше двох логічних виразів.
Оператор OR в MySQL
Оператор OR
(АБО) в MySQL об’єднує два логічних вирази і повертає true
, коли будь-яка з цих умов виконується.
Нижче показаний синтаксис оператора OR:
логічний_вираз_1 OR логічний_вираз_2
І логічний_вираз_1
, і логічний_вираз_2
є булевим типом виразу, яке повертає true
, false
або NULL
.
У цій табличці показано результати оператора OR
при різних комбінаціях з true
, false
і null
.
TRUE | FALSE | NULL | |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
Оцінка короткого замикання оператора OR в MySQL
MySQL використовує оцінку короткого замикання також і для оператора OR
(АБО). Іншими словами, MySQL перестає оцінювати іншу частину оператора, коли він може визначити результат.
Давайте розглянемо наступний приклад запиту:
SELECT 1 = 1 OR 1 / 0;
Оскільки вираз 1 = 1
завжди повертає true
, MySQL не буде оцінювати вираз 1 / 0
. Якщо ж це станеться, він видасть помилку ділення на нуль.
Пріоритет оператора OR в MySQL
Коли ви використовуєте більше одного логічного оператора у виразі, MySQL завжди оцінює оператори OR
після операторів AND
. Це називається пріоритет оператора, який визначає порядок оцінки операторів. MySQL спочатку оцінює оператор з більш високим пріоритетом.
Давайте розглянемо наступний приклад:
SELECT true OR false AND false;
Як це працює:
- По-перше, MySQL оцінює оператор
AND
, тому виразfalse AND false
повертаєfalse
. - По-друге, MySQL обчислює оператор
OR
, тому виразtrue OR false
повертаєtrue
.
Щоб змінити порядок оцінки, використовуйте круглі дужки, наприклад так:
SELECT (true OR false) AND false;
Як це працює:
- По-перше, MySQL оцінює вираз в дужках
(true OR false)
і повертаєtrue
- По-друге, MySQL оцінює решту оператора,
true AND false
і повертаєfalse
.
Приклади використання оператора OR в MySQL
У наступному запиті оператор OR використовується для пошуку автомобілів, які випускаються або в Німеччині, або в США:
SELECT cars, country FROM cars WHERE country = 'Germany' OR country = 'USA';
В результаті цього запиту ви отримаєте значення бази даних по автомобілях, які випускаються або в Німеччині, або в США.
В результаті наступного запиту ви отримаєте значення бази даних по автомобілях, які випускаються або в Німеччині, або в США, а також мають ціну більше 20 тис. доларів.
SELECT cars, country, carPrice FROM cars WHERE(country = 'Germany' OR country = 'USA') AND carPrice > 20000;
Із сьогоднішньої практичної статті ви дізналися, як використовувати оператори AND
і OR
в MySQL, щоб об’єднувати кілька логічних виразів для фільтрації результатів в базі даних.
Останні пости
Соломон
Життя нас вчить, що свою пару ми пізнаємо, коли розлучаємося, своїх братів ми пізнаємо, коли… Читати далі
Річард Бах
Жодне бажання не дається тобі окремо від сили, що дозволяє його здійснити. Хоча, можливо, для… Читати далі
Стівен Кінг
Життя — це безперервний досвід, і навіть найгірші моменти займають своє місце у пазлі нашого… Читати далі
невідомий автор
Люди, які люблять самотність, дорого заплатили за дружбу з кимось... (невідомий автор) Читати далі
Наполеон Гілл
Що розум людини може осягнути і в що він може повірити, того він здатен досягти… Читати далі