Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Оператори маніпулювання даними





До операцій маніпулювання даними відносяться три операції: вставки нового запису, видалення запису (записів) та коригування запису (записів), яким відповідають оператори INSERT, DELETE та UPDATA, відповідно.

Всі оператори маніпулювання даними дозволяють змінювати дані тільки однієї таблиці.

Оператор введення даних має наступний синтаксис:

INSERT INTO ім‘я_таблиці [(<список стовпців>)] VALUES (<список значень>)

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

В набір даних також можуть бути введені функції та вирази. Єдиним обмеженням на ці функції та вирази є те, що вони повинні бути визначені на момент введення даних. Наприклад, до бібліотечного формуляра, заданого таблицею Exemplar (INV, ISBN, YES_NO, NUM_READER, DATE_IN, DATE_OUT) маємо внести дані про інвентарний номер екземпляру книжки, бібліотечний шифр, відмітку про наявність на полиці, номер читача, дату видачі та дату повернення книги. Причому для введення поточної дати використаємо функцію Get Date(), яка автоматично зчитує системну дату, а для введення дати повернення функцію DateADD (d. GetDate(),14), яка з поточної дати виділяє день та додає до виділеного значення 14 днів і таким чином формує дату повернення книги. Запишемо команду для книги з інвентарним номером 1872 та відповідними значеннями інших даних:

INSERT INTO Exemplar (INV, ISBN, YES_NO, NUM_READER, DATE_IN, DATE_OUT)

VALUES (1872, ‘5-88782-290-2’, NO, 344, GetDate(),DateADD (d. GetDate(),14))

Оператор введення даних дозволяє ввести одночасно декілька рядків таблиці, якщо їх можна вибрати з іншої таблиці. Для цього слід використати підзапит, заданий оператором SELECT.

Наприклад, можна внести всіх студентів, як читачів бібліотеки, до таблиці READER одним оператором, зробивши вибірку даних про них з таблиці STUDENT:

INSERT INTO READER (NAME_READER, ADRESS, HOOM_PHONE, BIRTH_DAY)

SELECT (NAME_STUDENT, ADRESS, HOOM_PHONE, BIRTH_DAY)

FROM STUDENT

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

DELETE FROM ім‘я_таблиці [WHERE <умови_відбору>]

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

DELETE FROM Продаж_поточний.

Для видалення всіх замовлень від магазину “Фуршет” з таблиці ЗАМОВЛЕННЯ, яку ми розглядали в розділі 6.8, маємо написати вираз:

DELETE FROM ЗАМОВЛЕННЯ WERE Замовник =”Фуршет”

В частині WERE може знаходитись вбудований запит. Наприклад, з бази даних заданої відношенням ЗАМОВНИК (код замовника, назва замовника, адреса, реквізити) та ЗАМОВЛЕННЯ (код замовлення, код замовника, дата замовлення, назва продукції, кількість, ціна, сума) видалити замовників, що замовляли продукцію не пізніше 31.12.2005 р. Текст оператора має наступний вигляд:

DELETE FROM ЗАМОВНИК

WERE код замовника IN (SELECT DISTINCT код замовника

FROM ЗАМОВНИК RIGHT JOIN ЗАМОВЛЕННЯ ON

ЗАМОВНИК. Код замовника = ЗАМОВЛЕННЯ.код замовника

WHERE Замовлення.дата < 31.12.2005)

В наведеному прикладі умова видалення замовника пов‘язана з терміном замовлення, тому для видалення використовується вкладений запит, який дозволяє вибрати замовлення, що надійшли до початку 2006 року і,за рахунок зв‘язку між таблицями, визначити код замовника для вилучення. Оскільки замовлень у одного замовника може бути декілька, тобто, код замовника в результаті виконання підзапиту може повторюватись декілька разів, використовуємо слово DISTINCT, щоб уникнути повторень. Для відображення зв‘язку між таблицями слугують слова RIGHT JOIN. Це вказує на те, що для кожного замовлення слід знайти відповідний запис у таблиці ЗАМОВНИК.

Для уникнення втрат даних на операцію DELETE можуть накладатися деякі обмеження. Взагалі, всі операції маніпулювання даними проводяться у відповідності з правилами збереження цілісності даних, але особливу увагу приділяють операціям вилучення даних та модифікації. В наведеному вище прикладі ми вилучили замовників з таблиці ЗАМОВНИК не зважаючи на те, що відповідні замовлення в таблиці ЗАМОВЛЕННЯ залишились. Для реальної бази даних така операція не припустима, тому що порушує цілісність даних, тобто логічну узгодженість даних. В такому випадку, в залежності від правила збереження цілісності, система запропонує спочатку вилучити дані з дочірньої таблиці, або автоматично вилучить ЗАМОВЛЕННЯ сама. Про засоби підтримки цілісності даних і правила збереження цілісності даних було викладено в розділі 8. Слід пам‘ятати, що не всі операції можуть бути виконані системою, хоча вираз написано правильно.

Операція оновлення використовується тоді коли маємо відкоригувати дані, що зберігаються в таблиці. Операція оновлення має наступний синтаксис:

UPDATE ім‘я_таблиці

SET ім‘я_стовпця = нове_значення

[WHERE умова_відбору ]

Частина WHERE не є обов‘язковою, як і в операторі DELETE. Вона дозволяє вибрати рядки, яких стосується операція модифікування. Якщо умову відбору не задано, то операцію модифікування буде застосовано до всіх рядків таблиці. В операторі UPDATE теж дозволено використання вкладених запитів. Наприклад: В базі даних заданій відношеннями СТУДЕНТ (код_студента, № зал_кн, ПІП, група) та ЗВЕДЕНА ВІДОМІСТЬ (код_екзамену, код_студента, дата, дисципліна, оцінка) замінити оцінку з дисципліни “Моделювання систем” студенту Бойко на “4”.

Оператор оновлення, що відповідає умові задачі, має вигляд:

UPDATE ЗВЕДЕНА ВІДОМІСТЬ

SET Оцінка= “4”

WHERE дисципліна = “Моделювання систем” AND код_студента IN (SELECT код_студента FROM ЗВЕДЕНА ВІДОМІСТЬ JOIN СТУДЕНТ ON

ЗВЕДЕНА ВІДОМІСТЬ. код_студента = СТУДЕНТ.код_студента

WHERE СТУДЕНТ.ПІП = “Бойко”)

Питання для самоперевірки

1. В чому полягає дія оператора Insert?

2. В чому полягає дія оператора Update?

3. В чому полягає дія оператора Delete?

4. Які з операторів маніпулювання даними можуть використовувати підзапити?

5. Який предикат використовують для включення підзапиту в умову вибірки?

6. В якому випадку використовують підзапит у операторі Insert?

 

Лекція 15

Збережувані процедури та тригери в ERWin.

Загальні відомості

Збережувана процедура є фрагментом SQL коду на вибірку або маніпулювання даними, який зберігається разом з базою даних і слугує для реалізації найбільш поширених запитів клієнтів. Розглянемо можливості ERWin в частині побудови збережуваних процедур і особливо їх різновиду - тригерів. Виходячи з синтаксису, можна сказати що збережуваною процедурою називається набір попередньо відкомпільованих команд SQL, який розташовано на сервері бази даних. Збережувана процедура може бути запущена з клієнтського додатку або з іншої процедури.

Тригером називається збережувана процедура виконувана автоматично як реакція на подію. В якості події виступає вилучення, заміна або вставка рядка таблиці бази даних. Тобто, тригер повідомляє СКБД які дії слід виконати для обслуговування команд DELETE, UPDATE, INSERT.

В ERWin розглядають три види тригерів: тригери цілісності посилань, тригери зв‘язку, тригери для сутності (таблиці).







ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.