Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы Данных - Сибилев, 2007

.pdf
Скачиваний:
290
Добавлен:
11.05.2015
Размер:
1.93 Mб
Скачать

151

− Модульный SQL не предполагает включения операторов SQL в

базовый язык. Приложение состоит из отдельных модулей SQL-

операторов, скомпонованных с модулями других языков.

Динамический SQL – код SQL, генерируемый во время исполнения прикладной программы. Он заменяет статический в тех случаях, когда не-

обходимый код SQL не может быть определен при написании приложения,

так как он зависит от оперативных решений пользователя.

Статический и динамический SQL включают операторы, не нужные в интерактивном варианте. Кроме того, они обладают такими дополни-

тельными свойствами, которые определяются только средой применения.

Однако в использовании языка во всех трех реализациях нет принципиаль-

ных различий. В настоящем пособии имеется в виду интерактивный вари-

ант.

7.1.3 Категории операторов

Операторы языка группируются в три основных категории:

− язык определения данных (DDL – Data Definition Language) вклю-

чает все операторы, используемые для определения схемы БД и объектов схемы;

язык манипулирования данными (DML – Data Manipulation Language) содержит операторы, используемые для выборки и обновления данных;

операторы управления данными (DCS – Data Control Statements)

используются для определения привилегий пользователей.

Имеются и другие категории, например, операторы определения транзакций, диагностические операторы и т.д. Стандарт SQL2 определяет свыше 50 операторов. Нашей целью является не полное изложение стан-

дарта, а ознакомление с основными возможностями языка. Поэтому в на-

стоящем пособии рассмотрены только важнейшие операторы, реализован-

ные практически во всех коммерческих СУБД.

152

7.1.4 Объект

Стандарт трактует объект как нечто, имеющее уникальное имя и оп-

ределение, постоянно сохраняемые в системном каталоге СУБД. Напри-

мер, объектами являются схемы, явно определенные таблицы, домены,

правила (утверждения).

Объект создается пользователем, имеющим соответствующую при-

вилегию CREATE. Этот пользователь является владельцем объекта и мо-

жет распоряжаться им по своему усмотрению. В частности, он может пе-

редавать привилегии другим пользователям. Объект может быть уничтожен только его владельцем. Исполняя оператор уничтожения объекта, система

удалит из своего каталога его имя и определение.

В таблице 7.1 перечислены типы объектов, определенные стандар-

том SQL-92. Все коммерческие SQL-системы поддерживают объекты

TABLE и VIEW. Остальные объекты могут не поддерживаться конкрет-

ными реализациями.

Таблица 7.1 – Типы объектов SQL

Стандартное имя

Русское название

Подробности

 

 

 

ASSERTION

Утверждение

7.1.11, 7.3.9

 

 

 

CHARACTER SET

Набор символов

7.1.12

 

 

 

COLLATION

Сравнение

7.1.12

 

 

 

DOMAIN

Домен

7.1.8, 7.3.2 – 7.3.4

 

 

 

SCHEMA

Схема

7.1.14, 7.3.10

 

 

 

TABLE

Таблица

7.1.9, 7.3.5 – 0

 

 

 

TRANSLATION

Трансляция

7.1.12

 

 

 

VIEW

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

7.1.10, 7.3.8, 7.4

 

 

 

7.1.5 Идентификатор авторизации

Для того чтобы SQL-система могла обеспечить защиту данных, каж-

дый источник SQL-операторов (SQL-агент) получает уникальное имя –

идентификатор авторизации (Authorization ID). ID сохраняется в систем-

ном каталоге и может быть именем физического лица, группы или при-

153

кладной программы. Какие бы то ни было действия в БД выполняются

SQL-системой только от имени конкретного ID.

С ID могут быть связаны привилегии, определяющие конкретные действия в БД, которые разрешено выполнять пользователю. Обычно привилегии определяют действия ID при работе с интерактивным SQL или в рамках приложения. Однако при работе с приложениями привилегии часто назначаются приложениям, а не ID, от имени которых они запуска-

ются. В этом случае ID, имеющий привилегию запуска приложения, как бы получает его привилегии. Они распространяются только на сеанс рабо-

ты с приложением и недействительны в интерактивном режиме.

Идентификатор авторизации (ID) – идентификатор источника опе-

раторов SQL и одновременно объект, с которым связаны привилегии.

Может быть пользователем или модулем, владельцем схемы SQL и ее со-

держимого.

7.1.6 Сеанс

Установление связи с СУБД (подключение) определяет начало сеан-

са работы пользователя. При подключении система получает информацию о том, какой ID будет являться SQL-агентом.

Сеанс – набор SQL-операторов, исполняемых от имени определен-

ного ID с момента его подключения к системе до момента отключения.

SQL-агенту разрешено выполнять несколько подключений. Поэтому одновременно могут существовать несколько сеансов одного и того же ID.

В каждом из них могут использоваться различные источники данных. Ак-

тивным в любой момент времени является только один сеанс – текущий.

Пользователь может изменять текущий сеанс.

7.1.7 Тип данных

Все значения любого столбца в любой SQL-таблице должны принад-

лежать одному и тому же типу данных. Тип данных должен быть частью определения самого столбца или частью определения домена, из которого

154

выбираются значения столбца. Стандарт определяет шесть категорий ти-

пов данных (см. таблицу 7.2). Каждый тип имеет собственное имя и может быть только простым. Допускаются синонимы имен, например,

CHARACTER эквивалентно CHAR. Имена типов или их синонимы ис-

пользуются в определениях столбцов и доменов.

Таблица 7.2 – Категории типов данных SQL

Категория Описание

CHARACTER Символьные строки.

STRING

 

 

 

BIT STRING

Строки битов.

 

 

EXACT

Числа, точно соответствующие цифровой записи.

NUMERIC

 

 

 

APPROXIMATE

Числа, выраженные в форме «мантисса плюс поря-

NUMERIC

док» и имеющие приближенное значение.

 

 

DATETIME

Дата, время и комбинация их значений.

INTERVAL Период времени между двумя временными отсчета-

ми, выраженными в форме даты и времени.

Многие производители СУБД не следуют стандарту в части типов данных. По этой причине мы не приводим стандартных определений в на-

стоящем пособии. В примерах используются (как правило, без особых по-

яснений) такие определенные стандартом типы данных, как

CHARACTER, NUMERIC, DATE, TIME.

Практическое применение SQL возможно только после тщательного изучения типов данных, поддерживаемых используемой СУБД.

7.1.8 Домен

Понятие домена в SQL отличается от аналогичного понятия в РМД.

Стандарт не определяет домен как логическую категорию значений, кото-

рые можно сравнивать. Согласно стандарту, домен есть просто именован-

ная совокупность значений данных. Имя и определение домена (см. п.

155

7.3.2) сохраняются в специальной таблице системного каталога. На имя домена можно ссылаться внутри определения таблицы как на тип данных.

Домен (DOMAIN) – объект, который может использоваться как аль-

тернатива типу данных для столбцов. Домен определяет тип данных и может также задавать некоторые другие элементы, например, значение по умолчанию, одно или несколько ограничений.

7.1.9 Таблица

Таблица в SQL является аналогом отношения РМД. Однако в отли-

чие от отношения, схема таблицы может не содержать уникального под-

множества атрибутов (столбцов). Стандарт не требует обязательного ука-

зания первичного и альтернативных ключей при определении таблицы. С

точки зрения SQL-системы в этом нет необходимости. Она автоматически присваивает каждой строке уникальный внутренний номер – суррогатный ключ. Однако этот ключ пользователю не виден и вне системы смысла не имеет. Это приводит к тому, что в таблицах SQL могут (с точки зрения пользователя) содержаться дубликаты строк и совершенно непонятно, как их следует интерпретировать.

Таблица (TABLE) – объект, являющийся набором значений, которые могут разделяться на строки и столбцы, так что на пересечении строки и столбца располагается только одно значение. Все значения в столбце принадлежат одному типу данных (домену). Столбцы имеют имена, уни-

кальные в пределах таблицы.

Можно выделить две категории таблиц – именованные и неимено-

ванные (рис. 7.2).

Неименованные таблицы явных сохраняемых в системном каталоге определений не имеют9. Они создаются системой в процессе исполнения операторов манипулирования данными и существуют в рабочих буферах системы только до тех пор, пока нужны ей.

9 Поэтому объектами в смысле п. 7.1.4 не являются.

156

Именованные таблицы являются объектами в смысле п. 7.1.4. Их заголовки явно определяются операторами DDL. Имена и определения со-

храняются в системном каталоге.

Именованные таблицы могут быть базовыми или представлениями.

Базовые таблицы имеют собственные данные, физически сохраняе-

мые во внешней памяти. Представления, в отличие от базовых таблиц,

собственных данных не имеют.

 

 

 

 

 

 

 

 

 

 

Таблица

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Именованная таблица

 

 

 

 

Неименованная таблица

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

Базовая таблица

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Постоянная таблица

 

 

 

 

Временная таблица

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Созданная временная

 

 

Объявленная временная

 

 

 

 

 

 

таблица

 

 

таблица

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глобальная временная

 

 

 

Локальная временная

 

 

 

 

таблица

 

 

 

 

 

таблица

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7.2 Иерархия таблиц SQL2

Постоянные таблицы имеют сохраняемые в системном каталоге определения и являются частью схемы. Содержимое постоянных таблиц физически сохраняется во внешней памяти системы и в любой момент времени доступно для просмотра и обновления любому ID, имеющему со-

ответствующие привилегии. Данные постоянных таблиц разделяются ме-

жду сеансами различных (или одного и того же) ID.

Временные таблицы используются приложениями для записи про-

межуточных результатов или в качестве рабочего пространства. Данные в этих таблицах появляются в процессе исполнения приложения и не разде-

ляются между сеансами ID. По окончании сеанса содержимое всех вре-

менных таблиц автоматически уничтожается.

157

Созданная временная таблица является частью схемы и имеет по-

стоянно хранящееся в системном каталоге определение. Данные глобаль-

ных временных таблиц доступны любому приложению внутри сеанса, то-

гда как данные локальных временных таблиц не могут разделяться различ-

ными приложениями.

Объявленная временная таблица создаётся как объект схемы при-

кладной программой. Для этого используется специальный оператор DDL

DECLARE LOCAL TEMPORARY TABLE. Это определение действительно только внутри создавшей его ПП. При завершении ПП оно автоматически уничтожается. Таким образом, объявленная временная таб-

лица, в отличие от других видов именованных таблиц, не является посто-

янной частью схемы.

Таблица является фундаментальной информационной структурой

SQL-системы. Результаты всех операций над данными выражаются в таб-

личной форме. Само описание базы данных – системный каталог – пред-

ставляет собой набор таблиц, содержащих информацию об объектах БД.

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

Кроме базовых таблиц, физически сохраняемых во внешней памяти,

в схеме могут быть определены виртуальные таблицы – представления.

Представление имеет собственное имя, зарегистрированное в сис-

темном каталоге. На него можно ссылаться как на имя таблицы в операто-

рах манипулирования данными. Заголовок представления, в отличие от за-

головка таблицы, не определяется явно путём специфицирования столб-

цов. Определение представления содержит запрос к другим таблицам, ко-

торый связывается с именем представления и сохраняется в системном ка-

талоге. Запрос исполняется при обработке оператора манипулирования данными, в котором встретилась ссылка на представление. Результат за-

проса и является содержимым представления. Таким образом, представле-

ние, в отличие от временной таблицы, всегда отражает текущее состояние базовых таблиц, существующее в момент исполнения запроса.

158

Представление (VIEW) есть объект, содержащий именованный за-

прос, на который можно ссылаться в операторах манипулирования дан-

ными.

Механизм представлений обеспечивает возможность предъявления хранимых данных в удобной и привычной для конечного пользователя форме. Кроме того, он является средством ограничения доступа к данным.

7.1.11 Утверждение

Многие ограничения целостности данных определяются непосредст-

венно SQL-операторами создания домена или таблицы. Однако в ряде случаев ограничения затрагивают несколько таблиц, а правила ПО предусматривают специфические действия в случае нарушения ограничений.

Стандарт поддерживает возможность определения правил целостно-

сти в виде отдельных объектов – утверждений. Утверждение содержит ограничение, записанное в виде предиката. Предикат может содержать ссылки на таблицы и их столбцы. Значение предиката вычисляется при по-

пытках обновления объектов, упомянутых в ссылках.

Утверждение (ASSERTION) есть объект, содержащий проверку ог-

раничения, записанного в виде предиката, ссылающегося на столбцы таб-

лиц.

7.1.12 Другие типы объектов

Объекты типов CHARACTER SET, COLLATION и TRANSLATION

определяют соответственно набор символов, порядок сортировки сим-

вольных строк и преобразование строки одного набора символов в строку другого набора.

В каждом SQL-приложении по умолчанию определены один или бо-

лее стандартных наборов символов, которые обычно соответствуют нацио-

нальному алфавиту. Пользователь может создать с помощью оператора

159

CREATE CHARACTER SET для своего приложения новый набор симво-

лов путем изменения существующих определений.

Строки символов в SQL являются сортируемыми объектами. Это оз-

начает, что для них определены некоторые правила упорядочения. Пользо-

ватель может определить с помощью оператора CREATE COLLATION

специальный порядок сортировки для стандартного или собственного на-

бора символов.

В каждой SQL-системе реализованы некоторые правила преобразо-

вания строк одного набора символов в строки другого – правила трансля-

ции. Оператор CREATE TRANSLATION предоставляет пользователю возможность определения собственных правил трансляции на базе встро-

енных.

7.1.13 Системный каталог, информационная схема

Система сохраняет определения объектов (метаданные) в своей внутренней базе данных, состоящей из специальных таблиц. Полный на-

бор этих таблиц называется системным каталогом10.

Владельцем системного каталога является СУБД. Пользователь мо-

жет получить данные из системных таблиц средствами SQL, но никакой ID

не имеет права их обновления посредством операторов манипулирования данными. Таблицы системного каталога обновляются системой.

Системный каталог есть принадлежащий SQL-системе набор таб-

лиц, содержащий определения объектов.

Конкретный пользователь может получать из таблиц системного ка-

талога сведения об объектах, доступных ему в силу имеющихся привиле-

гий. Стандарт предлагает обеспечивать ограничение доступа к системному каталогу путем определения для каждого ID так называемой информаци-

онной схемы – набора виртуальных таблиц (представлений), отображаю-

щих в момент обращения к ним текущее состояние того фрагмента сис-

10 Отметим, что стандарт не определяет набор таблиц системного каталога. Это прерогатива разработчиков

СУБД.

160

темного каталога, который соответствует привилегиям ID. Стандарт опре-

деляет состав и структуру этих таблиц [Ошибка! Источник ссылки не найден., гл.15].

Информационная схема есть стандартизованный набор представлений таблиц системного каталога, создаваемый для конкретного

ID.

7.1.14 Схема, каталог, кластер

Стандарт не определяет понятия «база данных». В качестве его ана-

логов используются понятия «схема», «каталог», «кластер».

Схема состоит из определений объектов и может содержать домены,

различные виды таблиц, правил и т.п. Она создается пользователем,

имеющим привилегию создания объектов. Схема может быть определена явно или неявно, однако в любом случае имеет уникальное имя, связанное в системном каталоге с ID автора объектов.

Схемой (SCHEMA) называется поименованная группа связанных объектов, управляемых единым идентификатором авторизации.

Схема является минимальной базой данных, доступной конкретному пользователю в конкретном сеансе. Однако пользователь может создать несколько автономных схем, он может иметь привилегии на объекты дру-

гих пользователей, и все эти источники данных могут потребоваться ему в одном сеансе. Поэтому стандарт предусматривает и более сложную орга-

низацию данных (рис. 7.3). Схемы могут быть сгруппированы в каталоги,

а каталоги – в кластеры.

Каталог – именованная группа схем, которая обрабатывается как единый объект. Каждый каталог обязательно содержит информационную схему, описывающую содержимое схем каталога. Владельцу каталога ав-

томатически предоставляется привилегия просмотра информационной схемы, но он не может вносить в неё изменения непосредственно.