КОМАНДЫ ЯЗЫКА МАНИПУЛИРОВАНИЯ ДАННЫМИ
Команда INSERT
Команда DELETE
Команда UPDATE
Команда SELECT
Раздел FROM
Раздел WHERE
Раздел GROUP BY
Раздел HAVING
Раздел ORDER BY
Строки и выражения
Объединение множеств
Соединение таблиц
Подзапросы
Использование псевдостолбца ROWNUM
Иерархический запрос
Частичная сортировка
Команда INSERT
Добавляет строки в таблицу или основную таблицу представления. При выдаче утверждения INSERT включается любой INSERT-триггер, определенный на таблице.
Условия:
Для того, чтобы пользователь мог вставлять строки в таблицу, эта таблица должна быть в его схеме, или он должен иметь привилегию INSERT по этой таблице. Для того, чтобы пользователь мог вставлять строки в базовую таблицу представления, владелец схемы, содержащей представлениер, должен иметь привилегию INSERT по этой базовой таблице. Кроме того, если представление находится не в схеме пользователя, то ему должна быть назначена привилегия INSERT по этому представлению. Системная привилегия INSERT ANY TABLE также позволяет вам вставлять строки в любую таблицу или базовую таблицу любого представления.
Синтаксис:
Ключевые слова и параметры:
schema — идентификатор полномочий, обычно совпадающий с именем некоторого пользователя
table view — имя таблицы, в которую должны быть вставлены строки; если указано представление, то строки вставляются в основную таблицу представления
subquery_1 — подзапрос, который сервер обрабатывает тем же самым способом как представление
column — столбец таблицы или представления, в который для каждой вставленной строки вводится значение из фразы VALUES или подзапроса; если один из столбцов таблицы опускается из этого списка, значением столбца для вставленной строки является значение по умолчанию столбца, определенное при создании таблицы. Если полностью опускается список столбца, предложение VALUES или запрос должен определить значения для всех столбцов в таблице
VALUES — определяет строку значений, которые будут вставлены в таблицу или представление; значение должно быть определено в предложении VALUES для каждого столбца в списке столбцов
subquery_2 — подзапрос, который возвращает строки, вставляемые в таблицу; выборочный список этого подзапроса должен иметь такое же количество столбцов, как в списке столбцов утверждения INSERT
Утверждение INSERT с фразой VALUES добавляет одиночную строку к таблице. Эта строка содержит значения, определенные фразой VALUES. Утверждение INSERT с подзапросом вместо фразы VALUES добавляет к таблице все строки, возвращенные подзапросом. Сервер обрабатывает подзапрос и вставляет каждую возвращенную строку в таблицу. Если подзапрос не выбирает никакие строки, сервер не вставляет никакие строки в таблицу.
Подзапрос может обратиться к любой таблице или представлению, включая целевую таблицу утверждения INSERT. Сервер назначает значения полям в новых строках, основанных на внутренней позиции столбцов в таблице и порядке значений фразы VALUES или в списке выбора запроса. Если какие-либо столбцы пропущены в списке столбцов, сервер назначает им значения по умолчанию, определенные при создании таблицы. Если любой из этих столбцов имеет NOT NULL ограничение, то сервер возвращает ошибку, указывающую, что ограничение было нарушено и отменяет утверждение INSERT.
Пример 1. Добавление в таблицу student одной новой записи, заполнение полей в порядке расположения их в таблице, т.е. kod_stud, kod_s, fam, im, ot:
INSERT INTO student VALUES (150, 3, 'Иванов', 'Иван', 'Иванович');
Пример 2. Добавление в таблицу student одной новой записи, заполнение полей, перечисленных после имени таблицы,т.е. fam, im, ot, ball:
INSERT INTO student (fam, im, ot, ball) VALUES ('Иванов', 'Иван', 'Иванович',80);
Пример 3. Команду INSERT можно применить для того, чтобы извлечь значения из одной таблицы и разместить их в другой, воспользовавшись для этого запросом.
Для этого достаточно заменить предложение VALUES на соответствующий запрос.
В данном примере выполняется копирование данных студентов, балл которых превышает значение 90, в таблицу best_stud:
INSERT INTO best_stud SELECT kod_stud, fam, im, ot, ball FROM student WHERE ball > 90;
Пример 4. Если нужно вставить NULL-значение, необходимо указать его как обычное значение:
INSERT INTO student VALUES (150, 3, 'Иванов', 'Иван', 'Иванович',NULL,80);
В начало