- •!!! Для дальнейшей работы откройте файл Учебной базы данных!!!
- •1. Основное sql-выражение для выборки данных
- •2. Уточнения запроса
- •2.1. Оператор where
- •Предикаты сравнения
- •Предикаты для вложенных запросов
- •2.2. Оператор group by
- •2.3. Оператор having
- •2.4. Оператор order by
- •2.5. Логические операторы
- •Список контрольных вопросов:
- •Задачи для самостоятельного выполнения:
2.5. Логические операторы
Логические выражения в операторах where и having могут быть сложными, т. е. состоять из двух и более простых выражений, соединенных между собой логическими операторами (союзами) and и/или or. Оператор and выполняет роль логического союза И, а оператор or — союза ИЛИ.
Логический оператор not применяется к одному выражению (возможно и к сложному), расположенному справа от него. Этот оператор меняет значение выражения на противоположное.
Предположим, из таблицы клиенты требуется выбрать записи о клиентах из Москвы и Северо-Запада. Соответствующий запрос имеет вид:
SELECT Регион, Имя, Сумма_заказа FROM Клиенты
WHERE Регион='Москва' OR Регион='Северо-Запад';
Обратите внимание, что здесь используется логический оператор or (ИЛИ), а не and (И), поскольку нам нужны клиенты, проживающие или в Москве, или на Северо-Западе. Если бы вместо оператора or мы применили and, то получили бы пустую таблицу, т. к. в исходной таблице нет ни одной записи, в которой один и тот же столбец имел бы различные значения.
Следующее SQL-выражение эквивалентно рассмотренному ранее. Оно основано на применении оператора in:
SELECT Регион, Имя, Сумма__заказа FROM Клиенты
WHERE Регион IN ('Москва', 'Северо-Запад');
Если требуется получить данные о всех клиентах, которые не проживают ни в Москве, ни на Северо-Западе, то можно использовать такое SQL-выражение:
SELECT Регион, Имя, Сумма_заказа FROM Клиенты
WHERE NOT (Регион='Москва' OR Регион 'Северо-Запад');
Список контрольных вопросов:
Как выглядит основное выражение для выборки данных в SQL?
Что такое «виртуальная таблица»?
Какую операцию реляционной алгебры выполняет оператор select?
Какую операцию реляционной алгебры выполняет оператор select, если после from указано более одной таблицы?
В каких случаях для идентификации поля используется префикс? Приведите пример.
Как строится выражение для выборки, если необходимо выбрать все поля таблицы?
Для чего в выражении выборки применяется оператор where?
Что такое псевдонимы полей? Как задать псевдоним поля? Приведите пример.
Какие дополнительные операторы применяются для уточнения запроса, каково их назначение?
В какой последовательности должны указываться дополнительные операторы запроса?
Опишите порядок выполнения операторов в SQL-выражении запроса.
Перечислите и охарактеризуйте предикаты сравнения, используемы в SQL-выражениях.
Какие символы - маски применяются вSQL-выражениях и для чего?
Перечислите и охарактеризуйте предикаты, применяемы для вложенных запросов.
Опишите действие оператора group by.Приведите пример.
Опишите действие оператора having.Приведите пример.
Опишите действие оператора order by.Приведите пример.
Задачи для самостоятельного выполнения:
Задача 1. Выберите записи, сгруппированные по регионам и исключающие Северо-Западный регион. Попробуйте сделать это по крайней мере двумя способами (с использованием where и having).
Задача 2. Выберите записи о клиентах, проживающих в городах, название которых оканчивается на "бург", а сумма заказа превышает 2000.
Задача 3. Выберите записи, в которых номера телефонов пятизначные. При этом следует предусмотреть, что номера телефонов могут содержать, а могут и не содержать дефисы, а сам номер может содержать или нет код региона, заключенный или не заключенный в круглые скобки.
