
- •Контроль цілісності даних з використанням тригерів
- •Під транзакцією розуміється неподільна з погляду дії на бд послідовність операторів маніпулювання даними (читання, видалення, вставки, модифікації) така, що можливі два підсумки:
- •2.. Засоби обробки транзакцій
- •Представлення
- •Створення, видалення і оновлення представлень
- •Властивості модифікованих представлень
- •Види привілей.
Створення, видалення і оновлення представлень
Представлення створюється командою CREATE VIEW, після якої указується його ім'я а далі слідує запит, що формує тіло представлення. Наприклад, для створення представлення OTLSTUD, яке містить інформацію про студентів, одержуючих стипендію у розмірі 525. можна скористатися наступною командою:
CREATE VIEW OTLSTUD AS SELECT *
FROM STUDENTS WHERE STIP=525;
Тепер в БД існує представлення з ім'ям OTLSTUD, яке можна використати в командах так само, як і будь-яку іншу таблицю: вона може запитати, модифікована, в неї можуть бути вставлені записи, вона може бути видалена з БД або сполучена з іншими таблицями і представленнями. При виконанні запиту
Очевидно, що до представлення можна зробити запит, що містить предикат, що, відповідно, приведе до висновку тільки задовольняючих йому рядків.
Перевага використовування уявлень в порівнянні із запитами до основної таблиці, як вже було сказано, в тому, що представлення буде модифіковане автоматично всякий раз. коли таблиця, що лежить в його основі, змінюється. Зміст представлення не фіксований, і обновляється кожного разу, коли на нього посилаються в команді. Представлення значно розширюють можливості управління даними. Зокрема, це прекрасний спосіб дати доступ до інформації в таблиці, приховавши частину даних.
Представлення може тепер змінюватися командами модифікації DML. але модифікація не буде впливати на саме представлення. Фактично команди будуть перенаправлені до базової таблиці.
В розглянутих прикладах поля уявлень мають свої імена, отримані безпосередньо з імен полів основної таблиці. Проте іноді виникає необхідність назвати стовпці новими іменами. Це. наприклад, може потрібно у випадку, якщо стовпці є виводяться, і тому не мають імен, або якщо два або більш стовпців в об'єднанні мають ті ж імена, що в їхній базовій таблиці.
Імена, які необхідно привласнити полям, записуються в круглих дужках після імені таблиць. Вони можуть не указуватися, якщо співпадають з іменами полів запрошуваної таблиці.
Коли робиться запит до представлення, насправді системою здійснюється звернення до базових таблиць.
В даному випадку СУБД чудово справляється з своєю задачею. Проте іноді виникають ситуації, коли з'являються проблеми з представленням в результаті комбінації з двох допустимих предикатів, які не будуть працювати.
В SQL існує поняття групових уявлень - тобто таких, які містять пропозицію GROUP BY або які засновані на інших групових представленнях. Групові представлення є чудовим способом обробляти складну інформацію безперервне. Попередній приклад представлення якраз відноситься до числа групових.
Представлення можуть бути засновані відразу на декількох базових таблицях. Прикладом цьому може служити створення представлення, яке показувало б оцінки студента по учбовому предмету, причому містило б не коди, а повні назви:
Як було сказано вище, припускає об'єднувати представлення з іншими базовими таблицями або представленнями.
Представлення можуть також використати підзапити, у тому числі співвіднесені. Наприклад, за допомогою наступного представлення можна побачити всі оцінки по дисципліні із значеннями вище середній по цій же дисципліні:
CREATE VIEW AVGOC
AS SELECT *
FROM USP FIRST
WHERE OCENKA > (SELECT AVG (OCENKA)
FROM USP SECOND
WHERE SECOND.PNUM = FIRST.PNUM);
Їх цього видно, наскільки представлення SQL спрощують роботу з даними, надаючи можливість користувачу обійтися без складних запитів.
На жаль, достатньо часте представлення є об'єктами, доступними тільки для читання. Це означає, що інформацію з них можна запрошувати, але вони не можуть піддаватися діям команд модифікації. Крім того, існують також деякі команди, які не допустимі у визначеннях уявленні: представлення повинне ґрунтуватися на одиночному запиті, тому об'єднання UNION не дозволяється. Крім цього, у визначенні представлення не використовується впорядкування ORDER BY, т.к., по аналогії з базовою таблицею, в уявленні записи є неврегульованими.
Синтаксис видалення представлення з БД подібний видаленню базових таблиць:
DROP VIEW <VIEW NAME>
Слід мати на увазі, що в цьому випадку немає необхідності видалення всіх даних з представлення, тому що реальні дані в ньому не містяться. Проте при цьому для видалення представлення користувач повинен бути його власником.
Як вже було відзначено, не всі представлення здібні до модифікації. Взагалі кажучи, команди модифікації мови DML -ІNSERT. UPDATE і DELETE - кінцевий же можуть застосовуватися для уявлень.