English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Операторы AND и OR в SQL

В этом руководстве вы узнаете, как использовать операторы AND и OR в предложении WHERE для фильтрации записей по нескольким условиям.

Выбор записей по условиям

В предыдущей главе мы изучили, как использовать единственный условие с предложением WHERE для получения записей из таблицы. Но иногда вам нужно фильтровать записи по нескольким условиям, например, выбирать пользователей старше 30 лет из США, выбирать продукты с ценой менее 100 долларов и оценкой более 4, и т.д.

Оператор AND

Оператор AND является логическим оператором, который комбинирует два условия и возвращает TRUE только тогда, когда результаты обоих условий TRUE. Обычно вSELECT,UPDATE,DELETEвWHEREИспользование оператора AND в предложении для формирования условий для фильтрации результатов.

SELECT column1_name, column2_name, columnN_name FROM table_name WHERE condition1 AND condition2;

Давайте посмотрим на несколько примеров, демонстрирующих их реальное действие.

Предположим, что в нашей базе данных есть таблица с именемemployeesиз таблицы, которая содержит следующие записи:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |   NULL |
+--------+--------------+------------+--------+---------+

WHERE используется вместе с оператором AND для формирования условий для фильтрации результатов.

Следующее SQL-выражение будет возвращать толькоemployeesВ таблице возвращается зарплата (salary) более 7000 иdept_idЭти сотрудники, чей номер отдела равен 5.

SELECT * FROM employees
WHERE salary > 7000 AND dept_id = 5;

После выполнения вы получите следующий результат:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
+--------+--------------+------------+--------+---------+

Оператор OR

Таким образом, оператор OR также является логическим оператором, который комбинирует два условия, но возвращает TRUE, если TRUE хотя бы одно из условий. Обычно в

Следующее SQL-выражение вернетemployeesВ таблице возвращается зарплата (salary) более 7000 илиdept_idВсе сотрудники, чей номер отдела равен 5.

SELECT * FROM employees
WHERE salary > 7000 OR dept_id = 5;

В этот раз вы получите следующий результат:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

Одновременное использование операторов AND и OR

Вы также можете комбинировать AND и OR для создания сложных условных выражений.

Следующее SQL-выражение вернет сотрудников с зарплатой более 5000 иdept_idВсе сотрудники, чей номер отдела равен 1 или 5.

SELECT * FROM employees
WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);

После выполнения上面的 запроса, вы получите следующий результат:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
+--------+--------------+------------+--------+---------+