Запросы на изменение с помощью SQL

Как вы уже знаете, запросы на изменение используются для добавления, удаления и обновления записей, а также для сохранения результирующего набора записей запроса в виде таблицы. Посредством макрокоманды RumSQL (Запуск запроса SQL) эти запросы можно выполнить непосредственно из макроса.

Существует четыре вида запросов на изменение, каждому из которых соответствует определённая SQL-инструкция (табл. 2.2).

Таблица 2.2

Запрос действия Описание SQL-инструкция
Append query Запрос на добавление записей INSERT INTO
Delete query Запрос на удаление записей DELETE
Make-table query Запрос на создание таблицы SELECT…INTO
Update query Запрос на обновление записей UPDATE

Рассмотрим ряд примеров, чтобы научиться использовать запросы на изменение с помощью SQL.

Запрос на добавление. Перенесём часть сведений из таблицы Потенциальные покупателив таблицуКлиенты. Отбор необходимых записей из таблицы Потенциальные покупатели выполним с помощью команды SELECT (SQL-запроса). После выполнения SQL-запроса образуется выходной набор данных. Его можно вставить в таблицу Клиентыс помощью команд меню. Для этого следует перейти в режим конструктора запроса и (при активном запросе из таблицы Потенциальные покупатели) выбрать из меню Запроскоманду Добавление. Откроется диалоговое окно для установки параметров запроса на добавление (рис. 2.21).

Рис. 2.21. Окно установки параметров запроса на добавление

В списке Имя таблицы выберите таблицу Клиенты(в неё должны быть добавлены записи). После нажатия кнопки ОКв окне конструктора запроса появится строка Добавление.Укажите в этой строке, в каких полях таблицы Клиентыдолжно находиться содержимое добавляемых записей. Число полей в добавляемых записях и таблице, в которую они вставляются, должно совпадать. Запрос на добавление готов. Проверьте, как он выполняется, нажав кнопку Запуск на панели инструментов.

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

INSERT INTO Клиенты

SELECT [Населённый пункт] = ”Бобруйск”

FROM [Потенциальные покупатели];

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

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

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

Запрос на обновление на языке SQL выглядит так:

UPDATE (Каталог товаров)

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

WHERE Артикул = Автомобильные запчасти;

С помощью данного запроса значение цен на автомобильные запчасти в таблице Каталог товаров будут увеличены на 10 %.

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

Запрос на удаление. Допустим, просматривая таблицу Клиенты, вы обнаружили, что в последнем полугодии от некоторых клиентов не поступали заказы, следовательно, данные о них можно удалить из таблицы. В окне конструктора запроса задайте критерии отбора, после чего активизируйте команду Удалениеиз меню Запрос. В результате в проекте запроса появится строка Удаление, а в ячейках этой строки, которые соответствуют полям запроса, ‑ ключевое слово Условие. Здесь укажите, каким критериям должны отвечать удаляемые записи. В поле Дата заказавведите следующее условие: <15.01.07.

В результате будут отобраны записи о тех клиентах, последние заказы от которых были получены фирмой раньше 15 января 2007 года. Запрос на удаление готов. Проверьте, как он работает, нажав кнопку Запуск на панели инструментов.

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

DELETE FROM Клиенты

WHERE (Дата заказа)<15.01.2007;

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

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

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

Для решения поставленной задачи создадим запрос, позволяющий отобрать данные для новой таблицы. Критерием отбора будет [Дата заказа]<01.01.2007

В меню Запросвыберите команду Создание таблицы. Откроется диалоговое окно задания параметров запроса на создание таблицы (рис. 2.22).

Рис. 2.22. Окно задания параметров запроса на создание таблицы

В полеИмя таблицы задайте имя создаваемой таблицы. После нажатия кнопки OK запрос на создание таблицы будет готов. Для его выполнения следует нажать кнопку Запускна панели инструментов.

Такой же запрос можно создать и на SQL-языке, используя инструкцию SELECT…INTO: SELECT Список_полей INTO Новая_таблица. В качестве значения аргумента Список_полей указываются поля,которые должны быть скопированы в новую таблицу. Между именами полей ставятся запятые. В качестве значения аргумента Новая_таблицазадаётся таблица с выходным набором, которую мы получим в результате выполнения запроса.

Запрос на создание таблицы в рассматриваемом примере выглядит так:

SELECT Заказы*

INTO [Архив заказов]

FROM Заказы

WHERE [Дата заказа]<01.01.2007;

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: