Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум SQL.rtf
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
929.07 Кб
Скачать

Решение

SELECT [Академичекая справка].предм, [Академичекая справка].Количествочасов

FROM [Академичекая справка]

WHERE ((([Академичекая справка].Количествочасов) Between 36 And 64))

ORDER BY [Академичекая справка].Количествочасов;

Имеется и негативная версия проверки диапазона значений (NOT BETWEEN). В этом случае требуется, чтобы проверяемое значение лежало вне границ заданного диа­пазона. (Разберите пример самостоятельно)

Наличие ключевого слова BETWEEN и соответствующей проверки лишь не­значительно повышает выразительную мощность языка SQL, поскольку те же са­мые результаты могут быть достигнуты с помощью выполнения двух обычных проверок. Приведенный выше запрос можно переписать следующим образом:

SELECT [Академичекая справка].предм, [Академичекая справка].Количествочасов

FROM [Академичекая справка]

WHERE ((([Академичекая справка].Количествочасов)>=48 And ([Академичекая справка].Количествочасов)<=64))

ORDER BY [Академичекая справка].Количествочасов;

Пример №10. Из таблицы Академическая справка покажите список предметов, по которым количество часов или 36 или 64

Решение

SELECT [Академичекая справка].предм, [Академичекая справка].Количествочасов

FROM [Академичекая справка]

WHERE ((([Академичекая справка].Количествочасов)=36 Or ([Академичекая справка].Количествочасов)=64))

ORDER BY [Академичекая справка].Количествочасов;

УСЛОВИЯ ПОИСКА С ПРОВЕРКОЙ ВХОЖДЕНИЯ ВО МНОЖЕСТВО (IN/NOT IN)

Пример №11. Составьте список всех студентов, сдававших предметы АИТУ и НИТ во втором семестре.

Проверка вхождения результата вычисления выражения в заданное множество ор­ганизуется с помощью ключевого слова IN. При этом проверяется, соответствует ли результат вычисления выражения одному из значений в предоставленном спи­ске — в нашем случае это строки

Решение

SELECT [Академичекая справка].фиоСтудента, [Академичекая справка].предм, [Академичекая справка].Семестр

FROM [Академичекая справка]

WHERE ((([Академичекая справка].предм) In ("НИТ","АИТУ")) AND (([Академичекая справка].Семестр)=2));

Существует и отрицательная версия этой проверки (NOT IN), которая используется для отбора любых значений, кроме тех, которые указаны в представленном списке. Как и в случае ключевого слова BETWEEN, условие IN незначительно повышает выразительнуюмощность языка SQL — тот же самый запрос может быть переписан следующим образом:

Решение

SELECT [Академичекая справка].фиоСтудента, [Академичекая справка].предм, [Академичекая справка].Семестр

FROM [Академичекая справка]

WHERE ((([Академичекая справка].предм)="АИТУ" Or ([Академичекая справка].предм)="НИТ") AND (([Академичекая справка].Семестр)=2))

ORDER BY [Академичекая справка].предм;

СООТВЕТСВИЕ ШАБЛОНУ

* Символ * представляет любую последовательность из нуля или более символов.

? Символ ? представляет любой одиночный символ.

Пример №12 Составьте список всех студентов, фамилия которых начинается на букву М.

Решение

SELECT [Академичекая справка].фиоСтудента

FROM [Академичекая справка]

WHERE ((([Академичекая справка].фиоСтудента) Like "М*"));

Использование значения NULL в условиях поиска (IS NULL/NOT NULL)

Пример №13 Составьте список всех предметов, по которым неизвестно количество часов.

Решение

SELECT [Академичекая справка].предм, [Академичекая справка].Количествочасов

FROM [Академичекая справка]

WHERE ((([Академичекая справка].Количествочасов) Is Null));

ПРЕДЛОЖЕНИЕ GROUP BY

В инструкции SELECT задает столбцы, используемые для формирования групп из выбранных строк. Строки каждой группы содержат одно и то же значение заданного столбца (столбцов). В Microsoft Access предложение GROUP BY используется для создания итоговых запросов. Предложение GROUP BY необходимо также включать в перекрестный запрос (более подробно перекрест­ный запрос обсуждается в подразделе, описывающем инструкцию TRANS­FORM).

Синтаксис:

GROUP BY имя-столбца, . . .

Пояснения:

Имя столбца в предложении GROUP BY может быть именем произвольного столбца из любой таблицы, упомянутой в предложении FROM, — даже в том случае, когда этот столбец не содержится в списке выбора. Если предложение GROUP BY расположено после предложения WHERE, Access создает группы из строк, выбранных после применения WHERE. Когда вы включаете предло­жение GROUP BY в инструкцию SELECT, список выбора должен состоять из итоговых функций SQL (AVG, COUNT, MAX, MIN, STDEV, STDEVP, SUM, VAR, VARP) или из имен столбцов, указанных в предложении GROUP BY.

В итогах все детальные данные отчета сжимаются в одну обобщающую строку. Однако очень часто в отчетах требуется формировать и промежу­точные итоги. Для этой цели в операторе SELECT может указываться фраза GROUP BY. За­прос, в котором присутствует фраза GROUP BY, называется группирующим запросом, по­скольку в нем группируются данные, полученные в результате выполнения операции SELECT, после чего для каждой отдельной группы создается единственная суммарная стро­ка. Столбцы, перечисленные во фразе GROUP BY, называются группируемыми столбцами. Стандарт ISO требует, чтобы предложение SELECT и фраза GROUP BY были тесно связаны между собой. При использовании в операторе SELECT фразы GROUP BY каждый элемент спи­ска в предложении SELECT должен иметь единственное значение для всей группы. Более того, предложение SELECT может включать только следующие типы элементов:

• имена столбцов;

• обобщающие функции;

• константы;

• выражения, включающие комбинации перечисленных выше элементов.

Все имена столбцов, приведенные в списке предложения SELECT, должны присут­ствовать и во фразе GROUP BY — за исключением случаев, когда имя столбца исполь­зуется в обобщающей функции. Обратное правило не является справедливым — во фразе GROUP BY могут присутствовать имена столбцов, отсутствующие в списке пред­ложения SELECT. Если совместно с фразой GROUP BY используется предложение WHERE, то оно обрабатывается первым, а группированию подвергаются только те строки, ко­торые удовлетворяют условию поиска.

Стандартом ISO определено, что при проведении группирования все отсутствую­щие значения рассматриваются как равные. Если две строки таблицы в одном и том же группируемом столбце содержат значения NULL и идентичные значения во всех ос­тальных непустых группируемых столбцах, они помещаются в одну и ту же группу