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

Поновлення бази даних

Мова SQL є повнофункціональною мовою маніпулювання даними, яка може використовуватись не лише для виборок даних з бази, але і для внесення змін у базу даних. Оператори модифікації інформації в базі даних не настільки складні як оператор SELECT. Є три оператори модифікації даних в базі. Це

  • INSERT – використовується для вставки нових даних у таблицю

  • UPDATE - використовується для модифікації вже існуючої в таблиці інформації

  • DELETE - використовується для видалення з таблиці рядку(ів) даних.

Вставка нових даних

Існує дві форми оператора INSERT. Перша використовується для вставки єдиного рядка в таблицю. Ця форма має такий формат:

INSERT INTO table_name [(column_list)]

VALUES (data_value_list)

Тут параметр table_name (Ім’я таблиці) означає або ім’я таблиці або ім’я представлення. Параметр column_list (Список стовпчиків) є списком імен одного або більше стовпчиків розділених комами. Параметр column_list не є обов’язковим. Якщо він відсутній, вважається, що використовується список всіх стовпчиків таблиці, причому імена стовпчиків розташовані в тому ж порядку в якому вони були задані в операторі CREATE TABLE (створення таблиці).

Якщо в операторі INSERT вказується конкретний список імен стовпчиків, то любі пропущені в ньому стовпчики повинні допускати значення NULL.

Параметр data_value_list (список значень) повинен наступним чином відповідати параметру column_list:

  • кількість елементів в обох списках повинна бути однакова;

  • повинна бути пряма відповідність між позиціями одного і того ж елементу в обох списках, тобто перший елемент списку data_value_list відповідає першому елементу списку column_list, другий елемент списку data_value_list відповідає другому елементу списку column_list і т.д.

  • типи даних елементів списку data_value_list повинні бути сумісними з типами даних відповідних стовпчиків з column_list.

Приклад використання конструкції INSERT…VALUES. Оператор:

INSERT INTO Osoba

VALUES(4,’Мельник’)

всталяє новий рядок в таблицю Osoba, в якому стовпчик kod приймає значення 4, а стовпчик priz – Мельник.

Якщо потрібно вставити новий рядок в таблицю з використанням лише деяких стовпчиків, потрібно в круглих дужках перерахувати через кому імена відповідних стовпчиків (параметр column_list). Наприклад, в table_a потрібно додати рядок, в якому kod=4, suma=245, а data невизначена. Оператор INSERT матиме вид:

INSERT INTO table_a (kod,suma)

VALUES(4,245)

Друга форма оператора INSERT дозволяє скопіювати множину рядків однієї таблиці в іншу. Цей оператор має такий формат:

INSERT INTO table_name [(column_list)]

SELECT …

Параметри table_name і column_list мають той же формат і зміст що й при вставці в таблицю одного рядка. Рядки, які вставляються в указану таблицю, є рядками результуючої таблиці, сформованої оператором SELECT. Всі наведені вище обмеження, що стосувались першої форми оператора INSERT, дійсні і в цьому випадку.

Наведемо приклад. Нехай нам потрібно формувати баланс по закупкам товарів за певний період і зберігати в новій таблиці balans. Таблиця balans має два стовпчики – kod - код товару і suma - загальна сума вартості цього товару.

Оператор INSERT, який поповнює таблицю balans сумарними даними з table_a за період з 1.1.2002 по 31.1.2002 року, матиме вид:

INSERT INTO balans(kod,suma)

SELECT kod, SUM(suma)

FROM table_a

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

GROUP BY kod

ORDER BY kod

Результатом виконання цього оператора є таблиця balans:

kod

suma

1

195

2

150

Нижче наведено приклад застосування другої форми оператора INSERT, який поповнює таблицю Vidomist даними з тієї ж таблиці Vidomist. Припустімо, що в 3-му місяці зарплату кожного співробітника збільшили рівно в 1.2 рази по відношенню до зарплати в 2-му місяці. Відповідний оператор INSERT матиме вид:

INSERT INTO Vidomist (kod,year,mounth,D)

SELECT kod, year,3,D*1.2

FROM Vidomist

WHERE mounth=2

Після виконання цього оператора таблиця Vidomist матиме вид:

kod

year

mounth

D

1

2002

1

367.78

2

2002

1

1309.55

3

2002

1

2709.98

1

2002

2

400

2

2002

2

500

3

2002

2

600

1

2002

3

480

2

2002

3

600

3

2002

3

720

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