7/28/2016

Оператор INSERT

Пример 1.1.
 INSERT INTO emp VALUES (101, 'Willson', 'Jack', null, null, null,  null, null, null, null, null);

 SELECT first_name, last_name FROM emp WHERE last_name LIKE  'Will%';

 FIRST_NAME                LAST_NAME
 ------------------------- -------------------------
 Jack                      Willson


Пример 1.2.
 INSERT INTO emp (id, last_name, start_date) VALUES (102, 'Bourne',  TO_DATE('01-05-2004', 'DD-MM-YYYY'))

 SELECT id, first_name, last_name, start_date FROM emp WHERE  last_name  LIKE 'Bou%';

 ID         FIRST_NAME        LAST_NAME         START_DATE
 ---------- ----------------- ----------------- -------------
 102        NULL              Bourne            01-05-2004

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

Пример 2.
 INSERT INTO region (id, name) SELECT id*100, name||' --> copy'  FROM  region

 SELECT * from region;

 ID         NAME
 ---------- --------------------------------------------------
 1          North America
 2          South America
 3          Africa / Middle East
 4          Asia
 5          Europe
 100        North America --> copy
 200        South America --> copy
 300        Africa / Middle East --> copy
 400        Asia --> copy
 500        Europe --> copy

Комментарий:
Интересная возможность вставки записей, основанных на результатах возвращаемого запроса, конкретнее подзапроса в этом контексте.

Пример 3.
 INSERT INTO region (id, name)
 SELECT id*1000, last_name||' --> tabel EMP'
 FROM emp
 WHERE salary > 1500;

 SELECT * from region;

 ID         NAME
 ---------- --------------------------------------------------
 1          North America
 2          South America
 3          Africa / Middle East
 4          Asia
 5          Europe
 1000       Velasquez --> tabel EMP
 5000       Ropeburn --> tabel EMP
 13000      Sedeghi --> tabel EMP
 14000      Nguyen --> tabel EMP

Комментарий:
Конечно же, подзапрос не должен взимать данные из той таблицы, в которую записываем. Главное соотношение типов.

Комментариев нет :

Отправить комментарий