Структура языка SQL

Автор работы: Пользователь скрыл имя, 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 Управление доступом к данным
Заключение

Файлы: 1 файл

Структура языка SQL.png.doc

— 275.00 Кб (Скачать файл)

      Необязательное правило удаления (ON DELETE) для определения взаимосвязи между таблицами, которое указывает, какое действие (referentialAction) должно выполняться при удалении строки из родительской таблицы, которая содержит потенциальный ключ, соответствующий внешнему ключу дочерней таблицы. Определение параметра referentzalAction совпадает с определением такого же параметра для правила ON UPDATE.

      По умолчанию ограничение ссылочной целостности удовлетворяется, если любой компонент внешнего ключа имеет значение NULL или в родительской таблице есть соответствующая строка. Опция MATCH позволяет ввести дополнительные ограничения, касающиеся применения значений NULL во внешнем ключе. Если задана опция MATCH FULL, то либо все компоненты внешнего ключа должны быть пусты (NULL), либо все должны иметь непустые значения. А если задана опция MATCH PARTIAL, то либо все компоненты внешнего ключа должны быть пусты (NULL), либо в родительской таблице должна существовать хотя бы одна строка, способная удовлетворить это ограничение, если все остальные значения NULL были подставлены правильно. Некоторые авторы утверждают, что в ограничениях ссылочной целостности следует применять только опцию MATCH FULL.

      В операторе создания таблицы может быть задано любое количество конструкций FOREIGN KEY. Конструкции CHECK и CONSTRAINT позволяют определять дополнительные ограничения. Если конструкция CHECK используется в качестве ограничения столбца, то она может ссылаться только на определяемый столбец. Ограничения фактически контролируются после применения каждого оператора SQL к таблице, на которой они заданы, но такая проверка может быть отложена до окончания той транзакции, в состав которой входит текущий оператор SQL.

 

       
 

       3.4 Модификация определения таблицы  

       В стандарте ISO предусмотрено применение оператора ALTER TABLE для изменения структуры таблицы после ее создания. Определение оператора ALTER TABLE состоит из шести опций, позволяющих выполнить следующие действия:

       ввести новый столбец в таблицу;

      удалить столбец из таблицы;

      ввести новое ограничение таблицы;

      удалить ограничение таблицы;

       задать для столбца значение, применяемое по умолчанию;

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

      Ниже приведен основной формат этого оператора :

ALTER TABLE TableName

[ADD [COLUMN] columneName [RESTRICT | CASCADE]]

[DROP [COLUMN] columnName [RESTRICT | CASCADE]]

[ADD [CONSTRAINT [ConstreintName]] tableConstraintDefinition]

[DROP CONSTRAINT ConstraintName [RESTRICT | CASCADE]]

[ALTER [COLUMN] SET DEFULT  defaultOption]

[ALTER [COLUMN] DROP  DEFAULT]

      Почти все параметры данного оператора совпадают с параметрами оператора CREATE TABLE, описанного в предыдущем разделе, В качестве параметра с определением ограничения таблицы CaJbleConstraintDefinition может применяться одна из конструкций PRIMARY KKY, UNIQUE, FOREIGN KEY или CHECK. Конструкция ADD COLUMN аналогична конструкции определения столбца в операторе CREATE TABLE. В конструкции DROP COLUMN задается имя столбца, удаляемого из определения таблицы, и имеется необязательная опция, позволяющая указать, является ли действие операции DROP каскадным или нет, как показано ниже.

      RESTRICT  Операция DROP отвергается, если на данный столбец имеется ссылка в другом объекте базы данных (например, в определении представления). Это значение опции предусмотрено по умолчанию.

      CASCADE  Выполнение операции DROP продолжается в любом случав и ссылки на столбец автоматически удаляются из любых объектов базы данных, где они имеются. Эта операция выполняется каскадно, поэтому если столбец удаляется из объекта, содержащего ссылку, то в базе данных выполняется проверка того, имеются ли ссылки на этот столбец я каком-либо ином объекте, такие ссылки уничтожаются и в этом объекте, и т.д. 

          3.5 Удаление таблиц

 

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

DROP TABLE.TableWame [RESTRICT I CASCADE]

      Например, для удаления таблицы PropertyForRent можно использовать следующий оператор:

DROP TABLE PropertyForRent;

      Однако следует отметить, что эта команда удалит не только указанную таблицу, но и все входящие в нее строки данных. Если требуется удалить из таблицы лишь строки данных, сохранив в базе описание самой таблицы, то следует использовать оператор DELETE. Оператор DROP TABLE дополнительно позволяет указывать, следует ли операцию удаления выполнять каскадно.

      RESTRICT Операция DROP отвергается, если в базе данных имеются другие объекты, существование которых зависит от того, существует ли в базе данных удаляемая таблица.

      CASCADE  Операция DROP продолжается, и из базы данных автоматически удаляются все зависимые объекты (и объекты, зависящие от этих объектов).

      Общий эффект от выполнения оператора DROP TABLE с ключевым словом CASCADE может распространяться на значительную часть базы данных, поэтому подобные операторы следует использовать с максимальной осторожностью. Чаще всего оператор DROP TABLE используется для исправления ошибок, допущенных при создании таблицы. Если таблица была создана с неправильной структурой, можно воспользоваться оператором DROP TABLE для ее удаления, после чего создать таблицу заново.

        

           
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

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

      С точки зрения пользователя базы данных представление выглядит как реальная таблица данных, содержащая набор поименованных столбцов и строк данных. Но в отличие от реальных таблиц представления не всегда существуют в базе как некоторый набор сохраняемых значений данных. В действительности доступные через представления строки и столбцы данных являются результатом выполнения запроса, заданного при определении представления. СУБД сохраняет определение представления в базе данных. Обнаружив ссылку на представление, СУБД применяет один из, двух следующих подходов для формирования представления. При первом подходе СУБД отыскивает определение представления, и преобразуют исходный запрос, лежащий в основе представления, в эквивалентный запрос к таблицам, использованным в определении представления, после чего модифицированный запрос выполняется. Этот процесс слияния запросов, называемый заменой представления (под этим подразумевается замена представления оператором SQL, который обращается к базовым таблицам). При втором подходе, который называется материализацией представления, готовое представление, хранится в базе данных в виде временной таблицы, а его актуальность постоянно поддерживается по мере обновления всех таблиц, лежащих в его основе.

 

       5  Транзакций в SQL 

      Стандарт ISO включает определение модели транзакций, построенной на использовании двух специальных операторов — COMMIT и ROLLBACK. Большинство коммерческих реализаций языка SQL поддерживает эту модель, которая впервые была реализована в СУБД DB2 компании IBM. Транзакцией называется логическая единица работы, состоящая из одного или нескольких операторов SQL, которая с точки зрения восстановления данных будет рассматриваться, и обрабатываться системой как единое неделимое действие. В стандарте указывается, что в языке SQL транзакция автоматически запускается любым инициализирующим транзакцию оператором SQL, выполняемым пользователем или программой. Изменения, внесенные в базу данных в ходе выполнения транзакции, не будут восприниматься любыми другими выполняющимися параллельно транзакциями до тех пор, пока эта транзакция не будет явным образом завершена. Завершение транзакции может быть выполнено одним из следующих четырех способов.

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

       ‒ Ввод оператора ROLLBACK означает отказ от завершения транзакции, в результате чего выполняется откат всех изменений в базе данных, внесенных при выполнении этой транзакции. После обработки оператора ROLLBACK ввод любого инициирующего транзакцию оператора автоматически вызовет запуск новой транзакции.

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

      При внедрении операторов SQL в текст программы аварийное окончание ее работы автоматически вызовет откат последней транзакции, запущенной этой программой.

      В языке SQL запрещено использование вложенных транзакций. С помощью оператора SET TRANSACTION пользователи могут настраивать определенные характеристики процесса обработки транзакций. Основной формат этого оператора имеет следующий вид:

SET' TRANSACTION

[READ ONLY | READ WRITS} |

[ISOLATION LEVEL READ UNCOMMITTED READ COMMITTED

REPEATABLE READ | SERIALIZABLE3]

      Квалификаторы READ ONLY и READ WRITE указывают, что в транзакциях допускается выполнение только операций чтения или чтения и записи. По умолчанию предполагается использование квалификатора READ WRITE (если только не выбран уровень изоляции READ UNCOMMITTED). Вероятно, многих смутит тот факт, что в режиме READ ONLY в транзакциях допускается выдача операторов INSERT, UPDATE и DELETE для временных таблиц (но только для временных). Показатель уровня изоляции определяет ту степень взаимодействия с другими транзакциями, которая допускается при выполнении транзакции.

      Полная безопасность гарантируется только уровнем изоляции SERIALIZABLE, который предусматривает генерацию временных графиков сериализации. Все остальные уровни изоляции требуют, чтобы СУБД предоставляла некоторый механизм, который программисты могли бы использовать для обеспечения сериализации данных. Там же будут даны дополнительные разъяснения по поводу механизмов выполнения транзакций и сериализации.

 

       6 Управление доступом к данным 

      Язык SQL включает операторы GRANT и REVOKE, предназначенные для организации защиты таблиц в базе данных5. Применяемый механизм защиты построен на использовании идентификаторов пользователей, предоставляемых им прав владения и привилегий. 

      6.1 Идентификаторы пользователей и права владения

     

      Идентификатором пользователя называется обычный идентификатор языка SQL, используемый для обозначения некоторого пользователя базы данных. Каждому пользователю базы данных должен быть назначен собственный идентификатор, присваиваемый администратором базы данных. По очевидным соображениям защиты данных идентификатор пользователя, как правило, защищается паролем. Каждый выполняемый СУБД оператор SQL выполняется от имени какого-либо пользователя. Идентификатор пользователя применяется для определения того, на какие объекты базы данных может ссылаться пользователь и какие операции с этими объектами он имеет право выполнять. Каждый созданный в среде SQL объект имеет своего владельца. Владелец задается идентификатором пользователя, определенным в конструкции AUTHORIZATION той схемы, которой этот объект принадлежит. Первоначально только владелец объекта знает о существовании данного объекта и имеет право выполнять с этим объектом любые операции. 

<

Информация о работе Структура языка SQL