КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Многострочная инструкция INSERT.Для добавления в целевую таблицу нескольких строк предназначена многострочная инструкция INSERT, синтаксическая диаграмма которой изображена на рисунке ниже:
В этой разновидности инструкции INSERT значения для новых строк явно не задаются – источником данных служит запрос на выборку, содержащейся внутри инструкции. Хотя многострочная инструкция INSERT выглядит сложнее однострочной, в действительности она является очень простой. В ней, как и в однострочной разновидности инструкции INSERT, задаются таблица и столбцы, в которой заносятся новые данные. Оставшаяся часть инструкции представляет собой запрос, извлекающий данные из какой-либо существующей таблицы. Для примера создадим запрос, создающий резервную копию информации о всех студентах, проживающих вне Нижнего Новгорода:
INSERT INTO stud_info_backup SELECT * FROM stud_info WHERE address NOT LIKE ‘NNov%’;
На запрос, содержащийся внутри многострочной инструкции INSERT , стандарт SQL накладывает следующие ограничения: · Запрос не может включать блок ORDER BY, т.к. это не имеет смысла. · Таблица результатов запроса должна содержать количество столбцов , равное длине списка столбцов в инструкции INSERT (или количеству столбцов в целевой таблице, если список столбцов опущен), а типы данных соответствующих столбцов таблицы результатов запроса и целевой таблицы должны быть совместимыми. · Запрос не может быть запросом на объединение (UNION) нескольких различных инструкций SELECT. · Имя целевой таблицы инструкции INSERT не может присутствовать в блоке FROM запроса на выборку или любого запроса, вложенного в него. Тем самым запрещается добавление таблицы самой к себе. Стандарт SQL2 (SQL92) допускает применение операций UNION и JOIN в запросе на выборку, содержащемся внутри инструкции INSERT.
|