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

Автор: Пользователь скрыл имя, 01 Ноября 2011 в 15:23, курсовая работа

Описание работы

В последие годы наблюдается значительный рост объемов и усложнение структурной сложности данных, также диверсификация в сфере пользователей БД (баз данных) и постоянное улучшение производительности технической базы. Так как база данных это по сути хранилище различных объектов (данных), возникла необходимость в структуризации и систематизации хранящейся в БД информации, а также возможности создания взаимосвязей между объктами.

Содержание

Введение...................................................................................................................2

1.Типы данных языка SQL......................................................................................6

1.1. Идентификаторы языка SQL...........................................................................6

1.2. Точные числовые данные................................................................................6

1.3. Скалярные типы данных языка SQL..............................................................9

1.4 Средства поддержки целостности данных....................................................10

1.5. Обязательные данные.....................................................................................10

1.6. Ограничения……………................................................................................10

2. Определение данных.........................................................................................12

2.1. Создание баз данных......................................................................................13

2.2. Изменение содержимого базы данных.........................................................14

2.3. Создание таблиц.............................................................................................15

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

2.5. Удаление таблиц……………………………….............................................19

3. Запросы и права доступа...................................................................................21

3.1 Представления……………………………………………………................21

3.2. Транзакций в SQL..........................................................................................22

3.3. Управление доступом к данным…………………........................................24

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

3.5. Привилегии…………………………………………………………………..24

Заключение.............................................................................................................26 Глоссарий…………………...................................................................................28

Список использованных источников...................................................................29

Приложения…………………………………………………………...…..……..31

Работа содержит 1 файл

Final v 2.3.doc

— 253.00 Кб (Скачать)

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

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

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

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

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

      удалить из таблицы существующее ограничение;

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

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

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

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

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

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

 

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

      Например, чтобы удалить таблицу «Название таблицы» можно использовать следующую конструкцию:

DROP TABLE Название таблицы;

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

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

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

     3. Запросы и права доступа

 

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

        Представление (англ. view, в сленге программистов иногда используется в качестве заимствования из английского — «вьюха», «вьюшка») — виртуальная логическая таблица, представляющая собой поименованный запрос (алиас к запросу), который будет подставлен в качестве подзапрос при использовании представления.

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

      Наиболее  типичным способом создания представлений для СУБД, поддерживающих язык запросов SQL, является наделение представления с определённым SQL-запросом. Таким образом, содержимое представления — это результат выполнения этого запроса, а возможности построения представления ограничиваются только степенью сложности диалекта SQL, поддерживаемого конкретной СУБД. Так, для стандартных СУБД, таких как PostgreSQL, Oracle, Interbase, FireBird, Microsoft SQL Server, представление может включать: 

          подмножество записей из таблицы  БД, отвечающее определённым условиям (например, в условиях наличии одной таблицы «Леса» можно создать два представления «Лиственные» и «Хвойные», в каждом из которых будут записи только о лесах соответствующего типа);

          подмножество столбцов таблицы  БД, необходимое программе (например, из реальной таблицы «Телефонный справочник» представление может содержать по каждому человеку только ФИО и телефонный номер);

          результат обработки данных таблицы  различными функциями (например, представление может содержать все данные реальной таблицы, но с изменением кодировки строк и удаление специальных знаков);

          результат объединения (join) нескольких таблиц (например, при наличии таблиц «People», «Address», «Street», «Company» возможно построение представления, которое будет представлять собой таблицу, в которой каждому человеку поставлены в соответствие его личные данные, адрес места жительства, название организации, в которой он работает, и адрес этой организации);

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

          результат группировки записей  в таблице (например, в случае таблицы «доходы» с записями по каждому входящему платежу можно построить представление, содержащее счета, с которых поступала каждая сумма);

 

             3.2  Транзакции в SQL 

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

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

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

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

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

      В языке SQL запрещается использование вложенных транзакций. При помощи оператора SET TRANSACTION все пользователи имеют возможность настраивать различные характеристики хода процесса обработки транзакций.

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

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

 

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

      Язык SQL содержит операторы GRANT и REVOKE, служащие для организации защиты таблиц в базе данных3. Используемый механизм защиты построен на использовании идентификаторов пользователей, а так же предоставляемых им прав владения и привилегий. 

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

     

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

          3.5 Привилегии

     

      Каждый пользователь в SQL базе данных обладает набором привилегий. Это – то, что разрешено делать пользователю (или это файл регистрации, который может восприниматься как минимальная привилегия ). Эти привилегии могут со времнем претерпеваать изменнения – добавляются новые, удаляться старые. Часть из них определены в ANSI SQL, но существуют и дополнительные привилегии, которые также являются необходимыми. SQL-привилегии как определено в ANSI, не достаточны в большей части ситуаций реальной жизни. С другой стороны, необходимые типы привилегий могут видоизменяться соответственно с системой, используемой пользователем – в случае которой ANSI не может дать никаких рекомендаций. Привилегии, не являющиеся частью стандарта SQL, могут использовать схожий синтаксис, не всегда полностью совпадающий со стандартом. В стандарте ISO определяется следующий набор привилегий:

          -SELECT - позволяет выбирать данные из таблицы;

          - INSERT - позволяет вставлять в таблицу новые строки;

          -UPDATE - позволяет изменять данные в таблице;

          - DELETE - позволяет удалять строки из таблицы;

          -REFERENCES - позволяет ссылаться на столбцы из указанной таблицы в описаниях требований поддержки целостности данных;

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