Из сегодняшней практической статьи вы узнаете, как с помощью операторов AND и OR в 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
используется для поиска автомобилей, которые выпускаются и в Германии, и в США:
SELECT cars, country FROM cars WHERE country = 'Germany' AND country = 'USA';
Используя оператор AND
, вы можете комбинировать и более двух логических выражений.
Оператор 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 |
MySQL использует оценку короткого замыкания также и для оператора OR (ИЛИ). Другими словами, MySQL перестает оценивать оставшиеся части оператора, когда он может определить результат.
Давайте рассмотрим следующий пример запроса:
SELECT 1 = 1 OR 1 / 0;
Поскольку выражение 1 = 1
всегда возвращает true
, MySQL не будет оценивать выражение 1 / 0
. Если же это произойдет, он выдаст ошибку из-за ошибки деления на ноль.
Когда вы используете более одного логического оператора в выражении, MySQL всегда оценивает операторы OR
после операторов AND
. Это называется приоритет оператора, который определяет порядок оценки операторов. MySQL сначала оценивает оператор с более высоким приоритетом.
Давайте рассмотрим следующий пример:
SELECT true OR false AND false;
Как это работает:
AND
, поэтому выражение false AND false
возвращает false
.OR
, поэтому выражение true OR false
возвращает true
.
Чтобы изменить порядок оценки, используйте круглые скобки, например так:
SELECT (true OR false) AND false;
Как это работает:
(true OR false)
и возвращает true
true AND false
и возвращает false
.
В следующем запросе оператор 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, чтобы объединять несколько логических выражений для фильтрации результатов в базе данных.
Содержание статьи Введение: почему цены решают все Что значит сравнение цен с конкурентами 5 причин,…
В последние годы интерес к саунам в Киеве заметно вырос. Это связано не только с…
В современном ритме мегаполиса отдых стал неотъемлемой частью заботы о здоровье и эмоциональном состоянии. Особенно…
В современном мире цифрового маркетинга Facebook (Meta) остается одной из самых мощных платформ для продвижения…
Этот прибор стал незаменимым элементом арсенала представителей множества профессий, но особенно актуален среди военных. Тепловизор…
Постоянный поток новостей, рабочих задач и личных забот часто приводит к тому, что в голове…