Ознакомление с операторами 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, чтобы объединять несколько логических выражений для фильтрации результатов в базе данных.
Последние посты
Как выбрать идеальный ноутбук: Полный гайд
Выбор ноутбука может быть сложной задачей в мире, где рынок переполнен вариантами на любой вкус… Читать далее
Томас Эдисон
Наша самая большая слабость заключается в том, что мы быстро сдаемся. Самый верный способ добиться… Читать далее
Самые красивые и впечатляющие мосты со всего мира (ТОП-10)
Мост — это нечто большее, чем просто сооружение, соединяющее два берега. Для того, чтобы появился… Читать далее
Соломон
Жизнь нас учит, что свою пару мы познаем, когда разводимся, своих братьев мы познаем, когда… Читать далее
Чак Паланик
Кто может — тот делает. Кто не может — тот критикует Чак Паланик Читать далее
Ричард Бах
Ни одно желание не дается тебе отдельно от силы, позволяющей его осуществить. Хотя, возможно, для… Читать далее