В предложении WHERE
могут присутствовать логические операторы
AND
- логическое И;OR
- логическое ИЛИ;NOT
- отрицание.
AND
- логическое И
Начнем с AND
. Например, запрос для получения информации о сотруднице, работающей в магазине с идентификатором 200, занимающей должность 'SELLER'
по имени Наталия:
SELECT *
FROM employee
WHERE store_id = 200
AND rank_id = 'SELLER'
AND first_name = 'Наталия'
# | employee_id | store_id | rank_id | first_name | last_name | middle_name | manager_id |
---|---|---|---|---|---|---|---|
1 | 26 | 200 | SELLER | Наталия | Потапова | Евсеевна | 12 |
OR
- логическое ИЛИ
Если хотя бы одно из условий истинно, то все выражение истинно.
Например, сотрудников с должностями 'CHIEF'
и 'DIRECTOR'
, т.e. должность равна 'CHIEF'
ИЛИ должность равна 'DIRECTOR'
, можно получить запросом:
SELECT employee_id,
store_id,
last_name,
first_name
FROM employee
WHERE rank_id = 'CHIEF'
OR rank_id = 'DIRECTOR'
# | employee_id | store_id | rank_id | last_name | first_name |
---|---|---|---|---|---|
1 | 1 | 100 | CHIEF | Иванов | Алексей |
2 | 2 | 200 | CHIEF | Маккормик | Кенни |
3 | 3 | 400 | CHIEF | Матвеева | Анна |
4 | 4 | 500 | CHIEF | Шмидт | Роман |
5 | 5 | 600 | CHIEF | Сухоруков | Виктор |
6 | 6 | 800 | CHIEF | Немцова | Светлана |
7 | 7 | 900 | CHIEF | Вершинина | Ольга |
8 | 9 | 301 | DIRECTOR | Антонов | Сергей |
P.S. Можно улучшить, используя IN
, но об этом позже.
NOT
- отрицание
Логический оператор NOT отображает запись, если условие(я) НЕ ИСТИНА. К примеру, чтобы получить всех сотрудников, кроме занимающих должности 'CHIEF'
и 'DIRECTOR'
, необходимо выполнить запрос:
SELECT *
FROM employee
WHERE NOT (
rank_id = 'CHIEF'
OR rank_id = 'DIRECTOR')
# | employee_id | store_id | rank_id | first_name | last_name | middle_name | manager_id |
---|---|---|---|---|---|---|---|
1 | 8 | 201 | CEO | Петр | Корсаков | Константинович | |
2 | 10 | 302 | GENERAL_MANAGER | Влад | Контур | Семенович | |
3 | 11 | 100 | MANAGER | Глеб | Тарасов | Авдеевич | |
... | ... | ... | ... | ... | ... | ... | ... |