
- •Лабораторная работа 3 Манипулирование данными в sql Oracle Содержание
- •2.2.1. Синтаксис 4
- •2.3.1. Синтаксис 6
- •3.1.1. Вставка строк в таблицу 7
- •2.1.5.Примеры
- •2.2.5.Примеры
- •2.3.5.Примеры
- •3.Задание для аудиторного выполнения
- •3.1.1.Вставка строк в таблицу
- •3.1.2.Обновление строк в таблицах
- •4.Контрольные вопросы
2.2.5.Примеры
Простые примеры
В следующем примере всем преподавателям на должности assistant устанавливается значение NULL столбца Commission:
UPDATE TEACHER
SET Commission = NULL
WHERE post = 'ассистент';
В следующем примере преподаватель Jones переводится на кафедру 20 с увеличением ставки на 100 (предполагаем, что у нас имеется только один преподаватель Jones):
UPDATE TEACHER
SET DepNo =20, salary = salary + 100
WHERE name = 'jones';
Сложный пример
В следующем примере показывается использование следующих синтаксических конструкций предложения UPDATE:
Обе формы фразы set_clause в одном предложении.
Коррелированный подзапрос.
Фраза where_clause, ограничивающая обновляемые строки.
Использование алиаса таблицы.
Обновление нескольких столбцов (salary, Commission) одновременно.
UPDATE TEACHER a
SET DepNo =
(SELECT DepNo
FROM deptartment
WHERE name = 'DBMS'),
(salary, Commission) =
(SELECT 1.1*AVG(salary), 1.5*AVG(Commission)
FROM TEACHER b
WHERE a.DepNo = b.DepNo)
WHERE DepNo IN
(SELECT DepNo
FROM DEPARTMENT
WHERE FacNo = 1);
Это предложение UPDATE выполняет следующие действия:
Обновляет значения только у тех преподавателей, которые работают на факультете, имеющем FacNo = 1
Устанавливает этим преподавателям значение DepNo, равным DepNo кафедры 'DBMS' (то есть все преподаватели переводятся на эту кафедру)
Устанавливает ставку этим учителям, в 1.1 раз большую средней ставки их предыдущей кафедры.
Устанавливает надбавку этим учителям, в 1.5 раз большую средней надбавки их предыдущей кафедры.
2.3.Удаление строк в таблице
2.3.1.Синтаксис
2.3.2.Назначение
Удаляет указанные строки в таблице.
2.3.3.Предварительные требования
Чтобы иметь возможность удалять строки в таблице, принадлежащей вашей схеме, вы должны иметь привилегию DELETE по отношению к этой таблице.
Для удаления строк в таблицах других схем необходима системная привилегия DELETE ANY TABLE.
2.3.4.Ключевые слова и параметры
schema |
Имя схемы, содержащей таблицу. Если схема опущена, то Oracle предполагает, что таблица находится в вашей схеме. |
table |
Имя таблицы, из которой удаляются строки. |
where_clause
|
Удаляются строки, удовлетворяющие указанному условию. Условие может ссылаться на таблицу, из которой производится удаление и может содержать подзапрос. Если фраза where_clause опущена, Oracle удаляет все строки таблицы. |
t_alias |
Предоставляет имя-синоним для таблицы, которое может использоваться в любом месте предложения DELETE. |
2.3.5.Примеры
В следующем примере удаляются все строки таблицы DEPARTMENT.
DELETE FROM DEPARTMENT;
В следующем примере в таблице TEACHER удаляются строки, имеющие отношение к профессорам с надбавкой менее 100:
DELETE FROM TEACHER
WHERE post = 'professor' AND Commission < 100;