Однострочная инструкция 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, $300 000.00)
В приведенной инструкции данные о продажах нового служащего не вводятся, так как их у него еще нет. Поэтому при определении таблицы инструкцией CREATE TABLE, либо нужно определить для этого поля значение по умолчанию (ключевое слово DEFAULT), либо нужно допустить значение NULL (т.е. в определении этого поля не должно быть ключевого слова NOT NULL).
Если же столбцы таблицы SLUZHASCHIE указаны в полном составе и именно в том порядке, в котором перечислены при создании таблицы инструкцией CREATE TABLE, оператор можно упростить:
|
|
INSERT INTO SLUZHASCHIE
VALUES (211, Аршавин, Андрей, 25, 106, 11, $300 000.00, $0.00)
Для установки уникального значения поля первичного ключа ID_SLZH можно воспользоваться генератором:
INSERT INTO SLUZHASCHIE
VALUES (GEN_ID(ID_SLUZH, 2), Аршавин, Андрей, 25, 106, 11, $300 000.00, $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’