Лабораторная работа № 8. Добавление, изменение, удаление данных. Отчеты

В данной лабораторной работе мы рассмотрим запросы на добавление, изменение и удаление данных. Также будет рассмотрена работа с еще одним типом объектов Access – отчетами, которые позволяют создать и оформить набор данных для вывода на печать.

Как вы уже знаете из теоретической части курса, для добавления, изменения и удаления записей в таблицах служат операторы SQL INSERT, UPDATE и DELETE соответственно. Рассмотрим создание таких запросов в конструкторе Access. На рис. П.8.1 показаны кнопки панели инструментов Конструктора запросов, позволяющие создать заготовку для запроса соответствующего типа.

Перекрестный запрос

Рис. П.8.1. Перекрестный запрос

Начнем с запроса на добавление данных. При создании этого типа запроса Конструктор предложит выбрать таблицу, в которую будут добавляться записи, и создаст заготовку вида

INSERT INTO Book

SELECT;

Здесь хотелось бы напомнить, что у оператора INSERT есть два варианта записи, первый из которых используется, когда нужно внести в базу заранее определенный набор значений, второй – если нужно вставить в таблицу результат выполнения некоторого запроса (как раз для этого случая подходит заготовка, сформированная Конструктором запросов). Начнем с первого варианта. Пусть в таблицу Book надо добавить новую запись. Сделать это можно следующим образом:

INSERT INTO Book (Author, Title, Publisher, BookYear) VALUES ('Дейт К.', 'Введение в системы баз данных. 8-е издание', 'Издательский дом "Вильямс"', 2005);

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

Задание. Используя базу из файлов к лабораторной работе, напишите запрос, добавляющий новый статус "устарела" в таблицу BookStatus.

Рассмотрим теперь пример использования второго формата оператора INSERT. Пусть в таблицу Bookl нужно внести записи из таблицы Book о книгах, выпущенных после 2000 г. Текст запроса приведен ниже. Считаем, что в таблице Bookl, так же как и в Book, поле BookID имеет тип "счетчик" и генерирует значения автоматически, из-за чего идентификаторы изданий в таблицах Book и Bookl могут отличаться:

INSERT INTO Bookl (Author, Title, Publisher, BookYear) SELECT Author, Title, Publisher, BookYear

FROM Book

WHERE Book.BookYear>2000;

Задание. Напишите запрос, добавляющий в таблицу BookStatusI названия статусов книг из таблицы BookStatus.

Рассмотрим теперь запросы на обновление. В языке SQL обновление записей делается с помощью оператора UPDATE. Например, следующий запрос обновит значение года издания для книги с идентификатором 4:

UPDATE Book

SET BookYear=2000

WHERE BookID=4;

Если секция WHERE в запросе отсутствует, то обновлены будут все записи в таблице.

Задание. Напишите два запроса, первый из которых увеличивает год издания всех книг в таблице Bookl на 2, а второй изменяет в таблице BookStatusI название статуса с "устарела" на "обветшала".

Перейдем теперь к удалению данных из таблиц. Если в окно Конструктора запросов добавить таблицу Book и выбрать тип запроса "удаление", то будет сформирована следующая заготовка:

DELETE *

FROM Book;

Выполнение этого кода приведет к попытке удаления всех записей из таблицы Book. Здесь стоит отметить, что ограничение внешнего ключа не позволит удалить те записи, для которых есть связанные с ними в таблице BooklnLib (в Access удаление не оформляется как транзакция, поэтому часть записей этим запросом может быть удалена, часть – нет). Также надо отметить, что стандарт SQL не подразумевает указания столбцов после DELETE (в примере это "*" (звездочка), которую подставляет Конструктор) и код DELETE FROM Book; также будет корректен.

Если в запрос добавить секцию WHERE, то появляется возможность указать, какие именно записи удаляются. Например, следующий запрос удалит из таблицы Book запись со значением поля BookID, равным 6 (если такая запись в таблице имеется):

DELETE *

FROM Book

WHERE BooklD=6;

Задание. Напишите два запроса, первый из которых удаляет все записи из таблицы BookStatusI, а второй удаляет из таблицы BooklnLib записи об экземплярах книг, изданных издательством "Азбука" (подсказка: в секции WHERE можно использовать условие IN и подзапрос).

Отчеты в Access. Отчеты – это объекты БД Access, позволяющие выбрать из базы требуемую информацию и оформить ее в виде документа, который удобно будет просмотреть и напечатать. В отличие от форм, которые тоже предназначены для более удобного представления информации, отчеты не позволяют вводить и исправлять данные в таблицах. Отчет можно легко конвертировать и сохранить в формате Word, HTML, PDF и ряде других.

Отчеты, так же как и формы, могут включать заголовок, примечание (отображаются один раз вверху и внизу отчета соответственно), верхний и нижний колонтитулы (отображаются на каждой странице), область данных.

Создание простых отчетов с помощью мастера очень напоминает аналогичную операцию для форм.

Задание. Перейдите на вкладку Создание и с помощью Мастера создайте отчет, выводящий данные о книгах из таблицы Book. Данные должны быть сгруппированы по году выхода книги, а в рамках группы – отсортированы по названию.

Скорее всего, в построенном в Мастере отчете какие-то данные не будут помещаться в отведенные им рамки. Поэтому в конструкторе разместите элементы в области данных так, чтобы все надписи выводились полностью, а названия столбцов замените на русские.

В примечании отчета выведите надпись "Перечень книг в нашей библиотеке". В заголовок отчета добавьте какой-нибудь рисунок, например из файлов к лабораторной работе. Сделайте так, что после каждой группы книг, определяемой одним годом издания, шла черта, отделяющая данную группу от других.

 
< Пред   СОДЕРЖАНИЕ     След >