Для множественной вставки данных в SQL ORACLE существует команда INSERT ALL.
Здесь
• CONDITION — условие на вставку записей в заданную таблицу;
• TABLE_NAME — наименование таблицы;
• VALUES_LIST — перечень значений из основного запроса SELECT.
Чтобы понять лучше, создадим готовый пример для лучшего понимания принципов работы.
Создадим три разных таблицы на основе системного представления ALL_OBJECTS.
Мы создали три таблицы для наименований таблиц, индексов и кластеров.
Воспользуемся командой INSERT ALL, чтобы вставить данные в эти три таблицы.
В зависимости от типа объекта записи добавляются в одну из трех таблиц: OBJ_T, OBJ_I, OBJ_C.
Рисунок 215. Использование INSERT ALL
Рисунок 216. Использование INSERT ALL
Рисунок 217. Использование INSERT ALL
В данном примере с помощью одного запроса:
• в таблицу OBJ_T были добавлены только наименования таблиц;
• в таблицу OBJ_T были добавлены только наименования индексов;
• в таблицу OBJ_T были добавлены только наименования кластеров.
• INSERT ALL — операция модификации данных, после ее завершения необходимо выполнить COMMIT.
• INSERT ALL может использоваться для вставки данных только в таблицы, но не в представления или материализованные представления.
• Сумма столбцов во всех предложениях INSERT INTO не должна превышать 999.
• INSERT ALL нельзя использовать для таблиц с коллекциями.
• В INSERT ALL нельзя использовать последовательность SEQUENCE.
Приведите, пожалуйста, пример на основе нашей учебной схемы.
Предположим, у нас есть таблицы CITYBIG, CITYSMALL такие же, как таблица CITY.
В таблице CITYBIG добавлены сведения о городах с населением больше 1 миллиона человек.
В таблице CITYSMALL добавлены сведения о городах с населением меньше 1 миллиона человек.
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторить материал этого шага.
2. Создать три таблицы с полями, колонками «наименование объекта», «владелец».
3. В первую таблицу добавить из AUTO только машины владельца BMW.
4. Во вторую таблицу добавить из AUTO только машины владельца LADA.
5. В третью таблицу добавить из AUTO все остальные объекты, используя INSERT ALL.
Шаг 81. Массовое обновление данных
Существует интересная возможность обновления данных в связанных таблицах с помощью команды UPDATE. Это способ множественного обновления данных на основе запроса.
Множественный UPDATE
Предположим, что нам необходимо заменить значения в таблице 1 данными из таблицы 2.
Можно, конечно, написать что-то вроде:
В ORACLE SQL есть более легкий способ произвести подобную операцию.
Заполним данными и выполним UPDATE.
Данные были обновлены.
Следует отметить, что для корректной работы такого способа UPDATE у обновляемой таблицы обязательно необходимо наличие первичного ключа, в нашем случае это PHONENUM.
Необходимо отметить, что такую команду обновления данных следует также завершать командой COMMIT.
Как еще можно обновить данные таким способом?
В ORACLE SQL есть специальная команда MERGE, которая позволяет обновлять данные примерно так же. С этой командой мы познакомимся на следующем шаге.
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторить материалы урока.
2. Выполнить самостоятельно упражнения из этого шага.
Существует команда MERGE, которая одновременно выполняет вставку и обновление данных в одной таблице на основе данных из другой таблицы.
MERGE — команда для обновления и вставки данных.
Позволяет дополнять и обновлять данные одной таблицы данными другой таблицы. При слиянии таблиц проверяется условие, и если оно истинно, то выполняется UPDATE, а если нет — INSERT. Причем нельзя изменять поля таблицы в секции UPDATE, по которым идет связывание двух таблиц.
Может работать также отдельно только как команда вставки или обновления.
Синтаксис
Здесь
• Таблица — таблица, для которой выполняется вставка-обновление;
• SELECT запрос — запрос, на основе которого обновляются, добавляются данные;
Читать дальше
Конец ознакомительного отрывка
Купить книгу