Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Авт_ПМП / Metod_BD.doc
Скачиваний:
31
Добавлен:
05.02.2016
Размер:
574.98 Кб
Скачать

Модифікація даних (оператор update)

Оператор UPDATE змінює значення певних стовпчиків в заданій таблиці. Цей оператор має формат:

UPDATE table_name

SET column_name1=data_value1 [,column_name2=data_value2 ...]

[WHERE предикат]

Параметр table_name визначає ім’я таблиці бази даних, параметри column_name1, column_name2, ... визначають імена стовпчиків, значення яких потрібно замінити новими значеннями - data_value1, data_value2, ... відповідно.

Фраза WHERE предикат необов’язкова. Якщо вона опущена, значення стовпчиків будуть змінені в усіх рядках таблиці. Якщо ж фраза WHERE присутня, то зміни відбудуться лише в тих рядках, які задовольняють умові відбору. Наприклад, оператор

UPDATE Vidomist

SET D=D*1.05

WHERE mounth=2

збільшує зарплату всім співробітникам за 2-й місяць.

Приклад використання підзапиту в операторі UPDATE. Небхідно зарплату Сидорова за 3-й місяць збільшити на 100 гривень. Оператор UPDATE матиме вид:

UPDATE Vidomist

SET D = D+100

WHERE mounth=2 AND kod=(SELECT kod FROM Osoba WHERE PRIZ='Сидоров')

Використання inner join, left join в операторі update

Вище згадувалась таблиця balans, в якій зберігалась сумарні по видам товарів витрати на закупівлю товару за певний період. Якщо нам потрібно дізнатись власне баланс по кожній групі товарів(вартість закупки мінус вартість продажу), нам потрібно застосувати такий оператор UPDATE:

UPDATE balans a INNER JOIN table_b b ON a.kod=b.kod

SET a.suma=a.suma-b.suma

WHERE b.data >={d'2002-01-01'} AND b.data<={d'2002-01-31'}

Детальніше пояснимо роботу вищенаведеного оператора. Конструкція

balans a INNER JOIN table_b b ON a.kod=b.kod

задає умову з’єднання таблиць balans i table_b. Оператор UPDATE для кожного рядка таблиці balans послідовно рядок за рядком проглядає таблицю table_b і для рядків для яких виконується умова

a.kod=b.kod

виконує операцію, яка вказана у фразі SET , тобто заміщує старе значення a.suma новим, а саме (a.suma- b.suma). В нашому випадку в таблиці table_b для першого рядка {1,195} таблиці balans є 2 рядки, в яких поле kod=1, а саме {1,50} і {1,47}. Отже, спочатку UPDATE замінить 195 на 195-47=98, а потім 145 замінить на 145-47=98. В результаті, перший рядок таблиці balans матиме вид {1,98}. Аналогічним чином оператор UPDATE поступає для другого рядка таблиці balans і т.д. Після виконання оператора UPDATE, таблиця balans матиме вид:

kod

suma

1

98

2

115

Зауваження. Не у всіх діалектах мови SQL підтримується використання конструкції INNER JOIN в операторі UPDATE.

Видалення даних з бази(оператор delete)

Оператор DELETE використовують для видалення даних з певної таблиці. Цей оператор має такий формат:

DELETE FROM table_name

[WHERE предикат]

Параметр table_name визначає ім’я таблиці. Фраза WHERE необов’язкова. Якщо вона відсутня, будуть видалені всі рядки з таблиці. Якщо фраза WHERE присутня, будуть видалені тільки ті рядки з таблиці, для яких предикат істинний.

Наведемо приклад застосування оператора DELETE. Необхідно видалити з таблиці Vidomist рядки з найбільшою і найменшою сумою нарахованої зарплати. Оператор DELETE, який вирішує поставлену задачу матиме вид:

DELETE FROM Vidomist

WHERE (D=(Select MAX(D) FROM Vidomist)) OR (D=(Select MIN(D)

FROM Vidomist))

Результуюча таблиця матиме вид:

kod

year

mounth

D

2

2002

1

1309.55

1

2002

2

400

2

2002

2

500

3

2002

2

600

Соседние файлы в папке Авт_ПМП