ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.04.2021
Просмотров: 1535
Скачиваний: 4
5.
Пр едста влен и я
(VIEW)
5.1.
П редставл ения
–
им енованны е
з апросы
Д о
сих
п ор
реч ь
шла
о
та блица х
,
обыч но
на з ыв а емых
ба з ов ыми
та блица ми
.
Э то
–
та блицы
,
которые
сод ержа т
д а нные
.
О д на ко
имеется
и
д ругой
в ид
та бл иц
,
на з ыв а емый
VIEW
или
ПРЕДСТАВЛЕНИЯ
.
Та блицы–
п ред ста в ления
не
сод ержа т
ника ких
собств енных
д а нных
.
Фа ктич ески
пр едст а в ление
–
эт о
им енов а нна я
т а бли ца
,
со д ер ж и м о е
ко т о р о й
являет ся
р езульт а т о м
за пр о са
,
за д а нно го
пр и
о пи са ни и
пр ед ст а в лени я
.
Прич ем
д а нный
з а п рос
в ып олняется
в сякий
раз
,
когд а
та блица
-
п ред ста в ление
ста нов ится
объектом
кома нд ы
SQL.
Выв од
з а п роса
п ри
э том
в
ка жд ый
момент
ста нов ится
сод ержа нием
п ред ста в ления
.
Пред ста в ления
п оз в оляют
:
•
огранич ив а ть
ч исло
столбцов
,
из
которых
п ользов а тель
в ыбирает
или
в
которые
в в од ит
д а нные
;
•
огранич ив а ть
ч исло
строк
,
из
которых
п ользов а тель
в ыбира ет
или
в
которые
в в од ит
д а нные
;
•
в ыв од ить
д оп олнительные
столбцы
,
п реобраз ов а нные
из
д ругих
столбцов
ба з ов ой
та блицы
;
•
в ыв од ить
груп п ы
стр ок
та блицы
.
Б ла год а р я
э тому
п р ед ста в ления
д а ют
в оз можность
гибкой
на стройки
в ыв од имой
из
та блиц
информа ции
в
соотв етств ии
с
требов а ниями
конкретных
п ользов а телей
,
п оз в оляют
обесп еч ив а ть
з а щ иту
информа ции
на
уров не
строк
и
столбцов
,
уп рощ а ют
формиров а ние
сложных
отч етов
и
в ыход ных
форм
.
Пред ста в ление
оп ред еляется
с
п омощ ью
кома нд ы
CREATE
VIEW
(
СОЗДАТЬ
ПРЕДСТАВЛЕНИЕ
).
Н а п ример
:
CREATE
VIEW
MOSC
_
STUD
AS
SELECT
*
FROM
STUDENT
WHERE
CITY
=
‘
М о ск
ва
’
;
112
Д а нные
из
ба з ов ой
та блицы
,
п ред ъяв ляемые
п ользов а телю
в
п ред ста в лении
,
з а в исят
от
услов ия
(
п ред ика та
),
оп иса нного
в
SELECT-
з а п росе
п ри
оп ред елении
п р ед ста в ления
.
В
соз д а нную
в
результа те
п р ив ед енного
в ыше
з а п роса
та блицу
-
п ред ста в ление
MOSC
_
STUD
п ер ед а ются
д а нные
из
ба з ов ой
та блицы
STUDENT
,
но
не
в се
,
а
только
з а п иси
о
студ ента х
,
д ля
которых
з на ч ение
п оля
CITY
ра в но
‘
М о ск
ва
’
.
К
та блице
MOSC
_
STUD
можно
теп ерь
обращ а ться
с
п омощ ью
з а п росов
та к
же
,
ка к
и
к
л юбой
д ругой
та блице
ба з ы
д а нных
.
Н а п ример
,
з а п рос
д ля
п росмотра
п ред ста в ления
MOSC
_
STUD
имеет
в ид
:
SELECT
*
FROM
MOSC
_
STUD
;
5.2.
П редставл ения
т абл иц
Ра з лич а ют
п ред ста в ления
та блиц
и
п р ед ста в ления
столбцов
.
В
п ростейшем
п ред ста в лении
та блиц
в ыбираются
в се
строки
и
столбцы
ба з ов ой
та блицы
.
CREATE
VIEW
NEW
_
STUD
_
TAB
AS
SELECT
*
FROM
STUDENT
;
Та кое
п ред ста в ление
,
п о
сути
,
э кв ив а лентно
п рименению
синонима
,
но
яв ляется
менее
э ффектив ным
,
п оэ тому
п рименяется
ред ко
.
5.3.
П редставл ения
стол бц ов
В
п ростейшем
в ид е
п ред ста в ление
столбцов
в ыбирает
в се
строки
и
столбцы
,
п од обно
п ред ста в лению
та бл иц
;
кроме
того
,
в
ка ч еств е
имен
столбцов
п рименяются
п сев д онимы
.
Н а п ример
:
CREATE
VIEW
NEW
_
STUDENT
(NEW
_
STUDENT
_
ID
,
NEW
_
SURNAME
,
NEW
_
NAME
,
NEW
_
STIPEND
,
NEW
_
KURS
,
NEW
_
CITY
,
NEW
_
BIRTHDAY
,
NEW
_
UNIV
_
ID
)
AS
SELECT
STUDENT
_
ID
,
SURNAME
,
NAME
,
STIPEND
,
113
KURS
,
CITY
,
BIRTHDAY
,
UNIV
_
ID
FROM
STUDENT
;
Пред ста в ление
столбцов
яв ляется
п ростым
сп особом
орга низ а ции
общ ей
та блицы
д ля
груп п ы
п ользов а телей
или
п рикла д ных
з а д а ч
,
которые
исп ользуют
собств енные
имена
п олей
и
та блицы
.
5.4.
М одиф иц ирование
представл ений
Д а нные
,
п ред ъяв ляемые
п ользов а телю
ч ерез
п ред ста в ление
,
могут
из меняться
с
п омощ ью
кома нд
мод ифика ции
DML,
но
п ри
этом
фа ктич еска я
мод ифика ция
д а нных
буд ет
осущ еств ляться
не
в
са мой
в иртуа льной
та бл ице
-
п ред ста в лении
,
а
буд ет
п ерена п рав лена
к
соотв етств ующ ей
ба з ов ой
та блице
.
Н а п ример
,
з а п рос
на
обнов ление
п ред ста в ления
NEW
_
STUDENT
UPDATE
NEW
_
STUDENT
SET
CITY
=
‘
М о ск
ва
’
WHERE
STUDENT
_
ID
=
1004
;
э кв ив а лентен
в ып олнению
кома нд ы
UPDATE
на д
ба з ов ой
та блицей
STUDENT
.
След ует
,
од на ко
,
обратить
в нима ние
на
то
,
ч то
в
общ ем
случ а е
,
из
-
з а
того
,
ч то
обыч но
в
п ред ста в лении
отобража ются
д а нные
из
ба з ов ой
та блицы
в
пр ео бр а зо ва нно м
или
усеченно м
в ид е
,
п рименение
кома нд
мод ифика ции
к
та блица м
-
п ред ста в лениям
имеет
некоторые
особенности
,
рассма трив а емые
ниже
.
5.5.
М аскирую щ ие
представл ения
5.5.1.
П редставл ения
,
м аскирую щ ие
ст ол бц ы
Д а нный
в ид
п ред ста в лений
огранич ив а ет
ч исло
столбцов
ба з ов ой
та блицы
,
к
которым
в оз можен
д оступ
.
Н а п ример
,
п ред ста в ление
CREATE
VIEW
STUD
AS
SELECT
STUDENT
_
ID
,
SURNAME
,
CITY
FROM
STUDENT
;
д а ет
д оступ
п ользов а телю
к
п олям
STUDENT
_
ID
,
SURNAME
,
CITY
ба з ов ой
114
та блицы
STUDENT
,
п олностью
скрыв а я
от
него
ка к
сод ержимое
,
та к
и
са м
фа кт
на лич ия
в
ба з ов ой
та блице
п олей
NAME
,
STIPEND
,
KURS
,
BIRTHDAY
и
UNIV
_
ID
.
5.5.2.
О перац ии
м одиф икац ии
в
предст авл ения х
,
м аскирую щ их
ст ол бц ы
Пред ста в ления
,
ка к
уже
отмеч а лось
в ыше
,
могут
из меняться
с
п омощ ью
кома нд
мод ифика ции
DML,
но
п ри
этом
мод ифика ция
д а нных
буд ет
осущ еств ляться
не
в
са мой
та блице
-
п ред ста в лении
,
а
в
соотв етств ующ ей
ба з ов ой
та блице
.
В
св яз и
с
э тим
,
с
п ред ста в лениями
,
ма скирующ ими
столбцы
,
функции
в ста в ки
и
уд а ления
работа ют
несколько
ина ч е
,
ч ем
с
обыч ными
та бл ица ми
.
О п ератор
INSERT
,
п римененный
к
п ред ста в лению
,
фа ктич ески
осущ еств ляет
в ста в ку
строки
в
соотв етств ующ ую
ба з ов ую
та блицу
,
п р ич ем
в о
в се
столбцы
э той
та блицы
неза в исимо
от
того
,
в ид ны
они
п ользов а телю
ч ерез
п ред ста в ление
или
скрыты
от
него
.
В
св яз и
с
э тим
,
в
столбца х
,
не
в ключ енных
в
п ред ста в ление
,
уста на в лив а ется
NULL
-
значение
или
з на ч ение
п о
умолч а нию
.
Е сли
не
в ключ енный
в
п ред ста в ление
столбец
имеет
оп цию
NOT
NULL
,
то
генерируется
сообщ ение
об
ошибке
.
Л юбое
п рименение
оп ер а тора
DELETE
уд а ляет
строки
ба з ов ой
та блицы
неза в исимо
от
их
з на ч ений
.
5.5.3.
П редставл ения
,
м аскирую щ ие
строки
Пред ста в ления
могут
та кже
огр а нич ив а ть
д оступ
к
строка м
.
О хв а тыв а емые
п ред ста в лением
строки
ба з ов ой
та блицы
з а д а ются
услов ием
(
п ред ика том
)
в
конструкции
WHERE
п р и
оп иса нии
п ред ста в ления
.
Д оступ
ч ерез
п ред ста в ление
в оз можен
только
к
строка м
,
уд ов летв оряющ им
услов ию
.
Н а п ример
,
п ред ста в ление
CREATE
VIEW
MOSC
_
STUD
AS
SELECT
*
FROM
STUDENT
WHERE
CITY
=
‘
М о ск
ва
’
;
115
п ока з ыв а ет
п ользов а тел ю
только
те
строки
та блицы
STUDENT
,
д ля
которых
з на ч ение
п оля
CITY
рав но
‘
М о сква
’
.
5.5.4.
О перац ии
м одиф икац ии
в
предст авл ения х
,
м аскирую щ их
строки
К а жд а я
в ключ енна я
в
п ред ста в ление
строка
д оступ на
д ля
в ыв од а
,
обнов ления
и
уд а ления
.
Л юба я
д оп устима я
д ля
основ ной
та блицы
строка
в ста в ляется
в
ба з ов ую
та блицу
неза в исимо
от
ее
в ключ ения
в
п ред ста в ление
.
При
этом
может
в оз никнуть
п роблема
,
состоящ а я
в
том
,
ч то
з на ч ения
,
в в ед енные
п ользов а телем
в
ба з ов ую
та бл ицу
ч ерез
п р ед ста в ление
,
з на ч ений
,
буд ут
отсутств ов а ть
в
п ред ста в лении
,
оста в а ясь
п ри
этом
в
ба з ов ой
та блице
.
Ра ссмотрим
та кой
случ а й
:
CREATE
VIEW
HIGH
_
RATING
AS
SELECT
*
FROM
UNIVERSITY
WHERE
RATING
=
300
;
Э то
п р ед ста в ление
яв ляется
обнов ляемым
.
О но
п росто
огранич ив а ет
д оступ
п ользов а теля
к
оп ред еленным
столбца м
и
строка м
в
та блице
UNIVERSITY
.
Пред п оложим
,
необход имо
в ста в ить
с
п омощ ью
кома нд ы
INSERT
след ующ ую
строку
:
INSERT
INTO
HIGH
_
RATING
VALUES
(
180
,
‘
Н о вы й
ун и вер си тет
’
,
200
,
‘
Во р о н еж
’
);
К ома нд а
INSERT
д оп устима
в
э том
п ред ста в лении
.
С
п омощ ью
п ред ста в ления
HIGH
_
RATING
строка
буд ет
в ста в лена
в
ба з ов ую
та блицу
UNIVERSITY
.
О д на ко
,
п осле
п ояв ления
э той
строки
в
ба з ов ой
та блице
,
и з
са м о го
пр ед ст а в лени я
о на
и счезнет
,
п оскольку
з на ч ение
п оля
RATING
не
рав но
300,
и
,
след ов а тельно
,
э та
строка
не
уд ов летв оряет
услов ию
п ред ложения
WHERE
д ля
отбора
строк
в
п ред ста в ление
.
Д ля
п ользов а теля
та кое
исч ез нов ение
только
ч то
в в ед енной
строки
яв ляется
неожид а нным
.
Д ейств ительно
,
не
п онятно
,
п оч ему
п осле
в в од а
строки
в
та блицу
ее
нельзя
ув ид еть
и
,
на п ример
,
тут
же
уд а лить
.
Тем
более
,
ч то
п ользов а тель
в ообщ е
может
не
з на ть
–
р а бота ет
он
в
д а нный
момент
с
ба з ов ой
та блицей
или
с
та блицей
-
п ред ста в лением
.
А на логич на я
ситуа ция
в оз никнет
,
если
в
ка кой
-
либо
сущ еств ующ ей