- •Язык запросов sql
- •Общие сведения
- •Insert - запрос на добавление;
- •Инструкция select
- •Синтаксис select
- •Расширения инструкции select в access
- •Порядок выполнения выборки
- •Управление списком выбора
- •Указание источника данных
- •Применение реляционных операторов
- •Применение булевых операторов
- •Обработка неопределенных значений
- •Сортировка данных
- •Вычисление агрегатных функций
- •Группировка данных
- •Ограничение для групп данных
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Операции с таблицами
- •Изменение структуры таблицы
- •Удаление таблицы
- •Действия со строками
- •Вставка строк в таблицу
- •Изменение данных в таблице
- •Удаление данных из таблицы
- •Инструкция transform
- •In ("Физика", "Математика");
- •Глава 5 Работа с формами
Обработка неопределенных значений
В операторе SELECT может использоваться специальная функция ISNULL. проверяющая наличие значения NULL в определенном поле. Ее можно использовать в сочетании с логической функцией Ilf, имеющей такбй синтаксис:
IIf(check_expression, value_if_true, value_if_false)
где: check_expression - проверяемое выражение или поле;
value_if_true - замещаемое выражение, если результат проверки ИСТИНА;
value_if_false - замещаемое выражение, если результат проверки ЛОЖЬ.
Например, требуется получить информацию о студентах (фамилия, имя, отчество и телефон), причем для тех студентов, у которых нет домашнего телефона, в соответствующем поле нужно отобразить слово «Нет». Тогда вместо поля fPhone нужно указать в запросе функцию Ilf со следующими параметрами: IIf(ISNULL(fPhone), 'Нет', fPhone). Таким образом, если в поле fPhone содержится значение NULL, то отобразится «Нет», иначе - номер телефона.
Запрос будет иметь следующий вид:
SELECT fLastName, fFirstName, fMiddleName,
IIf(ISNULL(fPhone), 'Нет', fPhone)
FROM tbIStudents;
Сортировка данных
Выше были рассмотрены основные возможности выборки данных из таблиц БД при помощи оператора SELECT и входящих в его состав ключевых слов FROM и WHERE. Однако простая выборка данных не очень удобна для восприятия в связи с тем, что данные отображаются в том же порядке, в котором они заносились в таблицу, и при просмотре пользователю тяжело сразу обнаружить интересующую его информацию. Поэтому при построении запросов удобно использовать предложение ORDER BY для сортировки данных в результирующей выборке, что улучшает восприятие таблиц выборки и их анализ. Используя ORDER BY в инструкции SELECT, данные можно сортировать по любому из имеющихся столбцов (как по возрастанию данных, так и по убыванию).
Синтаксис предложения ORDER BY можно представить в следующем виде:
SELECT selection_list FROM table_name
[ORDER BY sortingjist [ASC | DESC]];
где: sortingjist - список для указания порядка сортировки выбранных данных. Он может включать произвольное количество элементов, разделяемых запятыми;
ASC - ключевое слово для установки режима сортировки данных по возрастанию (используется по умолчанию);
DESC - ключевое слово, задающее сортировку данных по убыванию.
Рассмотрим пример, в котором выполняется отображение списка предметов, отсортированного по алфавиту:
SELECT fSubject AS "Предмет"
FROM tbISubjects ORDER BY fSubject;
Теперь составим запрос, отображающий список студентов (фамилии, имена, отчества) с сортировкой по первым двум полям:
SELECT fLastName, fFirstName, fMiddleName
FROM tbIStudents
ORDER BY fLastName, fFirstName;
Предложение ORDER BY допускает указание, кроме имен столбцов, их порядковых номеров в списке выбора SELECT. Номера выбираются в том порядке, в котором столбцы записаны в предложении SELECT. Например, такой же результат, как и для предыдущего запроса, можно получить, если команду выборки переписать в таком виде:
SELECT fLastName, fFirstName, fMiddleName FROM tbIStudents ORDER BY 1, 2;
Здесь в предложении ORDER BY числом 1 обозначено поле fLastName, а числом 2 - поле fFirstName (по порядку их следования после оператора SELECT).
Как видно из рассмотренных выше примеров, по умолчанию сортировка выполняется по возрастанию чисел, дат или в алфавитном порядке. Для того чтобы управлять направлением сорти-
Ключевое слово ТОР п имеет смысл использовать только в том случае, если установлен порядок сортировки по какому-либо полю (предложение ORDER BY, выше).
Рассмотрим пример выборки фамилий и имен студентов с ограничением их количества. Чтобы отобразить, например, только первые 10 уникальных сочетаний «фамилия-имя», отсортированных по алфавиту, нужно выполнить такой запрос SQL:
SELECT DISTINCT TOP 10 fLastName, fFirstName
FROM tbIStudents
ORDER BY fLastName;< fFirstName;
Если же требуется вывести ровно половину списка студентов, то запрос будет следующим:
SELECT DISTINCT TOP 50 PERCENT fLastName, fFirstName
FROM tbIStudents
ORDER BY fLastName, fFirstName;