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

Модифікація даних (оператор 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 >=#1/1/2002# AND b.data<=#31/1/2002#

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

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

Визначення даних.

Мова DDL (Data Definition Language), як частина мови SQL, дозволяє створювати і видаляти різні об’єкти бази даних – наприклад, таблиці, представлення, індекси тощо. Основними операторами мови SQL, призначеними для визначення даних, є:

CREATE SCHEMA

DROP SCHEMA

CREATE DOMAIN

ALTER DOMAIN

DROP DOMAIN

CREATE TABLE

ALTER TABLE

DROP TABLE

CREATE VIEW

DROP VIEW

Створення баз даних.

В різних СУБД процедура створення баз даних різна. В клієнт-серверних системах право створення баз даних як правило закріплене за адміністратором бази даних (АБД). В персональних системах база даних створюється в процесі інсталяції і настройки параметрів самої СУБД. Стандарт ISO не визначає процедури створенння екземпляру бази даних, тому в кожному з діалектів мови SQL використовується свій власний підхід. Наприклад, в СУБД ORACLE створення екземпляру бази є частиною процесу інсталяції системи.

У відповідності із стандартом ISO, таблиці та інші об’єкти бази даних існують в деякому середовищі(environment). Крім того, кожне середовище містить в собі один або більше каталогів (catalog), а кожний каталог – набір схем (shema). Схема – це поіменована сукупність взаємопов’язаних об’єктів бази даних ( всі об’єкти бази даних повинні бути описані в тій чи іншій схемі). Об’єктами схеми можуть бути таблиці, представленння, домени і набори символів. Стандарт залишає право вибору конкретного механізму створення і знищення каталогів за розробником СУБД, але регламентує механізм створення і знищення схем. Оператор визначенння схеми має такий формат:

CREATE SHEMA [name | AUTHORIZATION creator-identifier]

Таким чином, якщо творцем схеми під іменем sql_test буде користувач Ivanov, то даний оператор виглядатиме таким чином:

CREATE SHEMA sql_test AUTHORIZATION Ivanov

Схема видаляється з допомогою оператора DROP SHEMA, який має такий формат:

DROP SHEMA name [RESTRICT | CASCADE]

Якщо вказано ключове слово RESTRICT (саме воно діє за змовчуванням), схема повинна бути пустою(не містити жодного об’єкту), інакше виконання цієї операції буде відмінено. Якщо вказано ключове слово CASCADE, автоматично будукть видалені всі повязані з цією схемою об’єкти. Якщо ж в ході виконання цього оператора якась операція закінчилась невдало, буде відмінено виконання всього оператора DROP SHEMA.

На сьогоднішній день оператори CREATE SHEMA і DROP SHEMA реалізовані в небагатьох СУБД.

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