Материал: SQL в вопросах и задачах

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
background image

5. 

Пр едста влен и я

(VIEW)

5.1. 

П редставл ения

–

им енованны е

з апросы

Д о

сих

п ор

реч ь

шла

о

та блица х

, 

обыч но

на з ыв а емых

ба з ов ыми

та блица ми

. 

Э то

–

та блицы

, 

которые

сод ержа т

д а нные

. 

О д на ко

имеется

и

д ругой

в ид

та бл иц

, 

на з ыв а емый

VIEW

или

ПРЕДСТАВЛЕНИЯ

. 

Та блицы–

п ред ста в ления

не

сод ержа т

ника ких

собств енных

д а нных

. 

Фа ктич ески

пр едст а в ление

–

эт о

им енов а нна я

т а бли ца

, 

со д ер ж и м о е

ко т о р о й

являет ся

р езульт а т о м

за пр о са

, 

за д а нно го

пр и

о пи са ни и

пр ед ст а в лени я

. 

Прич ем

д а нный

з а п рос

в ып олняется

в сякий

раз

, 

когд а

та блица

-

п ред ста в ление

ста нов ится

объектом

кома нд ы

  SQL. 

Выв од

з а п роса

п ри

э том

в

ка жд ый

момент

ста нов ится

сод ержа нием

п ред ста в ления

. 

Пред ста в ления

п оз в оляют

: 

•

огранич ив а ть

ч исло

столбцов

, 

из

которых

п ользов а тель

в ыбирает

или

в

которые

в в од ит

д а нные

; 

•

огранич ив а ть

ч исло

строк

, 

из

которых

п ользов а тель

в ыбира ет

или

в

которые

в в од ит

д а нные

;  

•

в ыв од ить

д оп олнительные

столбцы

, 

п реобраз ов а нные

из

д ругих

столбцов

ба з ов ой

та блицы

; 

•

в ыв од ить

груп п ы

стр ок

та блицы

. 

Б ла год а р я

э тому

п р ед ста в ления

д а ют

в оз можность

гибкой

на стройки

в ыв од имой

из

та блиц

информа ции

в

соотв етств ии

с

требов а ниями

конкретных

п ользов а телей

, 

п оз в оляют

обесп еч ив а ть

з а щ иту

информа ции

на

уров не

строк

и

столбцов

, 

уп рощ а ют

формиров а ние

сложных

отч етов

и

в ыход ных

форм

. 

Пред ста в ление

оп ред еляется

с

п омощ ью

кома нд ы

CREATE

VIEW

(

СОЗДАТЬ

ПРЕДСТАВЛЕНИЕ

). 

Н а п ример

: 

CREATE

VIEW

   

MOSC

_

STUD 

AS

  

SELECT

 * 

FROM

STUDENT

WHERE

CITY

 = 

‘

М о ск

ва

’

; 

background image

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

,  

background image

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

ба з ов ой

background image

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

 = 

‘

М о ск

ва

’

; 

background image

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

д ля

отбора

строк

в

п ред ста в ление

. 

Д ля

п ользов а теля

та кое

исч ез нов ение

только

ч то

в в ед енной

строки

яв ляется

неожид а нным

. 

Д ейств ительно

, 

не

п онятно

, 

п оч ему

п осле

в в од а

строки

в

та блицу

ее

нельзя

ув ид еть

и

, 

на п ример

, 

тут

же

уд а лить

. 

Тем

более

, 

ч то

п ользов а тель

в ообщ е

может

не

з на ть

–

р а бота ет

он

в

д а нный

момент

с

ба з ов ой

та блицей

или

с

та блицей

-

п ред ста в лением

.  

А на логич на я

ситуа ция

в оз никнет

, 

если

в

ка кой

-

либо

сущ еств ующ ей

Источник: https://files.student-it.ru/previewfile/15134