Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инф. лаб. 4 - SQL.docx
Скачиваний:
8
Добавлен:
25.09.2019
Размер:
63.91 Кб
Скачать

Фильтрация данных

По умолчанию запрашиваемые данные получаются неотфильтрованными. Для фильтрации используется секция WHERE запроса. В секции WHERE указывается выражение фильтрации и в результирующую выборку попадают только те записи, для которых выражение фильтрации истинно.

В выражении фильтрации можно ссылаться на все поля всех таблиц, участвующих в запросе и формировать из них выражения. Для формирования выражений могут использоваться арифметические операции +, -, *, /, операции сравнения =, <>, >, <, операции сравнения с NULL-значением IS NULL и IS NOT NULL. В следующем запросе получаются все товары, у которых удвоенная оптовая цена меньше розничной:

SELECT

[Products].[ProductName],

[Products].[ProductWholesalePrice],

[Products].[ProductRetailPrice]

FROM

[Products]

WHERE

2*[Products].[ProductWholesalePrice] < [Products].[ProductRetailPrice]

ORDER BY

[Products].[ProductName];

Для строковых значений поддерживается фильтрация значений с неполным совпадением. Для этого используется операция LIKE с шаблоном поиска, содержащим специальные символы ? (один произвольный символ) и * (произвольное количество любых символов). Следующий запрос выбирает всех покупателей, фамилия которых начинается на букву К:

SELECT

*

FROM

[Customers]

WHERE

[Customers].[CustomerSurname] Like 'К*';

Условия секции WHERE можно группировать с помощью логических операций AND, OR и NOT (при вычислениях среди указанных операций наибольший приоритет имеет операция NOT, наименьший – операция OR). Когда стандартные приоритеты операций не устраивают, необходимо использовать скобки. Следующий запрос возвращает все товары, у которых розничная цена равна оптовой, либо оптовая цена больше 10 и поставки прекращены (для установления нужного порядка вычислений используются скобки):

SELECT

*

FROM

[Products]

WHERE

[Products].[ProductWholesalePrice] =

[Products].[ProductRetailPrice]

OR ([Products].[ProductWholesalePrice] > 10

AND [Products].[ProductSupplied]);

Использование функций

При формировании выражений SQL-запросов можно использовать встроенные функции. Имена функций даже для простейших операций сильно зависят от используемой СУБД.

В таблице 1 представлены некоторые полезные функции СУБД Microsoft Access, которые можно использовать в SQL-запросах:

Таблица 1. Встроенные функции

Имя функции

Назначение

LTRIM

Удаляет ведущие пробелы

RTRIM

Удаляет ведомые пробелы

UCASE

Переводит символы в верхний регистр

LCASE

Переводит символы в нижний регистр

LEN

Возвращает длину строки

NOW

Возвращает сегодняшнюю дату

DATEPART

Выбирает нужную часть даты

ISNULL

Проверяет, что аргумент равен NULL

Следующий запрос возвращает год из текущей даты:

SELECT

DATEPART(‘yyyy’, NOW())