Уявлення (VIEW) – об’єкт даних, який не містить жодних даних його власника. Це - тип таблиці, чий зміст вибирається з інших таблиць за допомогою виконання запиту. Оскільки значення в цих таблицях змінюється, то автоматично ці значення можуть бути показані уявленнями. Уявлення працюють у запитах і операторах DML так само як і основній таблиці, але не містять ніяких власних даних. Уявлення створюється командою CREATE VIEW з синтаксисом:
CREATE VIEW name [(view_col [, view_col ...])]
AS <select> [WITH CHECK OPTION];
Опція view_col гарантує, що уявлення завжди містить ті ж самі стовпчики,
що і основна таблиця, і ці стовпчики мають ті ж самі, визначенні уявленнями, імена. Імена стовпчиків уявлення відповідають порядку і кількості стовпчиків перерахованих у <select>. Ім’я стовпчиків повинні бути унікальними серед усіх імен стовпчиків в уявленні. Якщо уявлення містить стовпчики, які основані на виразах, тоді потрібен view_col. По замовчуванню, імена стовпчиків беруться з базової таблиці. Визначення view_col може містити лише один чи більше стовпчиків, які засновані на виразі, який комбінує результати двох стовпчиків. Вираз повинен повертати поодиноке значення і не повинен повертати масив чи масив елементів. Якщо уявлення включає вираз view_col, опція обов’язкова. Оператор SELECT не повинен включати речення ORDER BY. WITH CHECK OPTION запобігає операції INSERT чи UPDATE на модифікуємому уявленні, якщо INSERT чи UPDATE порушує умови пошуку визначені в реченні WHERE в <select>. WITH CHECK OPTION не використовується в уявленнях, призначених тільки для читання. Уявлення модифікуємо якщо: воно підмножина поодинокої таблиці чи іншого модифікуємого уявлення; всі стовпчики базової таблиці, які виключенні із визначення уявлення, допускають значення NULL; інструкція SELECT уявлення не містить підзапити, предикат DISTINCT, речення HAVING, агреатні функції, об’єднання таблиць, визначені користувачем функції чи збереженної процедури. Уявлення тільки для читання може бути модифіковане при використанні визначених користувачем довідкових обмежень, тригерів та унікальних індексів. Поля уявлень часто мають імена, які отримані прямо з імен полів основної таблиці. Це зручно. Однак, іноді потрібно постачати ваші стовпчики новими іменами: - коли деякі стовпчики є вивідними, і тому не мають імен; - коли два чи більше стовпчика під час об’єднання мають ті ж імена, що і в їх базовій таблиці. Імена, які можуть стати іменами полів, наводяться у круглих дужках ( ), після імені таблиць. Вони не будуть запитані, якщо співпадають з іменами полів запитуванної таблиці. Тип даних та розмір цих полів буде відрізнятися від запитуваних полів, котрі "передаються" в них. Зазвичай, не вказують нові імена полів, але якщо це зроблено, необхідно робити це для кожного поля в уявленні. Наступний скрипт створює модифіковане уявлення: CREATE VIEW SNOW_LINE (CITY, STATE, SNOW_ALTITUDE) AS SELECT CITY, STATE, ALTITUDE FROM CITIES WHERE ALTITUDE > 5000;
Наступний скрипт для створення уявлення використовують вкладені
запити:
CREATE VIEW RECENT_CITIES
AS SELECT STATE, CITY, POPULATION FROM CITIES WHERE STATE IN (SELECT STATE FROM STATES WHERE STATEHOOD > "1-JAN-1850");
В модифікованому уявленні WITH CHECK OPTION запобігає будь-яким
вставкам чи модифікацій через уявлення, котрі не задовольняють реченню WHERE в інструкціїї CREATE VIEW SELECT:
CREATE VIEW HALF_MILE_CITIES
AS SELECT CITY, STATE, ALTITUDE FROM CITIES WHERE ALTITUDE > 2500 WITH CHECK OPTION; 4.2.2 Модифікація уявлень
Речення WITH CHECK OPTION в попередньому уявленні, запобігло б
наступній вставці:
INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
VALUES ("Chicago", "Illinois", 250);
З іншого боку, наступний UPDATE був би вирішений:
INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
VALUES ("Truckee", "California", 2736);
Речення WITH CHECK OPTION не допускає модифікацій через уявлення,
котрі змінюють значення рядка, так що уявлення не зможе відшукати його:
UPDATE HALF_MILE_CITIES SET ALTITUDE = 2000 WHERE STATE = "NY";
Також можна об’єднати уявлення з іншими таблицями, базовими
таблицями чи уявленнями. Наступна інструкція створює уявлення, котре об’єднує дві таблиці і тому використовується тільки для читання:
CREATE VIEW PHONE_LIST
AS SELECT EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCATION, PHONE_NO FROM EMPLOYEE, DEPARTMENT WHERE EMPLOYEE.DEPT_NO = DEPARTMENT.DEPT_NO;
4.2.3 Видалення уявлень
Інструкція DROP VIEW дозволяє розробнику уявлення видалити певні уявлення із бази даних, якщо уявлення не використовується в інших уявленнях, збереженних процедурах чи визначенні CHECK обмеження. Уявлення може бути видалено його розробником чи користувачем SYSDBA. Синтаксис:
DROP VIEW name;
де name – ім’я існуючого уявлення.
4.3 ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ
1. Створити уявлення для таблиць, створених у лабораторній роботі №1, згідно варіанту. 2. Створити уявлення для двох таблиць, створених у лабораторній роботі №1. 3. Модифікувати уявлення п 1. 4. Перевірити виконання модифікацій п. 3. 5. Згрупувати, об’єднати уявлення. 6. Створити уявлення_тільки_для читання, перевірити дію обмеження “тільки для читання”. 7. Видалити уявлення, за вказівкою викладача. 4.4 МЕТОДИКА ВИКОНАННЯ
Після підключення до таблиці, натискаємо клавішу Инструменты на
панелі інструментів та вибираємо Query builder. З’являється вікно для створення найпростіших запитів, малювання зв’язків між таблицями та уявленнями.
У правій частині SQL builder знаходиться перелік таблиць та створених
уявлень. Зліва знаходиться вікно редагування, з якого перетягуємо необхідні таблиці, виділяємо у віконечках лівою кнопкою миші потрібні стовпчики, які потрібно вивести у запиті, потім малюємо зв’язки перетягуванням. При цьому автоматично створюється відповідна вибірка та скрипт, який можна прочитати у закладці EDIT. Для створення уявлення натиснемо клавішу create view from select. У заготовці уявлення, що з’явилось виправимо ім’я на необхідне, і зробимо компіляцію. Для того щоб подивитися результат переходимо на закладку дані. Якщо уявлення модифіковане, то саме тут (в закладці даних) можна добавляти чи видаляти дані. Якщо ж перейти до основної таблиці, то можна побачити що тут відбулись ті ж самі зміни, що і з уявленням. 4.5 ЗМІСТ ЗВІТУ Розділ “Результати роботи” повинен містити скрипти і результати створення і модифікації уявлень.
4.6 КОНТРОЛЬНІ ПИТАННЯ
1. Створіть уявлення, яке показує всіх замовників з самою високою оцінкою. 2. Створіть уявлення, котре показує номер продавця в кожному місті. 3. Створіть уявлення, котре показує усередненний та загальний порядки для кожного продавця після його імені. Пропонується, що всі імена - унікальні. 4. Створіть уявлення, котре показує кожного продавця з багаточисельними замовниками. 5. Чи можна видалити рядок даних із уявлення, створенного на основі даних декількох таблиць?
Функція CONCAT …………………………………………………………………… 15 ст. Арифметичні дії ……………………………………………………………………. 16 ст. Значення NULL …………………………………………………………………….. 17 ст. Оператор LIKE ……………………………………………………………………… 19 ст