Оператор BETWEEN...AND применяется для отбора записей, в которых значения поля находятся внутри заданного диапазона. Границы диапазона включаются в условие отбора.
Чтобы продемонстрировать работу этого оператора, вернемся к таблице Товары и выберем в ней товары, цена которых находится в диапазоне от 200 до 2000. Для этого сформируем следующий запрос:
SELECT *
FROM Товары
WHERE Цена BETWEEN 200 AND 2000
Результаты, возвращенные при выполнении данного запроса, приведены на рис. 9.
Рис. 9. Пример использования оператора BETWEEN...AND
Оператор IN
Оператор IN используется для выборки записей, в которых значение некоторого поля соответствует хотя бы одному из значений заданного списка.
Выберем из таблицы Клиенты клиентов, которые живут в Беларуси, Украине или Казахстане:
SELECT Фамилия. Имя. Отчество. Страна
FROM Клиенты
WHERE Страна IN ('Беларусь'.'Украина'.'Казахстан')
Результат выполнения данного запроса показан на рис. 10.
Рис. 10. Пример использования оператора IN
Оператор LIKE
Оператор LIKE применяется для сравнения значения поля со значением, заданным при помощи шаблонов. Для задания шаблонов используются два символа:
□ знак процента (%) — заменяет последовательность символов любой (в том числе и нулевой) длины;
□ символ подчеркивания (_) — заменяет любой символ.
Найдем в таблице Клиенты записи, в которых фамилия клиента начинается с буквы «М»:
SELECT Фамилия, Имя. Отчество. Телефон FROM Клиенты WHERE Фамилия LIKE 'МГ
В результате выполнения этого запроса будет выбрано 4 записи (рис. 11).
Рис. 11. Использование оператора LIKE с шаблоном в виде символа процента
А теперь найдем в этой же таблице записи, для которых номер телефона начинается с символов (816)025-61, а две последние цифры неизвестны:
SELECT Фамилия. Имя. Отчество, Телефон
FROM Клиенты
WHERE Телефон LIKE '(816)025-61 '
При выполнении данного запроса будут отобраны две записи (рис. 12).
Рис. 12. Использование оператора LIKE с шаблоном в виде символа подчеркивания
Оператор EXISTS
Оператор EXISTS используется для отбора записей, соответствующих заданному критерию.
Для иллюстрации работы оператора EXISTS рассмотрим следующий пример. Из таблицы Товары требуется отобрать товары, количество продаж которых превышает 10. Сведения о продажах содержатся в поле Продано таблицы Продажи. Для получения необходимой выборки воспользуемся оператором EXISTS:
SELECT Наименование, Цена
FROM Товары
WHERE EXISTS (SELECT [Код товара]
FROM Продажи
WHERE (Продажи.Продано>10) AND
Товары.[Код товара]=Продажи.[Код товара])
В этом запросе после ключевого слова EXISTS следует оператор SELECT, отбирающий из таблицы Продажи записи, для которых количество продаж превышает 10. Оператор EXISTS отбирает из таблицы Товары записи, в которых значение поля Код товара соответствует записям, отобранным из таблицы Продажи. Результат выполнения данного запроса приведен на рис.13.
Рис.13. Пример использования оператора EXISTS
При использовании оператора EXISTS (а также еще трех логических операторов: UNIQUE, ALL и ANY) применяется подзапрос — оператор SELECT, следующий за ключевым словом EXISTS и заключенный в круглые скобки. Более подробно подзапросы будут рассмотрены далее.
Оператор UNIQUE
Оператор UNIQUE используется для проверки записи таблицы на уникальность. По своему действию он аналогичен оператору EXISTS. Единственное отличие заключается в том, что подзапрос, задаваемый после ключевого слова UNIQUE, не должен возвращать более одной записи.
Оператор ALL
Оператор ALL используется для сравнения исходного значения со всеми другими значениями, входящими в некоторый набор данных.
Например, для того чтобы выбрать из таблицы Товары те товары, которые имеют цену большую, чем цена всех товаров, проданных в количестве более 10, используется следующий запрос:
SELECT *
FROM Товары
WHERE Цена>АLL (SELECT Продажи.Цена
FROM Продажи
WHERE Продажи.Продано>10)
Результат выполнения данного запроса приведен на рис. 14.
Рис. 14. Пример использования оператора ALL
Оператор ANY
Оператор ANY применяется для сравнения заданного значения с каждым из значений некоторого набора данных. Если в предыдущем примере заменить оператор ALL оператором ANY, то будет возвращен список товаров, цена которых больше, чем хотя бы у одного из товаров, проданных в количестве больше 10. Результат выполнения такого запроса показан на рис. 15.
.
Рис. 15. Пример использования оператора ANY