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