Управл_данными / 09-where
.pdfИспользование скобок в предложениях WHERE
Предложения WHERE могут содержать любое количество логических операторов AND и OR. Комбинируя их, можно создавать сложные фильтры.
SQL (как и большинство других языков) вначале обрабатывает логические операторы AND, а потом уже логические операторы OR. Другими словами - приоритет у логического оператора AND выше чем у OR.
Однако при использовании предложения WHERE с ключевыми словами AND и OR, рекомендуется всегда вставлять скобки, чтобы точно сгруппировать логические операторы.
В этом случае вы всегда будете застрахованы от неопределенностей
SELECT prod_id, prod_price, prod_name FROM Products
WHERE ( prod_name = ’Рыба’ OR prod_name >= ’Ф’ ) AND prod_price >= 40
11
Использование ключевого слова IN
Ключевое слово IN используется для указания диапазона условий, любое из которых может быть выполнено.
При этом значения, заключенные в скобки, перечисляются через запятую.
SELECT prod_name, prod_price
FROM Products
WHERE prod_id IN ( 351, 53, 125, 37 )
ORDER BY prod_name
12
SELECT prod_name, prod_price FROM Products
WHERE prod_id IN ( 351, 53, 125, 37 ) ORDER BY prod_name
Тот же результат можно получить используя OR :
SELECT prod_name, prod_price
FROM Products
WHERE prod_id = 351 OR prod_id = 53 OR prod_id = 125 OR prod_id = 37
ORDER BY prod_name
13
Преимущества IN
Ключевое слово IN выполняет ту же функцию, что и OR.
Преимущества IN следующие:
1)При работе с длинными списками необходимых значений синтаксис логического оператора IN гораздо легче читать.
2)При использовании ключевого слова IN гораздо легче управлять порядком обработки (так как используется меньшее количество операторов).
3)Логические операторы IN почти всегда быстрее обрабатываются, чем списки логических операторов OR.
4)Самое большое преимущество логического оператора IN в том, что в данном операторе может содержаться еще одна инструкция SELECT, а это позволяет создавать очень динамичные предложения WHERE.
14
Использование ключевого слова NOT
Логический оператор NOT служит для выполнения только одной функции — отрицать все предложения, следующие за ним.
SELECT prod_name
FROM Products
WHERE NOT prod_id = 'DLL011'
ORDER BY prod_name
15
Ещё один пример
SELECT prod_name, prod_price
FROM Products
WHERE prod_id NOT IN ( 351, 53, 125, 37 ) AND prod_price > 100
AND prod_name >= ’П’
AND prod_name < ’Р’
ORDER BY prod_price DESC, prod_name ASC
16
Поиск не известных заранее значений
Все предыдущие операторы, которые мы рассмотрели, производили фильтрацию по известным значениям.
Они искали совпадения по одному или нескольким значениям, более чем и менее чем известное значение или диапазон значений.
Однако фильтрация данных таким способом не всегда работает.
Например, как бы вы искали продукты, в названии которых содержится слово ’рыба’?
Этого нельзя сделать при помощи простых операций сравнения
17
Поиск данных по шаблону
При помощи метасимволов можно создавать условия поиска данных по шаблону.
В этом примере, для того чтобы найти все продукты, в названии которых содержится слово ’рыба’, необходимо составить шаблон поиска, позволяющий найти это слово в любом месте названия продукта.
Шаблон должен выглядеть примерно так:
«любые символы» рыба «любые символы»
18
Использование метасимволов для фильтрации
Приведенный выше шаблон – не удобный в использовании.
Если заменить «любые символы» на специальный знак %, то получим более короткое и удобное выражение:
%рыба% Знак процента – метасимвол
19
Ключевое слово LIKE
В SQL поддерживаются метасимволы нескольких типов.
Чтобы применять метасимволы в условиях поиска, необходимо использовать ключевое слово LIKE.
Оно сообщает СУБД, что следующий шаблон для поиска необходимо сравнивать с использованием метасимволов, а не искать точные совпадения.
Поиск с использованием метасимволов может осуществляться только в текстовых полях (строках)
Неудобной особенностью языка SQL является то, что в его разных вариантах используется разный набор метасимволов.
20