ФОРМИРОВАНИЕ ЗАПРОСОВ

Под обработкой данных понимают добавление записи, редактирование записи, сохранение записи, удаление записи. При работе с удаленными базами данных обработку выполняют с использованием механизма транзакций. Транзакция может состоять из одного или нескольких запросов, направленных на изменение записей, размещенных как в одной, так и в нескольких таблицах. Для этих целей используют соответствующие запросы INSERT, UPDATE и DELETE. Физическое выполнение этих запросов может быть осуществлено через утилиту IBConsol или через компоненты TIBQuery, TIBDataSet, TIDUpdateSQL, TIBSQL с использованием механизма транзакций (подробнее см. гл. 10). При эксплуатации баз данных администратор базы данных определяет пользователей, которые могут вносить изменения в удаленную базу данных.

Добавление новой записи

При добавлении новой записи формируется 50Т-запрос типа INSERT. Возможны три варианта использования запроса INSERT.

а. Полный формат запроса INSERT

INSERT INTO <имя_таблицы>

[ (<имя_поля_1>,<имя_поля_2>,...,<имя_поля_А>) ]

VALUES (<значение_1>,<значение_2>,...,<значение_А>)

Назначение опций:

<имя_таблицы> — указывается имя таблицы, в которую добавляется запись;

<имя_поля_1>,<имя_поля_2>,...,<имя_поля_А> — указываются имена полей, которым будут присвоены конкретные значения;

<значение_1>,<значение_2>,...,<значение_А> — указываются значения, которые будут присвоены соответствующим полям.

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

Пример 9.1. Использование полного формата запроса INSERT.

Пусть ранее была создана таблица.

CREATE TABLE Book (

Key_book INTEGER NOT NULL PRIMARY KEY,

Name_book VARCHAR(20),

Key town INTEGER,

Key izd INTEGER,

Year INTEGER,

Price DECIMALS,2)

);

Тогда для добавления новой записи и заполнения всех полей значениями необходимо использовать запрос:

INSERT INTO Book (Key_book, Name_book, Key_town, Key_izd, Year, Price)

VALUES (14, 'Малахитовая шкатулка', 3, 4, 2008, 150.75);

В добавляемой записи можно заполнять только часть полей, но поля с параметром NOT NULL должны быть обязательно заполнены. Остальные поля записи могут быть заполнены потом с использованием запроса UPDATE (редактирование записи).

INSERT INTO Book (Key_book, Name_book, Price)

VALUES (14, 'Малахитовая шкатулка', 150.75);

б. Краткий формат запроса INSERT

INSERT INTO <имя_таблицы>

VALUES (<значение_1>,<значение_2>, ...,<значение_А>)

Назначение опций:

<имя_таблицы> — указывается имя таблицы, в которую добавляется запись;

<значение_1>,<значение_2>, ...,<значение_А> — указываются значения, которые будут присвоены соответствующим полям.

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

Пример 9.2. Использование краткого формата запроса INSERT.

Для таблицы, созданной в примере 9.1, краткая форма запроса INSERT будет иметь вид:

INSERT INTO Book

VALUES (14, 'Малахитовая шкатулка', 3, 4, 2008, 150.75);

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

в. Добавление нескольких записей запросом INSERT

Формат запроса:

INSERT INTO <имя_таблицы_приемника>

SELECT * FROM <имя_таблицы_источника>

WHERE <условие_отбора_записей>

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

Пример 9.3. Добавление в таблицу нескольких записей.

Пусть таблица Book, созданная в примере 9.1, будет таблицей-источником. Создадим таблицу-приемник.

CREATE TABLE Book_2008 (

Key_book INTEGER NOT NULL PRIMARY KEY,

Name_book VARCHAR(20), Year INTEGER,

Price DECIMAL(7,2)

);

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

INSERT INTO Book_2008

SELECT Key book, Name book, Year, Price FROM Book WHERE Year = 2008

 
< Пред   СОДЕРЖАНИЕ     След >