Внимание!
Перед выполнением запроса на удаление следует создать резервную копию базы данных. Некоторые операции удаления можно отменить, однако создание резервной копии позволяет отменить все изменения.
Создайте запрос на удаление из таблицы Заказы заказов первого клиента.
1. Откройте базу данных Отдел продаж .
2. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов .
3. В окне Добавление таблицы дважды щелкните кнопкой мыши на названии таблицы Заказы . Нажмите кнопку Закрыть .
4. Дважды щелкните кнопкой мыши на звездочке над списком полей, чтобы добавить в выборку все поля.
5. Теперь дважды щелкните кнопкой мыши на названии поля Клиент , чтобы добавить его в выборку.
6. В бланке запроса в строке Условие отбора для поля Клиент введите условие выборки [Заказы]![Клиент] = 1.
Результирующий бланк запроса на выборку показан на рис. 6.15.
Рис. 6.15. Результирующий бланк запроса на выборку
Текст запроса на выборку приведен в листинге 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 Товары;