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

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

Е сли

п роиз ойд ет

сбой

п ита ния

, 

ч то

случ ится

со

в семи

из менениями

, 

сд ела нными

в о

в ремя

текущ ей

тра нз а кции

? 

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