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

4.7.2.Запрос с параметром (параметрический запрос)

При исполнении параметрического запроса открывается диалоговое окно, в котором запрашивается ввод параметра. Пользователь может отобразить в этом окне свой текст - подсказку, например Введите город. Чтобы эта подсказка появилась в окне для ввода параметра, надо ее написать, заключив в квадратные скобки, в соответствующей строке бланка запроса , Например, чтобы отобрать всех поставщиков из заданного города, надо в строке Условия отбора для поля город на бланке запроса написать [Введите город].

Пример 4. SQL - запрос с параметром

Вывести все города, в которых размещены поставщики.

SELECT DISTINCTROW Поставщики.город

FROM Поставщики

WHERE ((Поставщики.город=[Введите город]));

При исполнении этого запроса будут выведены все города, причем города будут повторяться, если есть несколько поставщиков из одного города. Чтобы города не повторялись, надо в окне SQL отредактировать запрос, заменив ключевое слово DISTINCTROW словом DISTINCТ. При желании можно указать тип вводимого в диалоге параметра:

  • открыть окно Параметры запроса:  Запрос/Параметры

  • указать параметр Введите город и его тип Текстовый

Тогда в SQL-запросе появится оператор

PARAMETERS [Введите город] Text;

и SQL-запрос будет иметь вид:

PARAMETERS [Введите город] Text;

SELECT DISTINCТ Поставщики.город

FROM Поставщики

WHERE ((Поставщики.город=[Введите город]));

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

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

Создание запроса:

  • создать запрос на выборку данных

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

Запрос/Создание таблицы

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

Пример 5. Многотабличный SQL - запрос на создание таблицы

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

SELECT Поставки.номерп AS [номер поставщика], Постав- ки.номерд AS [номер детали], Детали.имяд AS [имя детали], Поставщи- ки.город INTO Новая

FROM Детали INNER JOIN (Поставщики INNER JOIN Поставки ON Поставщи- ки.номерп = Поставки.номерп) ON Детали.номерд = Поставки.номерд

WHERE ((Детали.имяд=[Введите имя детали]));

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

В результате исполнения этого запроса будет создана таблица

Новая (номер поставщика, номер детали, имя детали, город).

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

4.7.4.1. На добавление записей

а) Создание запроса на добавление нескольких записей из другой таблицы:

  • создать запрос на выборку данных из таблицы-источника (откуда)

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

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

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

  • в строке Добавление бланка запроса выбрать из списка соответствующие имена полей таблицы-приемника, в которые будут добавлены значения (могут быть установлены автоматически).

б) Создание QBE-запроса на добавление одной записи с конкретными значениями полей

  • открыть бланк запроса. Никаких таблиц в верхнюю часть бланка добавлять не нужно !

  • преобразовать запрос в запрос на добавление:  Запрос / Добавление

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

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

  • в строке Поле указать для каждого поля вводимые значения в виде: псевдоним : значение. В качестве псевдонима можно указать имя поля или любое другое произвольное имя. Одинаковые имена недопустимы.

Пример 6. Добавить в таблицу Детали новую деталь с номером 5, именем ролик по цене 300. Тогда в строке Добавление бланка запроса нужно указать имена полей номерд, имяд и цена, а в строке Поле бланка запроса можно указать а: 5 для поля номерд, б:“ролик” для поля имяд и 300 для поля цена. Здесь а,б и с - псевдонимы. Соответствующий SQL-запрос:

INSERT INTO Детали (номерд, имяд, цена )

SELECT 4 AS а, 5 AS б, 150 AS с;

в) Создание SQL-запроса на добавление одной записи с конкретными значениями полей можно сделать, написав в окне SQL текст:

INSERT INTO Детали (номерд, имяд, цена )

VALUES ( 5, “ролик”,150);

Добавление данных всегда осуществляется в конец таблицы.

Пример 7. Однотабличный SQL-запрос на добавление

в таблицу Новая записей, сформированных из таблиц Поставщики, Детали и Поставки, в которых имя детали - “болт”:

INSERT INTO Новая ( [номер поставщика], [номер детали], [имя детали], [город] )

SELECT Поставки.номерп, Поставки.номерд, Детали.имяд, Поставщики.город

FROM Детали INNER JOIN (Поставщики INNER JOIN Поставки ON Поставщи- ки.номерп = Поставки.номерп) ON Детали.номерд = Поставки.номерд

WHERE ((Детали.имяд="болт"));

4.7.4.2. Запрос на удаление записей

Создание запроса:

  • создать запрос на выборку данных (т. е. указать записи, которые следует удалить из таблицы). При этом можно в строку Поле бланка запроса перенести все поля (используя символ * ), а можно вынести часть полей таблицы.

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

Запрос/Удаление

Появится на бланке запроса строка Удаление, которая будет заполнена автоматически. Если в строку Поле были вынесены все поля (с помощью символа *), то для этого столбца в строке Удаление будет указано слово Из, а в столбце, для которого было написано условие отбора, в строке Удаление будет указано слово Условие.

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

Пример 8. SQL-запрос на удаление записей , в которых номер поставщика равен 4 из родительской таблицы Поставщики

DELETE Поставщики.*, Поставщики.номерп

FROM Поставщики

WHERE ((Поставщики.номерп=4));

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