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

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

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

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

Добавлен: 02.04.2021

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

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

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

 

86 

4. 

С о зда н и е

 

о б ъ екто в

 

б а зы

 

да н н ы х

 

4.1. 

С оз дание

 

т абл иц

 

баз ы

 

данны х

 

Соз д а ние

 

объектов

 

ба з ы

 

д а нных

 

осущ еств ляется

 

с

 

п омощ ью

 

оп ераторов

 

яз ыка

 

оп ред еления

 

д а нных

 (DDL).  

Та бл ицы

 

ба з ы

 

д а нных

 

соз д а ются

 

с

 

п омощ ью

 

кома нд ы

 

CREATE

 

TABLE

Э та

 

кома нд а

 

соз д а ет

 

п устую

 

та блицу

то

 

есть

  

та блицу

не

 

имеющ ую

 

строк

Зна ч ения

 

в

 

э ту

 

та блицу

 

в в од ятся

 

с

 

п омощ ью

 

кома нд ы

 

INSERT

К ома нд а

 

CREATE

 

TABLE

 

оп ред еляет

 

имя

 

та блицы

 

и

 

множеств о

 

п оименов а нных

 

столбцов

 

в

 

ука з а нном

 

п оряд ке

Д ля

 

ка жд ого

 

столбца

 

д олжен

 

быть

 

оп ред елен

 

тип

 

и

 

раз мер

К а жд а я

 

соз д а в а ема я

 

та блица

 

д олжна

 

иметь

п о

 

крайней

 

мер е

од ин

 

столбец

Синта ксис

 

кома нд ы

 

CREATE

 

TABLE

 

имеет

 

след ующ ий

 

в ид

CREATE

 

TABLE

 <

и м я

 

т а бли цы

(<

и м я

 

ст о лбца

><

т и п

 

д а нны х

>[(<

р а зм ер

>)],

); 

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

 

в

  SQL 

тип ы

 

д а нных

ка к

 

минимум

п од д ержив а ют

 

ста нд а р ты

  ANSI  (

American  National  Standards  Institute 

 

А м ер и ка нски й

 

на ци о на льны й

 

и нст и т ут

 

ст а нд а р т о в

) (

см

раз д ел

 1.5.

Тип ы

 

д а нных

 SQL): 

CHAR

(

CHARACTER

), 

INT

 (

INTEGER

), 

SMALLINT

,

 

DEC

 (

DECIMAL

), 

NUMERIC

FLOAT

 . 

Тип

 

д а нных

д ля

 

которого

 

обяз ательно

 

д олжен

 

быть

 

ука з а н

 

р а з мер

 

 

это

 

CHAR

Реа льное

 

колич еств о

 

симв олов

которое

 

может

 

на ход иться

 

в

 

п оле

меняется

 

от

 

нуля

  (

если

 

в

 

п оле

 

сод ержится

 

NULL

-

з на ч ение

д о

 

з а д а нного

 

в

 

CREATE

 

TABLE

 

ма ксима льного

 

з на ч ения

.  

След ующ ий

 

п ример

 

п ока з ыв а ет

 

кома нд у

которая

 

п оз в оляет

 

соз д а ть

 

та блицу

 

STUDENT


background image

 

87 

CREATE

 

TABLE

 

STUDENT1

 

 

(

STUDENT

_

ID

  

INTEGER

 

 SURNAME   

VARCHAR(60)

 

 NAME   

 

VARCHAR(60)

,  

 

 STIPEND   

DOUBLE

 

 KURS   

 

INTEGER

 

 CITY

   

 

VARCHAR(60)

 

 BIRTHDAY  

DATE

,      

 

 UNIV

_

ID 

 

INTEGER

); 

4.2. 

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

 

индексац ии

 

дл я

 

бы строго

 

доступа

 

к

 

данны м

  

О п ера ции

 

п оиска

-

в ыборки

 (

SELECT

д а нных

 

из

 

та блиц

 

п о

 

з на ч ениям

 

их

 

п олей

 

могут

 

быть

 

сущ еств енно

 

ускор ены

 

п утем

 

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

 

инд екса ции

 

д а нных

Инд екс

 

сод ержит

 

уп оряд оч енный

  (

в

 

а лфа в итном

 

или

 

ч ислов ом

 

п оряд ке

сп исок

 

сод ержимого

 

столбцов

 

или

 

груп п ы

 

столбцов

 

в

 

инд ексируемой

 

та блице

 

с

 

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

 

э тих

 

строк

  (

ROWID

). 

Д ля

 

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

 

инд ексиров а ние

 

та блицы

 

п о

 

тем

 

или

 

иным

 

столбца м

 

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

 

собой

 

сп особ

 

ло ги ческо го

 

уп оряд оч ив а ния

 

з на ч ений

 

инд ексиров а нных

 

столбцов

п оз в оляющ его

в

 

отлич ие

 

от

 

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

 

п еребора

 

строк

сущ еств енно

 

п ов ысить

 

скорость

 

д оступ а

 

к

 

конкретным

 

строка м

 

та блицы

 

п р и

 

в ыборка х

исп ользующ их

 

з на ч ения

 

э тих

 

столбцов

Инд екса ция

 

п оз в оляет

 

на ход ить

 

сод ержа щ ий

 

инд ексир ов а нную

 

строку

 

блок

 

д а нных

в ып олняя

 

небольшое

 

ч исло

 

обращ ений

 

к

 

в нешнему

 

устройств у

 

хранения

 

д а нных

.  

При

 

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

 

инд екса ции

 

след ует

од на ко

иметь

 

в

 

в ид у

ч то

  

уп ра в ление

 

инд ексом

 

сущ еств енно

 

з а мед ляет

 

в ремя

 

в ып олнения

 

оп ера ций

св яз а нных

 

с

 

обнов лением

 

д а нных

 (

та ких

ка к

 

INSERT

 

и

 

DELETE

), 

та к

 

ка к

 

э ти

 

оп ерации

 

тр ебуют

 

п ерестройки

 

инд ексов

.  

Инд ексы

 

можно

 

соз д а в а ть

 

ка к

 

п о

 

од ному

та к

 

и

 

п о

 

множеств у

 

п олей

Е сли

 

ука з а но

 

более

 

од ного

 

п оля

 

д ля

 

соз д а ния

 

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

 

инд екса

д а нные

 

уп оряд оч ив а ются

 

п о

 

з на ч ениям

 

п ерв ого

 

п оля

п о

 

которому

 

осущ еств ляется

 

инд ексиров а ние

Внутр и

 

п олуч ив шейся

 

груп п ы

 

осущ еств ляется

 

уп оряд оч ив а ние

 

п о

 

з на ч ениям

 

в торого

 

п оля

д л я

 

п олуч ив шихся

 

в

 

рез ульта те

 


background image

 

88 

груп п

 

осущ еств ляется

 

уп оряд оч ив а ние

 

п о

 

з на ч ениям

 

третьего

 

п оля

 

и

 

т

.

д

.  

Синта ксис

 

кома нд ы

 

соз д а ния

 

инд екса

 

имеет

 

след ующ ий

 

в ид

CREATE

 

INDEX

 <

и м я

 

и нд екса

ON

 <

и м я

 

т а бли цы

> (<

и м я

 

ст о лбца

[,<

и м я

 

ст о лбца

>]

); 

При

 

этом

 

та блица

 

д олжна

 

быть

 

уже

 

соз д а на

 

и

 

сод ержа ть

 

столбцы

имена

 

которых

 

ука з а ны

 

в

 

кома нд е

 

соз д а ния

 

инд екса

Имя

 

инд екса

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

 

в

 

кома нд е

д олжно

 

быть

 

уника льным

 

в

 

ба з е

 

д а нных

Б уд уч и

 

од на жд ы

 

соз д а нным

инд екс

 

яв ляется

 

нев ид имым

 

д ля

 

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

в се

 

оп ера ции

 

с

 

ним

 

осущ еств ляет

 

СУ Б Д

.  

П ример

Е сли

 

та блица

 

EXAM

_

MARKS

 

ч а сто

 

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

 

д ля

 

п оиска

 

оценки

 

конкретного

 

студ ента

 

п о

 

з на ч ению

 

п оля

 

STUDENT

_

ID

то

 

след ует

 

соз д а ть

 

инд екс

 

п о

 

э тому

 

п олю

CREATE

 

INDEX 

STUDENT

_

ID

_

1

 

ON

 

EXAM

_

MARKS

 (

STUDENT

_

ID

); 

Д ля

 

уд а ления

 

инд екса

  (

п ри

 

э том

 

обяз а тельно

 

требуется

 

з на ть

 

его

 

имя

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

 

кома нд а

 

DROP

 

INDEX

имеющ а я

 

след ующ ий

 

синта ксис

 

DROP

 

INDEX

 <

и м я

 

и нд екса

>; 

У д а ление

 

инд екса

 

не

 

из меняет

 

сод ержимого

 

п оля

 

или

 

п олей

инд екс

 

которых

 

уд а л яется

 

 

4.3. 

И з м енение

 

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

 

т абл иц ы

 

Д ля

 

мод ифика ции

 

структуры

 

и

 

п а р а метров

 

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

 

та блицы

 

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

 

кома нд а

 

ALTER

 

TABLE

Синта ксис

 

кома нд ы

 

ALTER

 

TABLE

 

д ля

 

д оба в ления

 

столбцов

 

в

 

та блицу

 

имеет

 

в ид

 

ALTER

 

TABLE

 <

и м я

 

т а бли цы

ADD

 (<

и м я

 

ст о лбца

> <

т и п

 

д а нны х

>  

<

р а зм ер

>); 

По

 

э той

 

кома нд е

 

д ля

 

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

 

в

 

та блице

 

строк

 

д оба в ляется

 

нов ый

 

столбец

в

 

который

 

з а носится

 

NULL

-

з на ч ение

Э тот

 

столбец

 

ста нов ится

 

п ослед ним

 

в

 

та блице

М ожно

 

д оба в лять

 

несколько

 

столбцов

в

 

э том

 

случ а е

 

их

 

оп ред еления

 

в

 

кома нд е

 

ALTER

 

TABLE

 

ра з д еляются

 

з а п ятой

.  


background image

 

89 

Воз можно

 

из менение

 

оп иса ния

 

столбцов

Ч а сто

 

э то

 

св яз а но

 

с

 

из менением

 

раз меров

 

столбцов

д оба в лением

 

или

 

уд а лением

 

огранич ений

на кла д ыв а емых

 

на

 

их

 

з на ч ения

Синта ксис

 

кома нд ы

 

в

 

э том

 

случ а е

 

имеет

 

в ид

 

ALTER

 

TABLE

 <

и м я

 

т а бли цы

MODIFY

 <

и м я

 

ст о лбца

> <

т и п

 

д а нны х

>  

<

р а зм ер

/

т о чно ст ь

>; 

След ует

 

иметь

 

в

 

в ид у

ч то

 

мод ифика ция

 

ха р а ктер истик

 

столбца

 

может

 

осущ еств ляться

 

не

 

в

 

любом

 

случ а е

а

 

с

 

уч етом

 

след ующ их

 

огранич ений

 

из менение

 

тип а

 

д а нных

 

в оз можно

 

только

если

 

столбец

 

п уст

 

д ля

 

неза п ол ненного

 

столбца

 

можно

 

из менять

 

ра з мер

/

точ ность

Д ля

 

з а п олненного

 

столбца

 

раз мер

/

точ ность

 

можно

 

ув елич ить

но

 

нел ьзя

 

п ониз ить

 

огранич ение

 

NOT

 

NULL

 

может

 

быть

 

уста нов лено

если

 

ни

 

од но

 

з на ч ение

 

в

 

столбце

 

не

 

сод ержит

 

NULL

О п цию

 

NOT

 

NULL

 

в сегд а

 

можно

 

отменить

 

р а з реша ется

 

из менять

 

з на ч ения

уста нов ленные

 

п о

 

умолч а нию

4.4. 

Удал ение

 

т абл иц ы

 

 

Ч тобы

 

уд а лить

 

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

 

та блицу

необход имо

 

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

 

уд а лить

 

в се

 

д а нные

 

из

 

э той

 

та блицы

то

 

есть

 

сд ела ть

 

ее

 

п устой

Та блица

имеющ а я

 

строки

не

 

может

 

быть

 

уд а лена

Синта ксис

 

кома нд ы

осущ еств ляющ ей

 

уд а ление

 

п устой

 

та блицы

имеет

 

след ующ ий

 

в ид

DROP

 

TABLE

 <

и м я

 

т а бли цы

>; 

УП Р АЖ НЕ НИ Я

 

94.

 

Н а п ишите

 

кома нд у

 

CREATE

 

TABLE

 

д ля

 

соз д а ния

 

та блицы

 

LECTURER

 

95.

 

Н а п ишите

 

кома нд у

 

CREATE

 

TABLE

 

д ля

 

соз д а ния

 

та блицы

 

SUBJECT

 

96.

 

Н а п ишите

 

кома нд у

 

CREATE

 

TABLE

 

д ля

 

соз д а ния

 

та блицы

 

UNIVERSITY

97.

 

Н а п ишите

 

кома нд у

 

CREATE

 

TABLE

 

д ля

 

соз д а ния

 

та блицы

 

EXAM

_

MARKS

98.

 

Н а п ишите

 

кома нд у

 

CREATE

 

TABLE

 

д ля

 

соз д а ния

 

та блицы

 

SUBJ

_

LECT


background image

 

90 

99.

 

Н а п ишите

 

кома нд у

которая

 

п оз в олит

 

быстро

 

в ыбрать

 

д а нные

 

о

 

студ ента х

 

п о

 

курса м

на

 

котор ых

 

они

 

уч а тся

100.

 

Соз д а йте

 

инд екс

который

 

п оз в олит

 

д ля

 

ка жд ого

 

студ ента

 

быстро

 

осущ еств ить

 

п оиск

 

оценок

сгруп п иров а нных

 

п о

 

д а та м

4.5. 

О граничения

 

на

 

м нож ество

 

допустим ы х

 

з начений

 

данны х

  

Д о

 

сих

 

п ор

 

ра ссма трив а лось

 

только

 

след ующ ие

 

огранич ения

 

 

з на ч ения

в в од имые

 

в

 

та блицу

д олжны

 

иметь

 

тип ы

 

д а нных

 

и

 

раз меры

сов местимые

 

с

 

тип а ми

/

раз мером

 

д а нных

 

столбцов

в

 

которые

 

э ти

 

з на ч ения

 

в в од ятся

  (

ка к

 

оп ред елено

 

в

 

кома нд е

 

CREATE

 

TABLE

 

или

 

ALTER

 

TABLE

). 

О п иса ние

 

та блицы

 

может

 

быть

 

д оп олнено

 

более

 

сложными

 

огранич ениями

на кла д ыв а емыми

 

на

 

з на ч ения

которые

 

могут

 

быть

 

в ста в лены

 

в

 

столбец

 

или

 

груп п у

 

столбцов

О гранич ения

 

(

CONSTRAINTS

яв ляются

 

ч а стью

 

оп ред еления

 

та бл ицы

При

 

соз д а нии

 (

из менении

та блицы

 

могут

 

быть

 

оп ред елены

 

огранич ения

 

на

 

в в од имые

 

з на ч ения

В

 

э том

 

случ а е

 SQL 

буд ет

 

отв ерга ть

 

любое

 

из

 

них

 

п ри

 

не

 

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

 

з а д а нным

 

критериям

О гранич ения

 

могут

 

быть

 

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

огр а нич ив а ющ ими

 

з на ч ения

 

или

 

д иа п а з он

 

з на ч ений

в ста в ляемых

 

в

 

столбец

 (

CHECH

NOT

 

NULL

). 

О ни

 

могут

 

иметь

 

св яз ь

 

со

 

в семи

 

з на ч ениями

 

столбца

огранич ив а я

 

нов ые

 

строки

 

з на ч ениями

которые

 

не

 

сод ержа тся

 

в

 

столбца х

 

или

 

их

 

на борах

  (

уника льные

 

з на ч ения

п ер в ич ные

 

ключ и

). 

О гранич ения

 

могут

 

та кже

 

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

 

св яз ью

 

со

 

з на ч ениями

на ход ящ имися

 

в

 

д ругой

 

та блице

д оп уска я

на п ример

в ста в ку

 

в

 

столбец

 

только

 

тех

 

з на ч ений

которые

 

в

 

д а нны й

 

м о м ент

 

сод ержа тся

 

та кже

 

в

 

д ругом

 

столбце

 

д ругой

 

или

 

э той

 

же

 

та блицы

  (

в нешний

 

ключ

). 

Э ти

 

огранич ения

 

носят

 

д ина мич еский

 

ха р а ктер

.  

Сущ еств ует

 

д в а

 

основ ных

 

тип а

 

огранич ений

 

 

огра нич ения

 

на

 

столбцы

 

и

 

огранич ения

 

на

 

та блицу

О гранич ения

 

на

 

столбцы

 

(

COLUMN

 

CONSTRAINTS

п р именимы

 

только

 

к

 

отд ельным

 

столбца м

а

 

огра нич ения

 

на

 

та блицу

  (

TABLE

 

CONSTRAINTS

п рименимы

 

к

 

гр уп п а м

состоящ им

 

из

 

од ного

 

или

 

более

 

столбцов

О гра нич ения

 

на

 

столбец

 

д оба в ляются

 

в

 

конце

 

оп ред еления

 

столбца

 

п осле

 

ука з а ния

 

тип а

 

д а нных

 

и

 

п еред

 

оконч а нием