(часть 1, знакомство)
Цель задания: Освоить составление запросов на языке SQL при создании
объектов базы данных. Используется разработанная ранее база данных «Жур-
налы».
Последовательность действий:
1. Запустите Microsoft Access и откройте базу данных «Журналы».
2. Создайте запрос с именем «Самый простой запрос», который вычисляет
значение выражения «2+2» и выдает текущее время, не используя при этом
таблицы или другие запросы базы данных.
Щелкните по ярлыку «Создание запроса в режиме конструктора».
Закройте диалоговое окно «Добавление таблиц».
Перейдите в режим SQL (
).
В окне редактирования введите текст запроса «SELECT 2+2, NOW();».
Перейдите в режим просмотра результатов работы запроса
. Обратите
внимание, что названия столбцов сформированы автоматически.
Перейдите в режим конструктора ( ). Обратите внимание, какие имена
присвоил конструктор столбцам запроса.
Перейдите в режим SQL и назначьте столбцам новые имена: «ДваПлюс-
Два» и «ДатаИВремя» соответственно.
Просмотрите результат работы запроса.
Закройте окно запроса, сохранив его под именем «Самый простой за-
прос».
3. Создайте в режиме конструктора и модифицируйте в режиме SQL запрос
«Журналы с кодами клиентов», выводящий список журналов и коды клиентов,
которые на них подписаны.
Запустите конструктор для создания нового запроса.
Добавьте в запрос таблицы «Журнал» и «Подписка».
Перенесите в бланк запроса имена полей «Название» и «Клиент».
Просмотрите результат работы запроса.
Запрос выдает названия только тех журналов, на которые подписан
хотя бы один клиент. Следует изменить способ объединения таблиц с
внутреннего на левое внешнее.
Обратите внимание, из таблицы «Подписка» извлекаются именно коды
клиентов, а их фамилии отображаются в результирующей таблице бла-
годаря тому, что для таблицы «Подписка» были настроены параметры
подстановки.
Перейдите в режим SQL.

Замените в предложении «FROM» ключевые слова «INNER JOIN» на
«LEFT JOIN».
Просмотрите результат работы запроса.
Теперь в столбце «Название» присутствуют названия и тех журналов, у
которых нет ни одного подписчика. Для таких журналов в столбец
«Клиент» помещено пустое значение.
Перейдите в режим конструктора. Обратите внимание на то, что в конст-
рукторе способ объединения также изменился.
Линия связи, обозначающая объединение таблиц, теперь снабжена
стрелкой на одном конце.
Для того, чтобы сохранить запрос, не закрывая окна конструктора, на-
жмите кнопку «Сохранить»
на панели инструментов Access. В диа-
логовом окне введите имя запроса «Журналы с кодами клиентов» и
нажмите кнопку «OK».
Выясните, как изменится SQL – представление запроса, если связь между
таблицами будет отсутствовать. Нажмите правой кнопкой мыши на ли-
нии связи и в контекстном меню выберите пункт «Удалить».
В случае, когда связь между полями таблиц не определена, запрос фор-
мирует декартово произведение таблиц.
Перейдите в режим SQL.
Теперь в предложении «FROM» вместо оператора объединения «LEFT
JOIN» с условием равенства значений столбцов двух таблиц, использу-
ется оператор «запятая», объединяющий записи таблиц безусловно, в
виде декартова произведения.
Закройте окно запроса, при этом откажитесь от сохранения последних
изменений.
4. Создайте в режиме SQL запрос «Журналы с количеством клиентов», вы-
водящий список журналов и количество клиентов, которые подписаны на каж-
дый из них.
Запустите конструктор для создания нового запроса.
Закройте окно добавления таблиц. Перейдите в режим SQL.
Введите в окне редактирования запрос следующего вида:
SELECT Журнал.Название,
Count(Подписка.Журнал) AS Количество
FROM Журнал LEFT JOIN
Подписка ON Журнал.КодЖурнала = Подписка.Журнал
GROUP BY Журнал.Название
ORDER BY Журнал.Название;
Просмотрите результат работы запроса.
Просмотрите запрос в режиме конструктора. Найдите соответствие меж-
ду всеми элементами, размещенными в бланке и области таблиц конст-
руктора запроса, и элементами запроса на языке SQL.
Закройте окно запроса, сохранив запрос под именем «Журналы с коли-
чеством клиентов».
5. В форме «Подписчики - подчиненная» в качестве источника записей ис-
пользуется специальный запрос «Клиенты с кодами журналов». Измените свой-
ства формы таким образом, чтобы вместо внешнего запроса использовался за-
прос на языке SQL, заданный непосредственно внутри формы.
Откройте форму «Подписчики - подчиненная» в режиме конструктора.
Просмотрите свойство «Источник записей» данной формы.
В качестве источника указан запрос «Клиенты с кодами журналов».
Откройте запрос «Клиенты с кодами журналов» в режиме SQL.
Выделите и скопируйте в буфер обмена текст SQL – запроса.
Вставьте скопированный текст запроса из буфера обмена в строку свой-
ства «Источник записей».
Просмотрите результат работы формы. Убедитесь, что ее поведение оста-
лось прежним.
Закройте форму «Подписчики - подчиненная», сохранив внесенные из-
менения. Закройте окно запроса.
Откройте форму «Список журналов», которая использует измененную
выше форму в качестве подчиненной. Убедитесь, что форма работает
верно.
Теперь запрос «Клиенты с кодами журналов» больше не нужен. Источ-
ник записей формы образуется встроенным запросом на языке SQL.
Самостоятельная работа:
1. Просмотрите все созданные ранее запросы в режиме SQL. Найдите соот-
ветствие между предложениями на языке SQL и элементами запроса, отобра-
жаемыми в режиме конструктора.
2. Просмотрите в режиме SQL все запросы базы данных «Борей». Сравните
их
представление
в
режиме
SQLи
режиме
конструктора.
Некоторые запросы на языке SQL могут не иметь соответствующего пред-
ставления в режиме конструктора (выявите такие запросы). Средства язы-
ка SQL предоставляют более широкие возможности по сравнению с возмож-
ностями конструктора.
3. Просмотрите свойства форм базы данных «Борей». Выявите и изучите
все случаи использования встроенных запросов SQL.