В этом учебном материале вы узнаете, как использовать условие AND и условие OR в одном SQL запросе с синтаксисом и примерами.
Описание
SQL условия AND и OR можно комбинировать для проверки нескольких условий в операторе SELECT, INSERT, UPDATE или DELETE.
Синтаксис
Синтаксис для условий AND и OR в SQL:
AND condition2
...
OR condition_n;
Параметры или аргументы
- condition1, condition2, ... condition_n
- Условия, которые оцениваются, чтобы определить, будут ли выбраны записи.
Примечание
- SQL условия позволяют тестировать несколько условий.
- Не забудьте порядок операций в скобках!
Пример — использование условий AND и OR с оператором SELECT
Рассмотрим пример того, как совместно использовать условие AND и условие OR в операторе SELECT.
В этом примере у нас есть таблица suppliers со следующими данными:
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Moscow |
200 | Lansing | Michigan | |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
700 | Qwant | Paris | Ile de France |
800 | Menlo Park | California | |
900 | Electronic Arts | San Francisco | California |
Введите следующий SQL оператор:
1 2 3 4 |
SELECT * FROM suppliers WHERE (state = 'California' AND supplier_id <> 900) OR (supplier_id = 100); |
Будет выбрано 3 записи. Вот результаты, которые вы получите:
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Moscow |
300 | Oracle | Redwood City | California |
800 | Menlo Park | California |
В этом примере будут возвращены все записи таблицы suppliers, которые находятся в штате California, но не имеют значения supplier_id, равного 900. В запросе также будут возвращены все записи suppliers, supplier_id которых равен 100. Скобки определяют порядок оценки условий AND и OR.
Пример использование условий AND и OR с оператором UPDATE
Далее давайте рассмотрим, как использовать условия AND и OR с оператором UPDATE.
В этом примере у нас есть таблица customers со следующими данными:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Теперь продемонстрируем, как использовать условия AND и OR для обновления записей в таблице. Введите следующий оператор UPDATE:
1 2 3 4 |
UPDATE customers SET favorite_website = 'google.com' WHERE customer_id = 6000 OR (customer_id > 7000 AND last_name <> 'Crowe'); |
Будет обновлено 2 записи. Выберите данные из таблицы customers еще раз:
1 |
SELECT * FROM customers; |
Вот результаты, которые вы получите:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | google.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | google.com |
9000 | Russell | Crowe | google.com |
В этом примере будут обновлены все значения столбца favourite_website в таблице customers до google.com, где customer_id равно 6000, а также эти записи где customer_id больше 7000, а last_name не равно 'Crowe'. Как видите, значение favourite_website в третьей и пятой строках обновлено.
Пример - использование условий AND и OR с оператором DELETE
Далее давайте рассмотрим, как объединить условия AND и OR для удаления записей с помощью оператора DELETE.
В этом примере у нас есть таблица products со следующими данными:
product_id | product_name | category_id |
---|---|---|
1 | Pear | 50 |
2 | Banana | 50 |
3 | Orange | 50 |
4 | Apple | 50 |
5 | Bread | 75 |
6 | Sliced Ham | 25 |
7 | Kleenex | NULL |
Введите следующий оператор DELETE:
1 2 3 |
DELETE FROM products WHERE category_id = 25 OR (product_id < 4 AND product_name <> 'Banana'); |
Будет удалено 3 записи. Снова выберите данные из таблицы products следующим запросом:
1 |
SELECT * FROM products |
Вот результаты, которые вы должны получить:
product_id | product_name | category_id |
---|---|---|
2 | Banana | 50 |
4 | Apple | 50 |
5 | Bread | 75 |
7 | Kleenex | NULL |
В этом примере удаляются все записи из таблицы products, где category_id равен 25. Он также удаляет все записи из таблицы products, где product_id меньше 4, а product_name не равно 'Banana'.