
- •Работа с базами данных в субд access
- •Введение
- •Контрольные вопросы
- •1.2. Нормализация отношений в рбд
- •1.3. Типы связей и ключей в рбд
- •Контрольные вопросы
- •2. Создание таблиц и связей в субд access
- •2.1. Создание бд в субд Access
- •2.2. Создание таблиц в режиме Конструктор
- •Контрольные вопросы
- •3. Организация связей между таблицами и заполнение таблиц
- •Контрольные вопросы
- •4. Запросы в субд access
- •4.1. Запрос на выборку данных
- •4. 2. Создание запроса в режиме Конструктор
- •4.3. Запрос с параметром
- •4.4. Итоговые запросы
- •4.5. Запросы с вычисляемым полем
- •Стоимость:[Количество] *[Цена]
- •4.6. Перекрестные запросы
- •4.7. Запрос в Режиме sql
- •Контрольные вопросы
- •5. Формы в субд access
- •5.1. Создание форм на основе Мастера форм
- •5.2. Построение диаграмм
- •5.3. Конструктор форм
- •Контрольные вопросы
- •6. Отчеты в субд access
- •Контрольные вопросы
- •Литература
- •Содержание
4.7. Запрос в Режиме sql
В Access запросы представляются в трех режимах: Конструктор, Режим таблицы и Режим SQL. Ранее уже упоминалось, что любой запрос является программой, написанной на языке структурированных запросов SQL. Этот язык является общепринятым стандартным языком запросов в реляционных БД. Он был разработан фирмой IBM для реляционной модели данных, предложенной Э.Ф. Коддом. Фактически программа на SQL представляет собой некоторую фразу-запрос к выборке данных на английском языке, записанную в определенной структуре, которую затем СУБД преобразует в требуемый результат. В данном пособии SQL не будет рассматриваться подробно, однако, вообще говоря, знание основных особенностей этого языка поможет лучше понять процесс выполнения запроса, а также при необходимости отредактировать его или даже построить более эффективный запрос.
Рис.
25. Режим
SQL
для запроса на просмотр с сортировкой
Для того чтобы перейти в Режим SQL запроса, необходимо выполнить цепочку команд Вид/Режим SQL. После чего на экране открывается окно программы запроса. Для анализа работы операторов языка SQL рассмотрим тексты программ запросов, созданных ранее с помощью Мастера Простых запросов либо Конструктора.
Например, после перехода к режиму SQL ранее сформированный мастером Простых запросов запрос «Клиенты» будет выглядеть так, как это показано на рис. 25. Как видно, текст SQL программы запроса достаточно прост и вполне доступен для понимания с первого раза. В первой строке после оператора SELECT (выбрать, англ.) указываются поля таблицы «Клиенты», которые выбраны для запроса. Во второй строке после оператора FROM (из, англ.) указывается таблица, из которой эти поля выбираются, а в третьей строке после оператора ORDER BY (упорядочить по, англ.) указано поле, по которому проводится сортировка результирующих записей.
Запрос с заданным критерием отбора записей «Контракты после 1 марта», в котором производится выборка по условию, имеет программу с аналогичной структурой. Однако в программу запроса (см. рис. 26) добавлена строка с условием, которое сформировано после оператора WHERE (где, англ.) и по которому из таблицы «Контракты» выбираются все записи с контрактами, заключенными после 1 марта 2001 года.
При задании запроса с группировкой записей и вычислением итоговых значений используется оператор группировки GROUP BY (группировать по, англ.) и соответствующая вычислительная операция Sum по числовым полям для сгруппированных данных (см. рис. 27).
Рис.
26. Режим
SQL
для запроса с условием на выборку записей
Рис. 27. Режим SQL для запроса с группировкой и вычислением
Если запрос строится на основе полей из нескольких связанных между собой таблиц, то это, естественно, усложняет программу, в которой нужно обеспечить определенное согласование отбираемых для запроса данных. В частности, в более сложном запросе «Товары Запрос», основанном на трех взаимосвязанных таблицах «Товары», «Контракты» и «Сотрудники», появляются операторы INNER JOIN (внутреннее объединение, англ.) для внутреннего объединения таблиц по связующему их полю и DISTINCTROW (отличающаяся запись, англ.) для ограничения выбираемых данных однозначными записями (см. рис. 28).
Перекрестный
запрос всегда преобразует таблицу
запроса к форме электронных таблиц
Excel, поэтому первым оператором в таком
запросе является оператор TRANSFORM
(преобразовать, англ.), который определяет
вычисляемые значения в ячейках
результирующей таблицы запроса. После
операторов выбора SELECT
… FROM
и оператора группировки GROUP
BY
следует оператор PIVOT
(опора, англ.),
где указывается поле, которое должно
использоваться при создании заголовков
столбцов для набора записей перекрестного
запроса.
Рис.
28. Запрос в Режиме
SQL
на основе связанных таблиц
Рис. 29. Перекрестный запрос в Режиме SQL
Перечислим в заключение назначение некоторых основных операторов языка SQL:
SELECT – выбирает поля из таблиц по запросу;
FROM – указывает таблицу, из которой были выбраны поля;
WHERE – создает условие на выборку данных в записях;
ORDER BY – сортирует записи в заданном порядке;
GROUP BY – группирует совпадающие записи при выполнении итоговых запросов;
INNER JOIN – объединяет таблицы по связующим полям;
DISTINCTROW – исключает из результирующего набора повторяющиеся записи;
TRANSFORM – вычисляет выражения в перекрестных запросах;
PIVOT – определяет заголовки столбцов в таблице перекрестного запроса.
Просмотрите и проанализируйте в Режиме SQL другие созданные с помощью Конструктора либо Мастера запросы.
Отредактируйте программы запросов на основе проанализированных выше свойств операторов языка SQL (предварительно скопируйте в буфер обмена SQL-программу запроса, чтобы была возможность вернуться к ее первоначальному варианту) и просмотрите полученные после редактирования результаты.
На основе запроса «Контракты» создайте в Режиме SQL программу запроса выборки из таблицы «Контракты» полей «Товар»,«Клиент»,
«Количество» с условием по количеству > 100, группировкой по полю «Клиент» и сортировкой по полю «Товар».