Ознакомление с операторами 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, чтобы объединять несколько логических выражений для фильтрации результатов в базе данных.