Цей оператор дає змогу додати до таблиці множину рядків (результат виконання запиту) і, таким чином, дозволяє копіювати інформацію з однієї чи кількох таблиць до іншої. Часто за допомогою оператора INSERT...SELECT дані копіюються до похідних таблиць, що створюються з метою підвищення продуктивності виконання тих чи інших операцій над базою даних. Оператор має такий формат:
INSERT INTO <:ім'я таблиці> (<список полів>)
SELECT <список полів>
FROM <ім'я таблиці>
WHERE <умова пошуку>
Вихідні результати стандартного оператора SELECT є вхідними даними для оператора INSERT. Наведемо приклад.
Запит 4.40_____________________________________________________________
Додати до таблиці ТИМЧАСОВА, що має стовпці Назва_факультету, Назва^кафедри, Прі-звище_викладача, наявні в базі даних відомості про викладачів, а також про кафедри та факультети, де вони працюють.
INSERT INTO ТИМЧАСОВА (Назва^факультету, Назва_кафедри. Прізвище_викладача)
SELECT ФАКУЛЬТЕТ.Назва. КАФЕДРА.Назва. ВИКЛАДАЧ.Прізвище
FROM ФАКУЛЬТЕТ. КАФЕДРА. ВИКЛАДАЧ
WHERE ФАКУЛЬТЕТ.#F = КАФЕДРА.#F AND КАФЕДPA.#D = ВИКЛАДАЧ.#0
Для оператора INSERT...SELECT мають виконуватися додаткові правила: + оператор SELECT не може вибирати рядок із таблиці, до якої здійснюється додавання; + кількість стовпців у фразі INSERT INTO має збігатися з кількістю стовпців у фразі SELECT; ♦ типи даних стовпців у фразі INSERT INTO мають збігатися з типами даних стовпців у фразі SELECT.