Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб_раб_базы_данных.doc
Скачиваний:
54
Добавлен:
21.11.2019
Размер:
2.59 Mб
Скачать

Лабораторная работа № 6 Запросы на изменение

Теоретические сведения

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

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

2. Запрос на обновление заменяет одни значения в каких-либо полях выбранных записей на другие.

3. Запрос на добавление использует полученные в выборке записи для добавления в какую-либо из имеющихся таблиц. Схема выборки должна соответствовать схеме таблицы-приемника.

4. Запрос на удаление использует полученные в выборке данные для их удаления из таблицы-источника.

Запрос на создание таблицы создается в виде запроса на выборку, который в окне конструктора превращается в необходимый запрос с помощью кнопки Создание таблицы (команда Запрос > Создание таблицы). После выполнения команды открывается окно для ввода имени создаваемой таблицы. После закрытия запроса и его запуска по команде Открыть в окне БД будет создана таблица с указанным именем. Поля этой таблицы наследуют типы полей таблицы-источника.

Запрос на обновление может быть использован для замены данных в таблицах БД. Отбор заменяемых записей (полей) производится с помощью запроса на выборку, который превращается в запрос на обновление с помощью кнопки Обновление (команда Запрос > Обновление). Для обновления поля надо в строку Обновление ввести значение или выражение, определяющее новое значение. После запуска запроса открывается окно с сообщением о числе обновляемых записей и вопросом о продолжении операции. Результат можно проверить переключением в режим таблицы командой Вид > Режим таблицы (кнопка Представление запроса).

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

UPDATE таблица SET новое значение WHERE условия отбора.

Новое значение указывается как имя поля – новое значение.

UPDATE Студент SET [Группа] = "212"

WHERE [Фамилия] LIKE 'В*' AND [Дата рождения] <= #01/01/81#

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

Запрос на добавление может быть сконструирован в двух вариантах:

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

  • добавление множества записей.

В первом варианте запрос позволяет добавить в любую таблицу БД единственную запись во все поля, либо только в обязательные для ввода. Добавить запись можно с клавиатуры или в программе с помощью констант.

Во втором варианте запрос на добавление строится как обычный запрос на выборку, при конструировании которого следует обеспечить совместимость типов полей таблицы-источника с соответствующими типами полей таблицы-получателя. Запрос на выборку превращается в запрос на добавление кнопкой Добавление (командой Запрос > Добавление). В окне Добавление вводится имя таблицы, в которую надо добавить записи. После выполнения команды в бланке запроса появляется строка Добавление. Для формирования добавляемых записей надо включить в бланк запроса поля, соответствующие полям таблицы, в которые будет производиться добавление, и записать условия отбора полей в ячейки строки Условие отбора. Если в таблице, в которую добавляются записи, есть ключ, то ключевые поля обязательно должны быть включены в бланк запроса. Для указания в строке Добавление имен полей таблицы-получателя надо в каждой ячейке открыть список и выбрать нужное имя. Если выбранные поля имеют одни имена в обеих таблицах, имена в строку Добавление вносятся автоматически. Предварительный просмотр добавляемых записей производится кнопкой Представление запроса на панели инструментов. Для добавления записей нажимается кнопка Запуск на панели инструментов. Если таблица, в которую добавляются записи, содержит ключевое поле, то добавляемые записи должны содержать такое же поле.

В языке SQL формирование новой записи выполняется командой:

INSERT INTO таблица [(поле1[, поле2[, ...]])]

VALUES (значение1[, значение2[, ...]);

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

INSERT INTO Студент ([Фамилия], [Имя], [Дата рождения])

VALUES ("Петров", "Иван", #23/3/80#)

Другой способ добавления записи предусматривает ввод значений полей с клавиатуры. Следует сконструировать параметрический запрос на добавление:

INSERT INTO Студент ([Фамилия], [Имя], [Дата рождения])

VALUES([Фамилия], [Имя], [Дата рождения])

При запуске этого запроса на экран выводится окно с заданным в запросе приглашением для каждого поля (рис. 29).

Рис. 29. Окно ввода параметрического запроса

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

INSERT INTO таблица [IN внешняя база данных]

SELECT [источник.]поле1[, поле2[, ...]

FROM выражение WHERE условие

Сначала выполняется оператор подзапроса SELECT, который формирует выборку. Фраза SELECT определяет структуру данных источника передаваемых записей – имена таблицы и полей, содержащих данные. Фраза FROM позволяет указать имена исходных таблиц, участвующих в формировании выборки, а фраза WHERE задает условия выполнения подзапроса. Структура данных выборки должна соответствовать структуре данных таблицы, в которую добавляются данные.

Добавление записей возможно во внешнюю БД, для которой указывается полное имя (диск, каталог, имя, расширение). Структуры таблиц должны совпадать.

INSERT INTO Студент SELECT [Студент-заочник].*

FROM [Студент-заочник]

Записи таблицы Студент-заочник будут добавлены в таблицу Студент.

INSERT INTO Студент SELECT [Студент-заочник].*

FROM [Студент-заочник] WHERE [Дата рождения] >= #01/01/80#

Записи таблицы Студент-заочник добавляются в таблицу Студент, если дата рождения студента больше или равна указанной.

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

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

DELETE [таблица.*] FROM выражение WHERE условия отбора

Полная чистка таблицы от записей и очистка индексов выполняются операцией: DELETE * FROM таблица.

DELETE * FROM Студент – все записи таблицы будут удалены.

DELETE * FROM Студент WHERE [Дата рождения]> #1.1.81 #

Удаляются те записи, в которых поле Дата рождения больше указанной даты.

Результаты запроса зависят от установленных в БД отношений. Если требуется удалить записи из таблицы, связанной с другой таблицей отношением 1:М, то запрос может не пойти, если для связи не установлен флажок Каскадное удаление. В этом случае необходимо сначала удалить записи из подчиненной таблицы, а потом из главной. Если флажок установлен, то при удалении записи из главной таблицы будут удалены все связанные с этой записью записи из подчиненной таблицы.

Практическая работа

При выполнении работы необходимо для заданной предметной области:

  • сконструировать запрос на создание таблицы;

  • сконструировать запрос на добавление записей в следующих вариантах:

а) добавление группы записей из таблицы-источника;

б) добавление одной записи с клавиатуры;

в) добавление одной записи с фиксированными значениями;

  • сконструировать запрос на удаление одной записи и группы записей;

  • сконструировать запрос на изменение значений одного поля, нескольких полей, в одной таблице и в нескольких таблицах;

  • составить отчет по лабораторной работе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]