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

Однострочная инструкция insert

Однострочная инструкция INSERT применяется для добавления одной записи в таблицу и имеет формат

INSERT INTO <объект> [(столбец1 [, столбец2 ...])]

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

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

Пример: добавить информацию о новом служащем в таблицу SLUZHASCHIE:

INSERT INTO SLUZHASCHIE (ID_SLUZH, FAMILY, NAME, AGE, MNGR, ID_OFC, QUOTA)

VALUES (211, Аршавин, Андрей, 25, 106, 11, $3 000)

В приведенной инструкции данные о продажах нового служащего не вводятся, так как их у него еще нет. Поэтому при определении таблицы инструкцией CREATE TABLE, либо нужно определить для этого поля значение по умолчанию (ключевое слово DEFAULT), либо нужно допустить значение NULL (т. е. в определении этого поля не должно быть ключевого слова NOT NULL).

Если же столбцы таблицы SLUZHASCHIE указаны в полном составе и именно в том порядке, в котором перечислены при создании таблицы инструкцией CREATE TABLE, оператор можно упростить:

INSERT INTO SLUZHASCHIE

VALUES (211, Аршавин, Андрей, 25, 106, 11, $3 000, $0.00)

Для установки уникального значения поля первичного ключа ID_SLZH можно воспользоваться генератором:

INSERT INTO SLUZHASCHIE

VALUES (GEN_ID(ID_SLUZH, 2), Аршавин, Андрей, 25, 106, 11, $3 000, $0.00)

Многострочная инструкция insert

Многострочная инструкция INSERT добавляет в целевую таблицу несколько строк и имеет следующий формат:

INSERT INTO <объект> [(столбец1 [, столбец2 ...])]

<оператор SELECT>}

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

Пример. Скопировать старые заказы в таблицу OLDORDERS:

INSERT INTO OLDORDERS (ID_ORDER, ORDER_DATE, PRICE)

SELECT ID_ORDER, ORDER_DATE, PRICE

FROM ZAKAZY

WHERE ORDER_DATE < ’01-JAN-2002’

4.6.2.Оператор update

Операция обновления данных UPDATE требуется тогда, когда происходят изменения во внешнем мире и их надо адекватно отразить в базе данных.

Инструкция обновления UPDATE имеет формат

UPDATE имя_табл

SET имя_столбца = новое_значение

[WHERE условие_отбора]

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

Пример. Перевести всех служащих из Инзенского офиса (идентификатор 22) в Тверской офис (идентификатор 12) и понизить их личные планы (поле QUOTA) на 10 процентов.

UPDATE SLUZHASCHIE

SET ID_OFC = 12, QUOTA = 0.9*QUOTA

WHERE ID_OFC = 22

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

Пример. Увеличить планы для всех сотрудников на пять процентов.

UPDATE SLUZHASCHIE

SET QUOTA = 1.05*QUOTA

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

Пример. Увеличить на $5 000 лимит кредита для тех клиентов, которые сделали заказ на сумму более $5 000.

UPDATE SLUZHASCHIE

SET QUOTA = QUOTA + 5000.00

WHERE ID_SLZH IN (SELECT DISTINCT ID_CLN

FROM ZAKAZY

WHERE PRICE > 25000)

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