Что такое представления?

advertisement
Представления
Что такое представления?
S_EMP Table
EMPVU45 View
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
Mai
Sales Representative
34
Andre
Sales Representative
35
14
ID
LAST_NAME
TITLE
15
10
Havel
16
Warehouse Manager
17
Elena
Stock Clerk
41
George
Stock Clerk
41
24
Dancs
18
Warehouse Manager
19
Akira
Stock Clerk
42
Vikram
Stock Clerk
42
25
Schwartz
Stock20
Clerk
21
Chad
Stock Clerk
43
Eddie
Stock Clerk
44
22
Patel
Radha
Stock Clerk
34
23
Dancs
Bela
Stock Clerk
45
24
Schwartz
Sylvie
Stock Clerk
45
Преимущества представления
• Ограничение доступа к базе данных
• Упрощение запросов
• Разные способы показа одних и тех же данных
Создание представлений:
синтаксис
• Представление создается путем включения
подзапроса в команду CREATE VIEW
CREATE [OR REPLAСE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]…)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]
• Подзапрос может содержать сложную команду
SELECT
• Использование в подзапросе предложения ORDER BY
не разрешается
Простые и сложные
представления
Простые
представления
Сложные
представления
Количество таблиц
Одна
Одна или больше
Содержит функции
Нет
Да
Содержит группы
данных
Нет
Да
Операции DML над
представлением
Да
Нет
Создание представления: пример
• Создайте представление EMPVU45, включающее учетный номер,
фамилию и должность каждого служащего отдела номер 45
SQL>
2
3
4
View
CREATE VIEW empvu45
AS SELECT
id, last_name, title
FROM
s_emp
WHERE
dept_id=45;
created
• Получите описание представления с помощью команды
DESCRIBE SQL*Plus
• Произведите выборку данных путем ввода команды SELECT со
ссылкой на это представление
Создание представления: пример
• Создайте представление с псевдонимами столбцов в подзапросе
SQL>
2
3
4
5
View
CREATE VIEW salvu41
AS SELECT
id, first_name FIRST, last_name
LAST, salary MONTHLY_SALARY
FROM s_emp
WHERE dept_id=41;
created
• Выберете столбцы из этого представления по заданному
псевдониму
Изменение представления:
пример
• Измените представление EMPVU45 с помощью команды CREATE
OR REPLAСE. Добавьте псевдоним для каждого столбца
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
• Псевдонимы столбцов в команде CREATE VIEW указываются в
таком же порядке, как столбцы в подзапросе
Создание сложного
представления: пример
Создание сложного представления с
групповыми функциями для выбора
данных таблиц.
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 оставались в пределах домена
представления.
SQL>
2
3
4
5
View
CREATE OR REPLAСE VIEW empvu41
AS SELECT *
FROM s_emp
WHERE dept_id = 41
WITH CHECK OPTION CONSTRAINT empvu41_ck;
created.
• Попытка изменить номер отдела для какой-либо
строки в представлении закончится неудачей, т.к. при
этом нарушится ограничение CHECK OPTION.
Запрет операций DML
• Параметр WITH READ ONLY в определении
представления запрещает операции DML с этим
представлением.
SQL>
2
3
4
5
6
View
CREATE OR REPLAСE VIEW empvu45
(id_number, employee, job)
AS SELECT id, last_name, title
FROM s_emp
WHERE dept_id = 45
WITH READ ONLY;
created.
• При попытке выполнить операцию DML над какой-либо
строкой представления, сервер Oracle выдает
сообщение об ошибке ORA-01732.
Просмотр определения
представления
Имя представления и его определения содержатся в
таблице словаря данных USER_VIEWS.
SQL> SELECT view_name, text
2
FROM user_views;
Удаление представления:
пример
Удаление представления не вызывает потери данных, т.к. в
основном представления лежат реальные таблицы базы
данных.
SQL> DROP VIEW empvu45;
View dropped.
Заключение
• Представление создается на основе данных других
таблиц или других представлений.
• Представление – это окно для просмотра или
изменения данных базовой таблицы.
• Преимущества представления:
- Ограничение доступа к базе данных
- Упрощение запросов
- Независимость данных
- Различные способы показа одних и тех же данных
- Возможность удаления без потери данных, лежащих
в его основе
Заключение
• Представление может быть простым (основанным на
данных одной таблицы) и сложным (основанным на
данных нескольких таблиц или содержащим группы
или функции).
• Представления могут быть предназначены только
для чтения.
• Определение представления содержится в таблице
USER_VIEWS словаря данных
Download