Автор работы: Пользователь скрыл имя, 08 Ноября 2010 в 23:01, Не определен
Введение
1 Типы данных языка SQL
1.1 Идентификаторы языка SQL
1.2 Точные числовые данные
1. 3 Скалярные типы данных языка SQL
2 Средства поддержки целостности данных
2.1 Обязательные данные
2.2 Ограничения
3 Определение данных
3.1 Создание баз данных
3.2 Изменение содержимого базы данных
3.3 Создание таблиц
3.4 Модификация определения таблицы
4 Представления
5 Транзакций в SQL
6 Управление доступом к данным
Заключение
Поддержка целостности данных включает средства задания ограничений, которые вводятся с целью защиты базы от нарушения согласованности сохраняемых в ней данных. Ниже приведенные ограничения могут быть определены в операторах CREATE TABLE и ALTER TABLE [Документация Microsoft SQL Server 2000].
2.1 Обязательные данные
Для некоторых столбцов требуется наличие в каждой строке таблицы конкретного и допустимого значение, отличного от неопределенного значения (или значения NULL). Значение NULL не следует путать с пустыми строковыми значениями или нулевыми числовыми значениями; оно служит для представления данных, которые в данный момент недоступны, отсутствуют или не определены. Для задания ограничений подобного типа стандарт ISO предусматривает использование спецификатора NOT NULL, указываемого в операторах CREATE TABLE и ALTER TABLE. Если для столбца задан спецификатор NOT NULL, система отвергает любые попытки вставить в такой столбец пустое значение. А если при определении характеристик столбца задан спецификатор NULL, то система допускает размещение в этом столбце значений NULL. В соответствии со стандартом ISO по умолчанию применяется спецификатор NULL.
2.2 Ограничения
Каждый столбец имеет собственный домен, т.е. некоторый набор допустимых значений. Стандарт ISO предусматривает два различных механизма определения доменов в операторах CREATE TABLE и ALTER TABLE. Первый состоит в использовании конструкции CHECK, позволяющей задать требуемые ограничения для столбца или таблицы в целом. Конструкция CHECK имеет следующий формат:
CHECK {searchCandition}
При определении ограничений для отдельного столбца в конструкции CHECK можно ссылаться только на определяемый столбец.
Однако стандарт ISO позволяет определять и более сложные домены, для чего предназначен второй механизм — использование оператора CREATE DOMAIN, имеющего следующий формат:
CREATE DOMAIN domainWame [AS] datatype
[DEFAULT defaultOption]
[CHECK (searcftCoriditicn)]
Каждому создаваемому домену присваивается имя, задаваемое параметром domainName, тип данных, определяемый параметром dataType, необязательное значение по умолчанию, устанавливаемое параметром defaulCOption, и необязательный набор допустимых значений, определяемый в конструкции CHECK. Следует отметить, что приведенный формат оператора CREATE DOMAIN является неполным, однако его достаточно для демонстрации основных возможностей.
Удаление доменов из базы данных выполняется с помощью оператора DROP DOMAIN, имеющего следующий формат:
DROP DOMAIN domainName [RESTRICT | CASCADE]
Спецификатор способа удаления домена
(RESTRICT или CASCADE) определяет, какие действия
выполняются в базе данных, если домен
в настоящее время используется. Если
задан спецификатор RESTRICT, а домен применяется
в существующей таблице, представлении
или определении проверки, то операция
удаления оканчивается неудачей. А если
задан спецификатор CASCADE, то в любой столбец
таблицы, который основан на определении
домена, автоматически вносятся изменения.
Таким образом, чтобы в нем применялся
базовый тип данных домена, а любые ограничения
или применяемые по умолчанию конструкции
операторов для этого домена заменяются
в случае необходимости ограничениями
столбца или применяемой по умолчанию
конструкцией оператора для соответствующего
столбца.
3 Определение данных
Язык определения данных SQL DDL (Data Definition Language) позволяет создавать и уничтожать такие объекты базы данных, как схемы, домены, таблицы, представления и индексы. В настоящем разделе кратко рассматриваются способы создания и удаления схем, таблиц и индексов, а в следующем разделе показано, как создавать и удалять представления3. Стандарт ISO предусматривает также возможность создания наборов символов, схем сортировки и преобразования. Но в настоящей книге эти объекты базы данных не рассматриваются. Ниже перечислены основные операторы языка определения данных SQL.
CREATE SCHEMA
CREATE DOMAIN
CREATE TABLE
CREATE VIEW
ALTER DOMAIN
ALTER TABLE
DROP SCHEMA
DROP DOMAIN
DROP TABLE
DROP VIEW
Эти операторы используются для создания, модификации и уничтожения структур, входящих в состав концептуальной схемы. Во многих СУБД предусмотрены также следующие два оператора, хотя они не рассматриваются в стандарте SQL:
CREATE INDEX DROP INDEX
Кроме того, администратор базы данных может воспользоваться дополнительными командами для уточнения параметров физического хранения данных.
3.1 Создание баз данных
В различных СУБД процедура создания баз данных существенно отличается. В многопользовательских системах право создания баз данных обычно закрепляется только за администратором базы данных. В однопользовательских системах предусмотренная по умолчанию база данных может быть создана непосредственно в процессе установки и настройки параметров самой СУБД. А другие базы данных создаются самим пользователем по мере необходимости4. Стандарт ISO не определяет, как должны создаваться базы данных, поэтому в каждом из диалектов языка SQL обычно используется собственный подход. В соответствии со стандартом ISO, таблицы и другие объекты базы данных существуют в некоторой среде (environment). Помимо всего прочего, каждая среда состоит из одного или нескольких каталогов (catalog), а каждый каталог — из набора схем (schema). Схема представляет собой именованную коллекцию объектов базы данных, которые определенным образом связаны друг с другом (все объекты в базе данных должны быть описаны в той или иной схеме). Объектами схемы могут быть таблиц, представления, домены, утверждения, сопоставления, толкования и наборы символов. Все объекты схемы имеют одного и того же владельца и множество общих значений, применяемых по умолчанию.
Этот стандарт оставляет право выбора конкретного механизма создания и уничтожения каталогов за разработчиком СУБД, однако регламентирует механизм создания и удаления схем. Оператор определения схемы имеет следующий формат:
CREATE. SCHEMA [nаmе | AUTHORIZATION Creator-Identifier]
В стандарте ISO также указано, что должна существовать возможность определить в рамках данного оператора диапазон средств, доступных пользователям создаваемой схемы. Однако конкретные способы определения подобных привилегий в разных СУБД различаются. Схема удаляется с помощью оператора DROP SCHEMA, который имеет следующий формат:
DROP SCHEMA Name [ RESTRICT | CASCADE]
Если указано ключевое слово RESTRICT, схема должна быть пустой, иначе выполнение операции будет отменено. Если указано ключевое слово CASCADE, при выполнении оператора будут автоматически удалены все связанные с удаляемой схемой объекты, причем в порядке, указанном выше. Если одна из этих операций удаления будет завершена неудачно, выполнение всего оператора DROP SCHEMA будет отменено. Общий эффект от выполнения оператора DROP SCHEMA с параметром CASCADE может затронуть значительную часть базы данных, поэтому подобные операторы должны вводиться с исключительной осторожностью.
В настоящее время операторы CREATE SCHEMA и DROP SCHEMA реализованы в очень немногих СУБД.
3.2
Изменение содержимого
базы данных
SQL является полнофункциональным языком манипулирования, данных который использоваться не только для выборки данных из базы, но и для модификации ее содержимого. Операторы модификации информации в базе данных не столь сложны, как оператор SELECT. В этом разделе рассматриваются три оператора языка SQL, предназначенных для модификации содержимого базы данных.
- INSERT - оператор предназначен для добавления данных в таблицу,
- UPDATE - оператор предназначен для модификации уже помещенных в таблицу данных.
- DELETE - оператор позволяет удалять из таблицы строки данных.
3.3 Создание таблиц
После создания общей структуры базы данных можно приступить к созданию таблиц, представляющих отношения, входящие в состав проекта базы данных. Для этой цели используется оператор CREATE TABLE, имеющий следующий общий формат:
CREATE TABLED TableName
{ (columName data Type [NOT NULL] [UNIQUE]
[DEFAULT defaultoption] [CHSCK (searchCondition}:] [, …] }
[PRIMARY KEY (ListOfColumns) ]
{ [UNIQUE {listOfCoIumns) ] [,. . .] }
{ [FOREIGN KEY ( listOfFdreignKeyColumns)
REFERENCES ParentTabl eName [(listOfCandidateKeyColuims) ],
[MATCH {PARTIAL | FULL}
[ON UPDATE. referentialAction]
[ON DELETE referential Action] } [, , .-.] }
{[CHECK (searchCondtitioa)] [, . , , ] } )
Эта версия оператора CREATE TABLE включает средства определения ограничений ссылочной целостности и других ограничений. Структура самого оператора и степень поддержки тех или иных ограничений в значительной степени зависят от применяемого диалекта языка SQL. Но, как правило, в базе данных следует использовать все поддерживаемые ограничения, поскольку это позволяет повысить качество хранимых данных.
В результате выполнения этого оператора будет создана таблица, имя которой определяется параметром TableName, состоящая из одного или нескольких столбцов типа dataType. Для задания значения, применяемого по умолчанию при вставке данных в конкретный столбец, предусмотрена необязательная конструкция DEFAULT. В базе данных это значение применяется по умолчанию в тех случаях, если в операторе INSERT не задано значение для такого столбца. Кроме прочих значений, опция определения применяемого по умолчанию значения defaultoption может включать литералы. Остальные конструкции известны под названием ограничений таблицы и могут быть дополнительно обозначены с помощью следующей конструкции:
CONSTRAINT ConstraintName
Эта конструкция позволяет в дальнейшем удалить ограничение, указав его имя в операторе ALTER TABLE, как описано ниже. Конструкция PRIMARY KEY определяет один или несколько столбцов, которые образуют первичный ключ таблицы. Если эта конструкция предусмотрена в диалекте SQL, реализованном в конкретной базе данных, то она должна применяться при создании каждой таблицы. По умолчанию для всех столбцов, представляющих первичный ключ, предусмотрено применение ограничения NOT NULL. При создании таблицы разрешено использование только одной конструкции PRIMARY KEY. База данных отвергает все попытки выполнения операций INSERT или UPDATE, которые влекут за собой создание строки с повторяющимся значением в столбце (столбцах) PRIMARY KEY. Таким образом, в базе данных гарантируется уникальность значений первичного ключа. В конструкции FOREIGN KEY определяется внешний ключ (дочерней) таблицы и ее связь с другой (родительской) таблицей. Эта конструкция позволяет реализовать ограничения ссылочной целостности и состоит из следующих частей.
‒ Список UstOfForeignKeyColumns, содержащий имена одного или нескольких столбцов создаваемой таблицы, которые образуют внешний ключ.
‒ Необязательное правило обновления (ON UPDATE) для определения взаимосвязи между таблицами, которое указывает, какое действие (referentialAction) должно выполняться при обновлении в родительской таблице потенциального ключа, соответствующего внешнему ключу дочерней таблицы. В качестве параметра referentiaJAcCion можно указать CASCADE, SET NULL, SET DEFAULT или NO ACTION. Если конструкция ON UPDATE опущена, то по умолчанию подразумевается, что никакие действия не выполняются, в соответствии со значением NO ACTION.