Текст запроса на выборку приведен в листинге 6.7.
Листинг 6.7.
Запрос на выборку
SELECT Заказы.*, Заказы. Клиент
FROM Заказы
WHERE (((Заказы. Клиент)=1));
7. Теперь перейдите на вкладку Конструктор и выберите команду Выполнить . На рис. 6.16 показан результат выполнения запроса. Если результат выборки содержит только записи, относящиеся к первому клиенту, значит, запрос составлен верно.
Рис. 6.16. Результат выполнения запроса на выборку
8. Щелкните правой кнопкой мыши на заголовке вкладки запроса. Выберите команду Конструктор .
9. На вкладке Конструктор в группе Тип запроса нажмите кнопку Удаление .
10. В бланке запроса в строке Удаление в столбце со значком * должно быть установлено значение Из , а в столбце с условием – значение Условие .
Результирующий бланк запроса на удаление показан на рис. 6.17.
Рис. 6.17. Результирующий бланк запроса на удалениеТекст запроса на удаление приведен в листинге 6.8.
Листинг 6.8.
Запрос на удаление
DELETE Заказы.*, Заказы. Клиент
FROM Заказы
WHERE (((Заказы. Клиент)=1));
11. Нажмите кнопку Выполнить . Откроется окно подтверждения операции.
12. Нажмите кнопку Да .
13. Откройте таблицу Заказы и посмотрите на внесенные в данные изменения (рис. 6.18). Теперь в таблице не осталось записей клиента с номером 1 .
Рис. 6.18. Таблица Заказы после выполнения запроса на удаление
Обычно запросы на обновление или удаление используются, когда необходимо быстро обновить или удалить большое количество данных. Если нужно удалить несколько записей, как в данном случае, и это проще сделать вручную, можно открыть таблицу в режиме таблицы, выбрать поля или строки, которые требуется удалить, и нажать клавишу Delete .
Теперь удалите запись, являющуюся стороной «один» в отношении «один ко многим».
1. Откройте вкладку Работа с базами данных и в группе Показать или скрыть выберите команду Схема данных . Отобразится схема связей между таблицами базы данных (рис. 6.19).
Рис. 6.19. Вкладка Схема данныхВы можете видеть линии, связывающие таблицы и представляющие собой связи между данными. Возле каждой таблицы указано, какой стороной отношения она является. Возле таблицы Товары указана 1 , следовательно, эта таблица является стороной «один» в отношении «один ко многим» к таблице Заказы .
2. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов .
3. В окне Добавление таблицы дважды щелкните кнопкой мыши на названии таблицы Товары . Нажмите кнопку Закрыть .
4. Дважды щелкните кнопкой мыши на звездочке над списком полей, чтобы добавить в выборку все поля.
5. Теперь дважды щелкните кнопкой мыши на названии поля Код , чтобы добавить его в выборку.
6. В бланке запроса в строке Условие отбора для поля Код введите условие выборки [Заказы]![Код] < 4. Таким образом, будут удалены все товары, имеющие код меньше четырех.
7. На вкладке Конструктор в группе Тип запроса нажмите кнопку Удаление .
8. В бланке запроса в строке Удаление в столбце со знаком * должно быть установлено значение Из , а в столбце с условием – значение Условие .
Результирующий бланк запроса на удаление показан на рис. 6.20.
Рис. 6.20. Результирующий бланк запроса на удалениеТекст запроса на удаление приведен в листинге 6.9.
Листинг 6.9.
Запрос на удаление
DELETE Товары.*, Товары. Код
FROM Товары
WHERE (((Товары. Код)<4));
9. Нажмите кнопку Выполнить . Откроется окно подтверждения операции.
10. Нажмите кнопку Да . Записи не были удалены, так как существуют зависимые записи в таблице Заказы .
Есть два варианта решения подобной задачи. Если зависимых записей не много, можно удалить их вручную. В другом случае можно изменить свойства связи так, чтобы при удалении записи на стороне «один» удалялись также все зависимые записи. Для этого выполните следующие действия.
1) Нажмите кнопку Нет .
2) Перейдите на вкладку Схема данных .
3) Дважды щелкните кнопкой мыши на связи между таблицами Товары и Заказы . Откроется окно Изменение связей (рис. 6.21).
Рис. 6.21. Окно Изменение связей
4) Установите флажок каскадное удаление связанных полей и нажмите кнопку ОК .
5) Еще раз запустите запрос на удаление.
Проверив записи в таблицах, вы можете убедиться, что удалены не только записи из таблицы Товары , но и зависимые записи из таблицы Заказы .Анализ данных с помощью запросов
Возможности запросов не ограничиваются выборкой и запросами на изменение. С помощью запросов, называемых итоговыми , можно получить статистические данные по одной или нескольким таблицам.
Для анализа данных используются статистические функции.
• Сумма – суммирует элементы в столбце. Работает только с числовыми или денежными данными.
• Среднее – вычисляет для столбца среднее значение. Столбец должен содержать числовые или денежные величины или значения даты или времени. Функция игнорирует пустые значения.
• Число – подсчитывает количество элементов в столбце.
• Максимум – возвращает элемент, имеющий наибольшее значение. Для текстовых данных наибольшим будет последнее по алфавиту значение, причем регистр не учитывается. Функция игнорирует пустые значения.
• Минимум – возвращает элемент, имеющий наименьшее значение. Для текстовых данных наименьшим будет первое по алфавиту значение, причем регистр не учитывается. Функция игнорирует пустые значения.
• Стандартное отклонение – показывает, насколько значения отклоняются от среднего.
• Дисперсия – вычисляет статистическую дисперсию для всех значений в столбце. Эта функция работает только с числовыми и денежными данными. Если таблица содержит менее двух строк, то возвращается пустое значение.
В итоговом запросе вычисляются промежуточные итоги по группам записей. Как правило, итоговый запрос применяется, когда требуется использовать значение результата в другой части базы данных, например в отчете.
Составьте запрос, подсчитывающий количество товаров в таблице Товары .
1. Откройте базу данных Отдел продаж .
2. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов .
3. В окне Добавление таблицы дважды щелкните кнопкой мыши на названии таблицы Товары . Нажмите кнопку Закрыть .
4. Дважды щелкните кнопкой мыши на названии поля Код , чтобы добавить его в выборку.
5. На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги . В бланке запроса появится строка Групповая операция .
6. В строке Групповая операция для поля Код выберите в раскрывающемся списке функцию Count .
Текст итогового запроса приведен в листинге 6.10.
Листинг 6.10.
Запрос на подсчет количества записей
SELECT Count(Товары. Код) AS [Count-Код]
FROM Товары;
7. Перейдите на вкладку Конструктор и выберите команду Выполнить .
Что же делать, если требуется подсчитать количество товаров с ценой более 1000 руб.? Измените созданный запрос.
1. Щелкните правой кнопкой мыши на заголовке вкладки запроса. Выберите из контекстного меню команду Конструктор .
2. Дважды щелкните кнопкой мыши на названии поля Цена , чтобы добавить его в выборку.
3. В строке Групповая операция для поля Цена выберите из раскрывающегося списка значение Условие .
4. В строке Условие отбора для поля Цена введите условие > 1000.
Результирующий бланк итогового запроса с условием показан на рис. 6.22.
Рис. 6.22. Результирующий бланк итогового запроса с условием
Текст итогового запроса с условием приведен в листинге 6.11.
Листинг 6.11.
Запрос на подсчет количества записей с условием
SELECT Count(Товары. Код) AS [Count-Код]
FROM Товары
WHERE (((Товары. Цена)>1000));
5. Перейдите на вкладку Конструктор и выберите команду Выполнить . В выборке остались две записи, которые удовлетворяют условию.
Вы можете составить итоговый запрос с подсчетом записей и использованием группировки. Для этого подсчитайте количество клиентов для каждого значения поля Рейтинг . Следуйте нижеприведенным указаниям.
1. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов .
2. В окне Добавление таблицы дважды щелкните кнопкой мыши на названии таблицы Клиенты . Нажмите кнопку Закрыть .
3. Дважды щелкните кнопкой мыши на названиях полей Номер и Рейтинг , чтобы добавить поля в выборку.
4. На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги . В бланке запроса появится строка Групповая операция .
5. В строке Групповая операция для поля Номер выберите в раскрывающемся списке функцию Count .
6. В строке Групповая операция для поля Рейтинг выберите в списке функцию Группировка .
Результирующий бланк итогового запроса с группировкой показан на рис. 6.23.