Представления
-
Upload
clayton-russo -
Category
Documents
-
view
36 -
download
1
description
Transcript of Представления
Представления
Что такое представления?ID LAST_NAME FIRST_NAME TITLE DEPT_ID
1 Velasquer Carmen President 50
2 Ngao LaDoris VP, Operations 41
3 Nadayama Midor VP, Sales 31
4 Qick-To-See Mark VP, Finance 10
5 Ropeburn Audry VP, Administrator 50
6 Urghart Molly Warehouse Manager 41
7 Menchu Robeka Warehouse Manager 42
8 Biri Ben Warehouse Manager 43
9 Catchpole Antoinetts Warehouse Manager 44
10 Havel Marta Warehouse Manager 45
11 Magee Colin Sales Representative 31
12 Giljum Henry Sales Representative 32
13 Segeghi Yanry Sales Representative 33
14 Mai Sales Representative 34
15 Andre Sales Representative 35
16 Elena Stock Clerk 41
17 George Stock Clerk 41
18 Akira Stock Clerk 42
19 Vikram Stock Clerk 42
20 Chad Stock Clerk 43
21 Eddie Stock Clerk 44
22 Patel Radha Stock Clerk 34
23 Dancs Bela Stock Clerk 45
24 Schwartz Sylvie Stock Clerk 45
ID LAST_NAME TITLE
10 Havel Warehouse Manager
24 Dancs Warehouse Manager
25 Schwartz Stock Clerk
S_EMP Table
EMPVU45 View
Преимущества представления
• Ограничение доступа к базе данных• Упрощение запросов• Разные способы показа одних и тех же данных
Создание представлений: синтаксис
• Представление создается путем включения подзапроса в команду CREATE VIEW
• Подзапрос может содержать сложную команду SELECT
• Использование в подзапросе предложения ORDER BY не разрешается
CREATE [OR REPLAСE] [FORCE|NOFORCE] VIEW view [(alias[, alias]…)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]
Простые и сложные представления
Простые представления
Сложные представления
Количество таблиц Одна Одна или больше
Содержит функции Нет Да
Содержит группы данных
Нет Да
Операции DML над представлением
Да Нет
Создание представления: пример
• Создайте представление EMPVU45, включающее учетный номер, фамилию и должность каждого служащего отдела номер 45
• Получите описание представления с помощью команды DESCRIBE SQL*Plus
• Произведите выборку данных путем ввода команды SELECT со ссылкой на это представление
SQL> CREATE VIEW empvu45
2 AS SELECT id, last_name, title
3 FROM s_emp
4 WHERE dept_id=45;
View created
Создание представления: пример
• Создайте представление с псевдонимами столбцов в подзапросе
• Выберете столбцы из этого представления по заданному псевдониму
SQL> CREATE VIEW salvu41
2 AS SELECT id, first_name FIRST, last_name
3 LAST, salary MONTHLY_SALARY
4 FROM s_emp
5 WHERE dept_id=41;
View created
Изменение представления: пример
• Измените представление EMPVU45 с помощью команды CREATE OR REPLAСE. Добавьте псевдоним для каждого столбца
• Псевдонимы столбцов в команде CREATE VIEW указываются в таком же порядке, как столбцы в подзапросе
SQL> CREATE OR REPLAСE VIEW empvu45
(id_number, employee, job)
2 AS SELECT id, last_name, title
3 FROM s_emp
4 WHERE dept_id = 45;
View created
Создание сложного представления: пример
Создание сложного представления с групповыми функциями для выбора
данных таблиц.
SQL> CREATE VIEW dept_sum_vu
(name, minsal, maxsal, avgsal)
AS SELECT d.name, MIN(e.salary),
MAX(e.salary), AVG(e.salary)
FROM s_emp e, s_dept d
WHERE e.dept_id=d.id
GROUP BY d.name;
View created.
Правила выполнения операций DML над представлением
• Операции DML могут быть выполнены только с простым представлением.
• Удаление строк невозможно, если представление содержит следующее:
- условие соединения
- групповые функции
- предложение GROUP BY
- команду DISTINCT
Правила выполнения операций DML над представлением
• Нельзя изменять данные в представлении, если оно содержит:
- одно из вышеуказанных условий.- столбцы, описанные как выражения.- псевдостолбец ROWNUM.• Нельзя добавлять данные в представление, если оно
содержит:- Одно из вышеперечисленных условий- Какие-либо столбцы NOT NULL, не выбранные в
представлении.
Представление WITH CHECK OPTION
• Необходимо следить за тем, чтобы результаты операций DML оставались в пределах домена представления.
• Попытка изменить номер отдела для какой-либо строки в представлении закончится неудачей, т.к. при этом нарушится ограничение CHECK OPTION.
SQL> CREATE OR REPLAСE VIEW empvu41
2 AS SELECT *
3 FROM s_emp
4 WHERE dept_id = 41
5 WITH CHECK OPTION CONSTRAINT empvu41_ck;
View created.
Запрет операций DML
• Параметр WITH READ ONLY в определении представления запрещает операции DML с этим представлением.
• При попытке выполнить операцию DML над какой-либо строкой представления, сервер Oracle выдает сообщение об ошибке ORA-01732.
SQL> CREATE OR REPLAСE VIEW empvu45
2 (id_number, employee, job)
3 AS SELECT id, last_name, title
4 FROM s_emp
5 WHERE dept_id = 45
6 WITH READ ONLY;
View created.
Просмотр определения представления
Имя представления и его определения содержатся в таблице словаря данных USER_VIEWS.
SQL> SELECT view_name, text
2 FROM user_views;
Удаление представления: пример
Удаление представления не вызывает потери данных, т.к. в основном представления лежат реальные таблицы базы данных.
SQL> DROP VIEW empvu45;
View dropped.
Заключение
• Представление создается на основе данных других таблиц или других представлений.
• Представление – это окно для просмотра или изменения данных базовой таблицы.
• Преимущества представления:- Ограничение доступа к базе данных- Упрощение запросов- Независимость данных- Различные способы показа одних и тех же данных- Возможность удаления без потери данных, лежащих
в его основе
Заключение
• Представление может быть простым (основанным на данных одной таблицы) и сложным (основанным на данных нескольких таблиц или содержащим группы или функции).
• Представления могут быть предназначены только для чтения.
• Определение представления содержится в таблице USER_VIEWS словаря данных