Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс.doc
Скачиваний:
372
Добавлен:
02.05.2014
Размер:
4.3 Mб
Скачать

4.3.2.2. Запросы на изменение данных

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

Запросы на изменение данныхшироко применяются для ввода данных приимпорте из внешних источников, перемеще­ния записейили их элементовиз одних таблиц в другие табли­цы,примассовой однотипной коррекциииличистке данных,а также дляархивациииэкспортаданных.

Существует четыреразновидности запросов на изменение:

• запросы на удаление;

• запросы на обновление;

• запросы на добавление;

• запросы на создание таблицы.

При исполнении запроса на удаление за одну операциюосу­ществляетсяудаление группы записей из одной или нескольких таблиц.Запросы на удаление реализуются SQL-инструкциейDELETE.К примеру, из таблицы «Клиенты» с помощью запро­са на удаление можно за одну операцию удалить всех клиентов, проживающих в районе «Марьина Роща». SQL-инструкция такого запроса может выглядеть следующим образом:

DELETEKлиенты.*,Клиенты.Район

FRОМКлиенты

WHERE((Клиенты.Район) = «Марьина Роща»));

Удаление записей одним запросом из нескольких таблиц может осуществляться путем перечисления через запятую в со­ответствующей SQL-инструкции имен таблиц и имен полей, за­дающих условия удаления, или по связям между таблицами при установке ограничений целостности связей в режим «Каскад­ного удаления связанных записей».

Запрос на обновление за одну операциювноситобщие из­менения в группу записей одной или нескольких таблиц.Реали­зуются SQL-инструкцией UPDAТЕ.Запросы на обновления при­меняются тогда, когда необходимо осуществитьглобальные од­нотипные измененияв каком-либо наборе данных. В качестве примера приведем ситуацию, когда в результате очередной де­номинации (девальвации) всем сотрудникам необходимо в 10 раз уменьшить (увеличить) должностные оклады. Вариант SQL-инструкции, реализующей такой запрос, может выглядеть сле­дующим образом:

UPDAТЕСотрудники

SETСотрудники.Оклад=Оклад/10;

В качестве другого примера приведем ситуацию, когда всех работников-совместителей учебного учреждения необходимо перевести в категорию почасовиков:

UPDAТЕСотрудники

SETСотрудники.Статус=«Почасовик»

WHERE((Coтpyдники.Cтaтyc)=«Coвмecтитeль»);

Обновление записей сразу в нескольких таблицах, также как и удаление, может осуществляться путем перечисления че­рез запятую в инструкции UPDAТЕимен таблиц, полей, их зна­чений и соответствующих условий, а также по связям между таблицами с предварительной установкой ограничений целос­тности связей в режим «Каскадного обновления связанных за­писей».

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

*Не обязательно имена, но обязательно типы полей.

Запросы на добавление реализуются SQL-инструкцией INSERT INTO.Предположим, в базе данных имеются две таб­лицы «Студенты» и «Научные работники» с однотипным набо­ром полей. Предположим также, что 100% студентов группы И-405 приняли участие в конкурсе научных студенческих ра­бот и опубликовали свои труды в университетском сборнике. Тем самым, будучи еще студентами, они перешли в разряд на­учных работников. В этом случае запросом на добавление од­ной операцией в таблицу «Научные работники» можно доба­вить группу новых записей. Вариант SQL-инструкции, реали­зующей такой запрос, может иметь вид:

INSERТ INTOНаучныеРаботники

SELECTCтуденты.*

FRОМСтуденты

WHERE((Студенты.Группа)=«И-405»);

Запросы на создание таблицы за одну операцию создают новую таблицу с заполненными данными на основе всех или ча­сти данных из одной или нескольких таблиц.Так же как и зап­росы на добавление, эти запросы чаще всего решают задачи пореформированию(реорганизации) базы данных,архивированию или резервированиюданных, а также могут применяться для создания отчетов илисостоянийбазы данных по определен­ным временным промежуткам. Реализуются SQL-инструкциейSELECT...INTO.Для примера приведем задачу создания спе­циального набора (отчета) данных за месяц, скажем за январь, из таблицы «Заказы» в виде отдельной таблицы (для отдельно­го хранения или обработки). Вариант соответствующей SQL-инструкции может выглядеть следующим образом:

SELECTЗаказы *

INTOЗаказы Января

FROMЗаказы

WHERE((Заказы.Дата)=BETWEEN#1/01/98#AND#1/02/98#;