Приведенный выше вариант оператора INSERT позволяет вставить за один раз только одну строку. Есть еще один вариант оператора INSERT, который позволяет вставить в таблицу все строки, выбранные оператором SELECT.
Это часто используется, когда нужно быстро скопировать строки из одной таблицы в другую или применить быстрый способ резервного копирования некоторых строк.
В следующем примере кода показано, как две строки из таблицы командированных сотрудников копируются в уже существующую таблицу delegates_copy.
SQL> INSERT INTO delegates_copy
- 2 SELECT *
- 3 FROM delegates;
- 2 rows created.
В предыдущем примере в качестве оператора select может использоваться любой автономный оператор SELECT.
В следующем примере кода оператор select возвращает не все строки таблицы (а только те, которые соответствуют фразе where) и оператор insert в новых строках заполняет только столбцы, являющиеся NOT NULL.
SQL> INSERT INTO delegates_copy (d_delegate_id, d_lastname)
SELECT d_delegate_id, djastname
FROM delegates
WHERE d_firstname LIKE '%M%
1 row created.
SQL>
Оператор select должен возвратить такое число элементов, какое упомянуто в части INSERT оператора; нельзя дать указание заполнить четыре столбца, и затем заставить оператор select возвратить только три значения.