sql view

19
Мова DDL та DML Представлення

Upload: halyna-melnyk

Post on 10-Aug-2015

27 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Sql view

Мова DDL та DMLПредставлення

Page 2: Sql view

1. Створення представленняПредставлення - це віртуальна таблиця, створена на основі запиту з базової таблиці.

Представлення, як і реальна (базова) таблиця, містить рядки і стовпці даних, але дані, видимі в ньому, насправді є результатами запиту.

Операції із запитами модифікації DML: INSERT, UPDATE і DELETE (для обновлюваних представлень). В іншому випадку представлення є тільки для читання.

У запитах SELECT, INSERT, DELETE і UPDATE на представлення можна посилатися як на звичайну таблицю. Це дає можливість визначати підмножину даних, необхідних конкретному користувачеві (або групі користувачів) на додачу до обмеження доступу до іншої частини даних. Представлення використовуються з наступних причин:

• Вони дозволяють зробити так, що різні користувачі БД будуть бачити його по-різному;•З їх допомогою можна обмежити доступ до даних, дозволяючи користувачам бачити тільки

деякі з рядків і стовпців таблиці;• Вони спрощують доступ до БД, показуючи кожному користувачеві структуру збережених

даних в найбільш відповідною для нього формі.У SQL представлення створюються запитом, який має наступний формат:

Page 3: Sql view

1. Створення представлення

Page 4: Sql view

1. Створення представленняФізично представлення у БД зберігається у вигляді його визначення, тобто

тексту того запиту CREATE VIEW, який був використаний при створенні представлення . Коли СУБД зустрічає в SQL-запиті посилання на представлення , вона відшукує його визначення, збережене в БД. Потім перетворює користувальницький запит, що посилається на представлення , в еквівалентний запит до вихідних таблиць представлення (заданих в запиті SELECT представлення) і виконує цей запит. Таким чином, СУБД створює ілюзію існування представлення у вигляді окремої таблиці і в той же час зберігає цілісність вихідних даних.

По виду запиту, що використовується поданням, розрізняють такі види представлень:

•Горизонтальні;•Вертикальні;•Змішані;•Згруповані;•З'єднані.

Page 5: Sql view

1. Створення представленняГоризонтальне представлення - це горизонтальна підмножина рядків одиночної

таблиці, що призначене для обмеження доступу до рядків таблиці. Запит в такому представленні вибирає всі стовпці заданої таблиці, але обмежує вибір

рядків зазначенням умови пошуку в реченні WHERE запиту SELECT.

Вертикальне представлення – вертикальна підмножина рядків одиночної таблиці і призначене для обмеження доступу до стовпців таблиці. Запит в такому представленні вибирає з таблиці необхідні стовпці, а обмеження на вибір рядків відсутнє.

Page 6: Sql view

1. Створення представленняЗмішане представлення – це підмножина рядків і стовпців одиночної таблиці. Воно

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

Згруповані представлення основані на запиті, що містить пропозицію GROUP BY і, як наслідок, використовує агрегатні функції. Вони виконують ту ж функцію, що й запити з угрупованням певних стовпців. У них родинні рядки даних об'єднуються в групи, і для кожної групи в таблиці результатів запиту створюється один рядок, що містить підсумкові дані по цій групі. За допомогою згрупованого представлення запит з угрупованням перетворюється на віртуальну таблицю, до якої в подальшому можна звертатися.

Page 7: Sql view

1. Створення представленняЗ’єднане представлення - це підмножина рядків і стовпців з декількох таблиць.

Задаючи у визначенні представлення, наприклад, двох-або багатотабличний запит, можна створити віртуальну таблицю, дані в яку зчитуються відповідно з двох або трьох різних таблиць.

Після створення такого подання до нього можна звертатися за допомогою однотабличного запиту.

Page 8: Sql view

2. Модифікація представленняЯкщо представлення не використовується іншими об'єктами БД, то його можна

знищити:

Якщо потрібно заново створити представлення зі старим ім'ям, то використовується запит RECREATE VIEW. Синтаксис цього запиту такий же, як для запиту CREATE VIEW.

Якщо представлення не існувало перед використанням запиту, то його використання еквівалентно використанню CREATE VIEW.

Якщо представлення вже існує, то запит RECREATE VIEW намагається знищити його і створити повністю новий об'єкт (не буде виконано, якщо представлення використовується іншим об'єктом).

Page 9: Sql view

2. Модифікація представленняПеревагами використання представлень є:•Забезпечення логічної незалежності. Одне з основних завдань, яке дозволяють

вирішувати представлення, - забезпечення логічної незалежності прикладних програм від змін у структурі бази даних. При зміні структури змінюються запити у визначеннях відповідних представлень. При цьому ніяких змін у програми, що працюють з такими представленнями, вносити не потрібно;

•Прикладний погляд на дані. Представлення дають можливість різним користувачам по-різному бачити одні й ті ж дані. Це особливо цінно при роботі різних категорій користувачів з єдиною інтегрованої базою даних. Користувачам надаються тільки ті дані, які цікавлять їх в найбільш зручній для них формі або форматі;

•Захист даних. Представлення надають додатковий рівень захисту даних в таблицях. Від певних користувачів можуть бути приховані деякі дані, невидимі через запропоноване ним подання;

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

Таким чином, представлення надає безліч переваг, проте є й недоліки. Представлення - це віртуальна таблиця, а, отже, при кожному зверненні до представлення відбувається обробка запиту, потім повернення результату. Виконання складних обчислень або наявність множинних зв’язків може призводити до зниження швидкості роботи.

Page 10: Sql view

3. Оновлення представленняПредставлення можна оновлювати, якщо запит, що його визначає відповідає таким

вимогам:•Повинен бути відсутній оператор DISTINCT; тобто повторювані рядки НЕ повинні

виключатися з таблиці результатів запиту;•В пропозиції FROM повинна бути задана тільки одна таблиця, яку можна

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

•Кожне ім'я в списку стовпців, які повертаються має бути посиланням на простий стовпець; тобто в цьому списку не повинні міститися вирази, обчислювані стовпці або агрегатні функції;

•Пропозиція WHERE не повинна містити вкладений запит; тобто в ньому можуть бути присутніми тільки прості умови пошуку;

•У запиті не повинна міститися пропозиція GROUP BY або HAVING. Ці вимоги базуються на тому принципі, що представлення дозволяється оновлювати

в тому випадку, якщо СУБД може для кожного рядка представлення знайти вихідний рядок у вихідній таблиці, а для кожного оновлюваного стовпця представлення - вихідний стовпець у вихідній таблиці. Якщо представлення відповідає цим вимогам, то над ним і, як наслідок, над вихідною таблицею можна виконувати операції додавання, знищення та оновлення.

Page 11: Sql view

3. Оновлення представлення

Page 12: Sql view

3. Оновлення представлення

Це представлення є обновлюваним за такими ознаками:•Є підмножиною однієї таблиці (немає з'єднання таблиць);•У списку повертаються елементів немає обчислюваних виразів і агрегатних

функцій;•Використовується просте умова пошуку (без підзапитів);•Запит SELECT, на якому базується представлення , не містить DISTINCT,

пропозицій GROUP BY і HAVING.Отже, до цього подання можуть бути застосовані запити INSERT, UPDATE і

DELETE.

Page 13: Sql view

3. Оновлення представлення

Page 14: Sql view

3. Оновлення представлення

Page 15: Sql view

3. Оновлення представлення

Page 16: Sql view

3. Оновлення представлення

- порожнє - порожнє

Page 17: Sql view

3. Оновлення представлення

- порожнє

Page 18: Sql view

3. Оновлення представлення

- порожнє

Page 19: Sql view

3. Оновлення представлення

Тільки в цьому випадку операції оновлення виконуватимуться коректно. Очевидний висновок з наведеного аналізу полягає в тому, що єдиним способом забезпечити коректність виконання операцій оновлення через представлення (які допускають операції оновлення) є включення до визначення кожного наявного в БД представлення пропозиції WITH CHECK OPTION.