Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен БД.docx
Скачиваний:
7
Добавлен:
20.04.2019
Размер:
240.87 Кб
Скачать

Вставка множества записей

Вставка множества записей осуществляется посредством использования подзапросавнутри оператора INSERT:

INSERT INTO имя_таблицы оператор_SELECT;

 В данном случае оператор SELECT формирует набор данных, который сразу же транслируется в указанную таблицу. В отличие от использования параметра VALUES в операторе INSERT, с помощью подзапроса можно за раз вставить любое количество записей. Данный вариант оператора INSERT используется тогда, когда уже существующие данные или результат вычисления выражений, основанных на уже существующих данных, необходимо добавить в другую таблицу. Пример использования команды приведен ниже:

 -- копирование всех имен дилеров из таблицы

-- DEALERS в таблицу MANAGERS

INSERT INTO MANAGERS(Man_id, Name)

SELECT managers_seq.Nextval, Name FROM Dealers;

Оператор изменения значений полей update

Оператор UPDATE используется для изменения существующих строк таблиц.

 UPDATE имя_таб SET поле1=зн1, [поле2=зн2, …][WHERE усл_фильтр_строк];

 Параметр WHERE используется для отбора тех строк, в которых необходимо произвести изменения, описанные в параметре SET. Если параметр WHERE не будет указан, то изменению подвергнутся все строки указанной таблицы.

Обновление единственной записи

Для обновления единственной записи в таблице в условие фильтрации включают условное выражение с участием оператора сравнения на равенство с константой атрибутов, составляющих первичный или уникальный ключ. Поскольку атрибуты, входящие в состав первичного или уникального ключа, имеют уникальные значения в таблице, их использование гарантирует выполнение оператора UPDATE по отношению к одной единственной строке. Например:

-- изменение значения Procent в одной строке таблицы MANAGERS

UPDATE Managers SET Procent = 5 WHERE Man_id = 1;

Обновление множества записей

Для обновления множества записей в таблице условие фильтрации может включать любые атрибуты таблицы с использованием любых логических операторов. Например:

-- назначение размера комиссионных тем менеджерам,

-- у которых он не был указан

UPDATE Managers SET Procent = 5

WHERE Procent IS NULL;

Обновление с подзапросом

Иногда для составления условия отбора строк, в которых необходимо произвести какие-либо изменения, не хватает логических операторов. Для таких случаев синтаксис оператора UPDATE допускает использование подзапросов в параметре WHERE для формирования набора строк, которые предполагается подвергнуть изменению. Например:

-- понижение на 10% размер комиссионных у тех менеджеров,

-- чей размер комиссионных превышает средний уровень

UPDATE Managers SET Procent = Procent * 0.9

WHERE Procent > (SELECT AVG(Procent) FROM Managers);

Поскольку синтаксис оператора UPDATE не допускает одновременное указание нескольких таблиц после ключевого слова UPDATE, подзапросы в параметре WHERE также используются в тех случаях, когда необходимо составить условие фильтрации на основе данных другой таблицы или таблиц. Например:

-- понижение на 10% размер комиссионных у тех менеджеров,

-- которые не продали ни одного товара за последнюю неделю

UPDATE Managers SET Procent = Procent * 0.9

WHERE Man_id NOT IN

(SELECT DISTINCT Man_id FROM Outgoing

WHERE Out_date >= sysdate - 7);