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

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

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

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

Добавлен: 02.04.2021

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

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

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

 

136

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

 

п рав а

 

на

 

осущ еств ление

 

з а п росов

 

к

 

та блице

 

EXAM_MARKS

118.

 

О тмените

 

п рив илегию

 

INSERT

 

п о

 

отношению

 

к

 

та блице

 

STUDENT

 

у

 

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

 

IVANOV

 

и

 

у

 

в сех

 

д ругих

 

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

которым

 

п рив илегия

в

 

св ою

 

оч еред ь

была

 

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

 

э тим

 

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

 

IVANOV

119.

 

Перед а йте

 

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

 

SIDOROV

 

п рав о

 

в ып олнять

 

оп ерации

 

в ста в ки

 

или

 

обнов ления

 

д ля

 

та блицы

 

UNIVERSITY

но

 

только

 

д ля

 

з а п исей

 

об

 

унив ерситета х

з на ч ения

 

рейтингов

 

которых

 

лежа т

 

в

 

д иа п а з оне

 

от

 300 

д о

 

400. 

120.

 

Ра з решите

 

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

 

PETROV

 

д ела ть

 

з а п росы

 

к

 

та блице

 

EXAM_MARKS

но

 

з а п ретите

 

ему

 

из менять

 

в

 

э той

 

та блице

 

з на ч ения

 

оценок

 

студ ента м

имеющ им

 

неуд ов летв орительные

 (=2) 

оценки

6.10. 

С оз дание

 

синоним ов

 (

SYNONYM

К а жд ый

 

раз

 

п ри

 

ссылке

 

к

 

ба з ов ой

 

та блице

 

или

 

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

не

 

яв ляющ имися

 

собств енностью

 

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

требуется

 

уста нов ить

 

в

 

ка ч еств е

 

п рефикса

 

к

 

имени

 

э той

 

та блицы

 

имя

 

ее

 

в ла д ельца

п оскольку

 

система

 

не

 

сможет

 

оп ред елить

 

местона хожд ение

 

та блицы

та к

 

ка к

 

у

 

раз ных

 

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

 

могут

 

ока з а ться

 

та блицы

 

с

 

од ина ков ыми

 

имена ми

Исп ользов а ние

 

д линных

 

имен

 

с

 

п рефикса ми

 

может

 

ока з а ться

 

неуд обным

Поэ тому

 

большинств о

 

реа лиз а ций

  SQL 

п оз в оляют

 

соз д а в а ть

 

д ля

 

та блиц

 

синонимы

 (

ч то

 

не

 

яв ляется

 

ста нд а р том

 ANSI). 

Си но ни м

 

 

э то

 

а льтерна тив ное

 

имя

 

та блицы

Пр и

 

соз д а нии

 

синонимов

 

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

 

ста нов ится

 

его

 

собств енником

п оэ тому

 

необход имость

 

исп ользов а ния

 

п рефикса

 

к

 

имени

 

та блицы

 

д ля

 

него

 

отп а д а ет

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

 

имеет

 

п ра в о

 

соз д а в а ть

 

синоним

 

д ля

 

та блицы

если

 

он

 

имеет

п о

 

кра йней

 

мере

од ну

 

п рив илегию

 

в

 

од ном

 

или

 

более

 

столбца х

 

э той

 

та блицы

.  

С

 

п омощ ью

 

кома нд ы

 

CREATE

 

SYNONYM

 

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

 

IVANOV

 

может

 

д ля

 

та блицы

 

с

 

именем

 

PETROV

.

STUDENT

 

соз д а ть

 

синоним

 

с

 

именем

 

CLIENTS

 

след ующ им

 

образ ом

CREATE SYNONYM 

CLIENTS 

FOR 

PETROV

.

STUDENT


background image

 

137

Теп ерь

 

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

 

IVANOV

 

может

 

исп ользов а ть

 

та блицу

 

с

 

именем

 

CLIENTS

 

в

 

кома нд е

 

точ но

 

та к

 

же

ка к

 

имя

 

PETROV

.

STUDENT

.  

К а к

 

уже

 

гов орилось

п рефикс

 

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

 

 

э то

 

фа ктич ески

 

ч а сть

 

имени

 

любой

 

та блицы

Всякий

 

раз

когд а

 

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

 

не

 

ука з ыв а ет

 

собств енное

 

имя

 

в месте

 

с

 

именем

 

св оей

 

та блицы

,  SQL 

п о

 

умолч а нию

 

п од ста в ляет

 

ид ентифика тор

 

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

 

в

 

ка ч еств е

 

п рефикса

 

имени

 

та блицы

След ов а тельно

д в а

 

од ина ков ых

 

имени

 

та бл ицы

но

 

св яз а нные

 

с

 

раз лич ными

 

в ла д ельца ми

ста нов ятся

 

неид ентич ными

 

и

след ов а тельно

не

 

п рив од ят

 

к

 

ка кой

-

либо

 

п ута нице

 

в

 

з а п роса х

Та ким

 

обра з ом

д в а

 

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

 

могут

 

соз д а в а ть

 

д в е

 

п олностью

 

неза в исимые

 

та блицы

 

с

 

од ина ков ыми

 

имена ми

но

 

э то

 

та кже

 

оз на ч а ет

ч то

 

од ин

 

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

 

может

 

соз д а ть

 

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

основ а нное

 

на

 

имени

стоящ ем

 

п осле

 

имени

 

та блицы

и

 

исп ользуемым

 

д ругим

 

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

Э то

 

иногд а

 

д ела ется

 

в

 

случ а ях

когд а

 

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

 

исп ользуется

 

ка к

 

з а мена

 

са мой

 

исход ной

 

та блицы

на п ример

если

 

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

 

п росто

 

исп ользует

 

CHECK

 

OPTION

 

ка к

 

з а менитель

 

огранич ения

 

CHECK

 

в

 

ба з ов ой

 

та блице

М ожно

 

та кже

 

соз д а в а ть

  

собств енные

 

синонимы

 

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

имена

 

котор ых

 

буд ут

 

та кими

 

же

ка к

 

и

 

п ерв она ч а льные

 

имена

 

та блиц

Н а п р имер

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

 

PETROV

 

может

 

оп ред елить

 

имя

 

STUDENT

 

ка к

 

св ой

 

синоним

 

д ля

 

та блицы

 

IVANOV

.

STUDENT

 

с

 

п омощ ью

 

з а п р оса

CREATE

 

SYNONYM

 

STUDENT

 

FOR

 

IVANOV

.

STUDENT

С

 

точ ки

 

з рения

 SQL, 

теп ерь

 

имеются

 

д в а

 

ра з ных

 

имени

 

од ной

 

та блицы

IVANOV

.

STUDENT

 

и

 

PETROV

.

STUDENT

О д на ко

 

ка жд ый

 

из

 

э тих

 

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

 

может

 

обращ а ться

 

к

 

д а нной

 

та блице

исп ользуя

 

имя

 

STUDENT

.  SQL, 

ка к

 

гов орилось

 

в ыше

са м

 

д оба в ит

 

к

 

э тому

 

имени

 

нед оста ющ ие

 

имена

 

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

 

в

 

ка ч еств е

 

п рефиксов


background image

 

138

6.11. 

С иноним ы

 

общ его

 

пол ь з ования

 

(PUBLIC)

 

Е сли

 

п ла нируется

 

исп ользов а ть

 

та блицу

 

STUDENT

 

большим

 

ч ислом

 

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

уд обнее

ч тобы

 

в се

 

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

 

ссыла лись

 

к

 

ней

 

с

 

п омощ ью

 

од ного

 

и

 

того

 

же

 

имени

Э то

 

д а ст

 

в оз можность

на п ример

исп ользов а ть

 

ука з а нное

 

имя

 

без

 

огранич ений

 

в

 

п рикла д ных

 

п рогра мма х

Ч тобы

 

соз д а ть

 

ед иное

 

имя

 

д ля

 

в сех

 

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

соз д а ется

 

общ ий

 

синоним

.  

Н а п ример

если

 

в се

 

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

 

буд ут

 

в ыз ыв а ть

 

та бл ицу

 

STUDENT

 

с

 

д а нными

 

о

 

студ ента х

можно

 

п р исв оить

 

ей

 

о бщи й

 

синоним

 

STUDENT

 

след ующ им

 

образ ом

CREATE

 

PUBLIC

 

SYNONYM

 

STUDENT

 

FOR

 

STUDENT

О бщ ие

 

синонимы

 

в

 

основ ном

 

соз д а ются

 

в ла д ельца ми

 

объектов

 

или

 

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

 

с

 

п рив илегиями

 

а д министратора

 

ба з ы

 

д а нных

  (

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

 

DBA

). 

Д р угим

 

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

 

п р и

 

э том

 

д олжны

 

быть

 

п ред оста в лены

 

соотв етств ующ ие

 

п р ив илегии

 

в

 

та блице

 

STUDENT

ч тобы

 

она

 

была

 

им

 

д оступ на

Д а же

 

если

 

имя

 

яв ляется

 

общ им

са ма

 

та блица

 

общ ей

 

не

 

яв ляется

.  

6.12. 

Удал ение

 

синоним ов

 

О бщ ие

 

и

 

д ругие

 

синонимы

 

могут

 

уд а ляться

 

кома нд ой

 

DROP

 

SYNONYM

Синонимы

 

могут

 

уд а ляться

 

только

 

их

 

в ла д ельца ми

кр оме

 

общ их

 

синонимов

которые

 

могут

 

уд а ляться

 

соотв етств ующ ими

 

п рив илегиров а нными

 

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

  (

обыч но

 

э то

 

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

 

DBA

). 

Ч тобы

 

уд а лить

на п ример

синоним

 

CLIENTS

когд а

 

в место

 

него

 

уже

 

п ояв ился

 

общ ий

 

синоним

 

STUDENT

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

 

может

 

в в ести

 

кома нд у

 

DROP SYNONYM 

CLIENTS


background image

 

139

7. 

Упр а влен и е

 

тр а н за к

ци ями

 

В

 

п роцессе

 

в ып олнения

 

п ослед ов а тельности

 

кома нд

  SQL 

та блицы

 

ба з ы

 

д а нных

 

не

 

в сегд а

 

могут

 

на ход иться

 

в

 

согла сов а нном

 

состоянии

В

 

случ а е

 

в оз никнов ения

 

ка ких

-

либо

 

сбоев

когд а

 

логич ески

 

св яз а нна я

 

п ослед ов а тельность

 

з а п р осов

 

не

 

д ов ед ена

 

д о

 

конца

в оз можно

 

на р ушение

 

целостности

 

д а нных

 

в

 

ба з е

Д ля

 

обесп еч ения

 

целостности

 

д а нных

 

логич ески

 

св яз а нные

 

п ослед ов а тельности

 

з а п росов

нед елимые

 

с

 

точ ки

 

з рения

 

в оз д ейств ия

 

на

 

ба з у

 

д а нных

объед иняют

 

в

 

та к

 

на з ыв а емые

 

т р а нза кци и

За п росы

соста в ляющ ие

 

транз а кцию

д олжны

 

или

 

в ып олняться

 

в се

 

п олностью

 

 

с

 

п ерв ого

 

д о

 

п ослед него

и

 

тогд а

 

транз а кция

 

з а в ер ша ется

 

кома нд ой

 

COMMIT

или

если

 

в

 

силу

 

ка ких

-

либо

 

в нешних

 

п р ич ин

 

э то

 

ока з ыв а ется

 

нев оз можным

в несенные

 

з а п роса ми

 

транз а кции

 

из менения

 

в

 

ба з е

 

д а нных

 

д олжны

 

а ннулиров а ться

 

кома нд ой

  ROLLBACK

Во

 

в тором

 

случ а е

 

ба з а

 

д а нных

 

в оз в ращ а ется

 

в

 

целостное

 

состояние

 

на

 

момент

п ред шеств ующ ий

 

на ч а лу

 

транз а кции

Э то

 

на з ыв а ют

 

о т ка т о м

 

транз а кции

Н ов а я

 

транз а кция

 

на ч ина ется

 

п осле

 

ка жд ой

 

кома нд ы

 

COMMIT

 

или

 

ROLLBACK

.  

В

 

большинств е

 

реа лиз а ций

 

можно

 

уста нов ить

 

п а р а метр

на з ыв а емый

 

AUTOCOMMIT

О н

 

буд ет

 

а в тома тич ески

 

з а п омина ть

 

в се

 

в ып олняемые

 

д ейств ия

 

на д

 

д а нными

Д ейств ия

которые

 

п рив ед ут

 

к

 

ошибке

 

п ри

 

неза в ершенной

 

транз а кции

в сегд а

 

буд ут

 

а в тома тич ески

 

“отка та ны”

 

обра тно

.  

Имеется

 

в оз можность

 

уста нов ки

 

режима

 

AUTOCOMMIT

 

а в тома тич ески

 

п ри

 

р егистрации

Е сли

 

сеа нс

 

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

 

з а в ерша ется

 

а в а рийно

на п ример

п роиз ошел

 

сбой

 

системы

 

или

 

в ып олнена

 

п ер еза груз ка

 

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

то

 

текущ а я

 

транз а кция

 

в ып олнит

 

а в тома тич еский

 

отка т

 

из менений

Э то

 

 

од на

 

из

 

в оз можностей

 

уп ра в ления

 

в ып олнением

 

д иа логов ой

 

обработки

 

з а п росов

 

п утем

 

ра з д еления

 

кома нд

 

на

 

большое

 

колич еств о

 

ра з лич ных

 

тр а нз а кций

О д иноч на я

 

транз а кция

 

не

 

д олжна

 

сод ержа ть

 

слишком

 

много

 

несв яз а нных

 

кома нд

на

 

п рактике

 

она

 

ч а сто

 

состоит

 

из

 

ед инств енной

 

кома нд ы

Х орошее

 

п рав ило

которому

 

можно

 

след ов а ть

 

 

это

 

соз д а в а ть

 

транз а кции

 

из

 

од ной

 

кома нд ы

 

или

 

нескольких

 

близ ко

 

св яз а нных

 

кома нд

.  

Н а п ример

требуется

 

уд а лить

 

св ед ения

 

о

 

студ енте

 

п о

 

фа милии

 

Ива н о в

 

из

 

ба з ы

 

д а нных

Прежд е

ч ем

 

св ед ения

 

из

 

та блицы

 

STUDENT

 

буд ут

 

уд а лены


background image

 

140

требуется

 

осущ еств ить

 

оп ред еленные

 

д ейств ия

 

с

 

д а нными

 

об

 

э том

 

студ енте

 

в

 

д ругих

 

та блица х

в

 

ч а стности

 

с

 

д а нными

 

о

 

его

 

оценка х

Н еобход имо

 

уста нов ить

 

соотв етств ующ ее

 

э тому

 

студ енту

 

п оле

 

STUDENT

_

ID

 

в

 

та блице

 

EXAM

_

MARKS

 

в

 

NULL

После

 

э того

 

можно

 

уд а лить

 

з а п ись

 

об

 

э том

 

студ енте

 

из

 

та блицы

 

STUDENT

Э ти

 

д ейств ия

 

в ып олняются

 

с

 

п омощ ью

 

д в ух

 

з а п р осов

 

UPDATE

 

EXAM

_

MARKS

 

 

SET

 

STUDENT

_

ID

 = 

NULL

 

 

WHERE

 

STUDENT

_

ID

 = 

1004

 

DELETE

 

FROM

 

STUDENT

 

 

WHERE

 

STUDENT

_

ID

 = 

1004

 

Е сли

 

в оз ника ет

 

п роблема

 

с

 

уд а лением

 

з а п иси

 

о

 

студ енте

 

с

 

фа милией

 

Ива н о в

 (

в оз можно

имеется

 

д ругой

 

в нешний

 

кл юч

ссыла ющ ийся

 

на

 

него

о

 

котором

 

не

 

было

 

из в естно

,   

и

соотв етств енно

не

 

уч тено

 

п ри

 

уд а лении

), 

можно

 

было

 

бы

 

отменить

 

в се

 

сд ела нные

 

из менения

,  

п о

 

кра йней

 

мере

д о

 

тех

 

п ор

п ока

 

п роблема

 

не

 

буд ет

 

решена

.  

Д ля

 

э того

 

п рив ед енную

 

гр уп п у

 

кома нд

 

след ует

 

обраба тыв а ть

 

ка к

 

од иноч ную

 

тра нз а кцию

п ред усма трив а я

 

ее

 

з а в ершение

 

с

 

п омощ ью

 

кома нд ы

 

COMMIT

 

или

 

ROLLBACK

 

 

в

 

з а в исимости

 

от

 

результа та

 

УП Р АЖ НЕ НИ Я

 

121.

 

Вы

 

п еред а ли

 

п ра в о

 

SELECT

 

в

 

та блице

 

EXAM

_

MARKS

 

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

 

IVANOV

Вв ед ите

 

кома нд у

 

та к

ч тобы

 

в ы

 

могли

 

ссыла ться

 

к

 

э той

 

та блице

ка к

 

к

 

EXAM

_

MARKS

не

 

исп ользуя

 

имя

 

IVANOV

 

в

 

ка ч еств е

 

п рефикса

122.

 

Е сли

 

п роиз ойд ет

 

сбой

 

п ита ния

ч то

 

случ ится

 

со

 

в семи

 

из менениями

сд ела нными

 

в о

 

в ремя

 

текущ ей

 

тра нз а кции