Файл: SQL в вопросах и задачах.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 02.04.2021

Просмотров: 1535

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
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

 

д ля

 

отбора

 

строк

 

в

 

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

Д ля

 

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

 

та кое

 

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

 

только

 

ч то

 

в в ед енной

 

строки

 

яв ляется

 

неожид а нным

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

не

 

п онятно

п оч ему

 

п осле

 

в в од а

 

строки

 

в

 

та блицу

 

ее

 

нельзя

 

ув ид еть

 

и

на п ример

тут

 

же

 

уд а лить

Тем

 

более

ч то

 

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

 

в ообщ е

 

может

 

не

 

з на ть

 

 

р а бота ет

 

он

 

в

 

д а нный

 

момент

 

с

 

ба з ов ой

 

та блицей

 

или

 

с

 

та блицей

-

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

.  

А на логич на я

 

ситуа ция

 

в оз никнет

если

 

в

 

ка кой

-

либо

 

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