Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по базам данных 2005.docx
Скачиваний:
62
Добавлен:
29.10.2018
Размер:
148.31 Кб
Скачать

5.7 Перекрестный запрос с составным заголовком строк

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

Код поставщика

Поставщик

Итого

001

002

003

5.8 Запрос на обновление

Синтаксис команды запроса на обновление имеет следующий вид:

Update <имя таблицы>

Set < имя поля 1> = <выражение 1>

[,<имя поля 2> = < выражение 2>]

[, … ]

[Where <условие отбора>]

В описании команды запроса на обновление используются метасимволы, которыми являются < >, [ ], … . При написании реального запроса на языке SQL они должны быть заменены по смыслу на что-то еще. Конструкция [, … ] означает и так далее.

Приведем пример запроса на обновление. Предположим, что цены выросли на 10% . Чтобы отразить изменение цен в таблице Товар необходимо написать следующую команду на языке SQL:

Update Товар

Set Цена = Цена*1,1

Если цены выросли не на все товары, то может быть задано условие отбора, например, цены выросли на товары 002 и 004.

Update Товар

Set Цена = Цена*1,1

Where КодТов In (“002”,”004”)

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

5.9 Запрос на удаление

Синтаксис команды запроса на удаление имеет следующий вид:

Delete [<имя таблицы >.*]

From <связка таблиц>

Where <условие отбора>

Имя таблицы, из которой удаляются записи, должно входить в связку таблиц.

Чтобы из таблицы Поставка удалить записи, дата поставки которых раньше 01.01.2004, будет использоваться следующая команда:

Delete Поставка.*

From Поставка

Where ДатаПост<=#01.01.04#

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

5.10 Запрос на добавление

Запрос на добавление позволяет вставить в физическую таблицу одну или несколько записей. Синтаксис команды запроса на добавление имеет следующий вид:

Insert into <имя таблицы>

<запрос на выборку>.

Допустим, что из таблицы поставка требуется выбрать записи с датой поставок раньше 01.01.2004 и сохранить их в таблице ПоставкаАрхив. Для этого необходимо написать следующую команду на языке SQL:

Insert into ПоставкаАрхив

Select *

From Поставка

Where ДатаПост<=#31.12.03#

Символ * означает, что из таблицы Поставка будут взяты все поля. Если необходимо выбрать только некоторые поля, они должны быть перечислены в команде Select.

Команды Insert into и Delete часто используются в паре для закрытия месяца или года в бухгалтерском учете. Для того чтобы провести реформа

таблицы поставок сначала необходимо воспользоваться командой Insert into и сохранить все записи, относящиеся к предыдущему отчетному периоду, в архивную таблицу и затем удалить эти записи из исходной таблицы при помощи команды Delete.