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

Автор работы: Пользователь скрыл имя, 18 Апреля 2013 в 20:22, курсовая работа

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

SQL — это слабо структурированный язык, особенно по сравнению с такими сильно структурированными языками, как С или Pascal. Операторы SQL напоминают английские предложения и содержат "слова-пустышки", не влияющие на смысл оператора, но облегчающие его чтение. В SQL почти нет нелогичностей, к тому же имеется ряд специальных правил, предотвращающих создание операторов SQL, которые выглядят как абсолютно правильные, но не имеют смысла.
Несмотря на не совсем точное название, SQL на сегодняшний день является единственным стандартным языком для работы с реляционными базами данных. SQL — это достаточно мощный и в то же время относительно легкий для изучения язык.

Содержание работы

Введение...............................................................................................................................3
1 Типы данных языка SQL, определенные стандартом ISO. Средства поддержки целостности данных. ……………………………..…………………................................5
1.1 Скалярные типы данных языка SQL. Точные числовые данные (тип exact numeric). …………………………………..........................................................................5
1.2 Обязательные данные. Ограничения для доменов……...........................................11
1.3 Целостность сущностей. Ссылочная целостность……...........................................13
1.4 Требования данного предприятия.............................................................................17
2 Определение данных. Представления. Использование транзакций. Управление доступом к данным..…………….....................................................................................19
2.1 Определение данных..................................................................................................20
2.2 Представления………………………………….........................................................28
2.3 Использование транзакций…………………............................................................29
2.4 Управление доступом к данным …..……….............................................................31
Заключение........................................................................................................................34
Глоссарий…………………………...................................................................................36
Список используемых источников..................................................................................37
Приложения…...................................................................................................................38

Файлы: 1 файл

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

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

 

2.3 Использование транзакций

 

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

• Ввод оператора 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 для временных таблиц (но только для временных). Показатель уровня изоляции определяет ту степень взаимодействия с другими транзакциями, которая допускается при выполнении транзакции. Сведения об ограничениях в отношении сериализации (определения порядка следования) результатов выполнения транзакций для каждого из существующих уровней изоляции приведены в таблице 3 (см. Приложение В).

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

 

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

 

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

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

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

Привилегии.

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

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

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

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

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

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

• USAGE — право использовать домены, проверки, наборы символов и трансляции.

Понятия проверок, наборов символов и трансляций не рассматриваются  в этой книге. Привилегии INSERT и UPDATE могут  ограничиваться лишь отдельными столбцами  таблицы; в этом случае пользователь может модифицировать значения указанных столбцов, но не изменять значения остальных столбцов таблицы. Аналогичным образом, привилегия REFERENCES может распространяться только на отдельные столбцы таблицы, что позволит использовать их имена в формулировках требований защиты целостности данных (например, в конструкциях CHECK и FOREIGN KEY), входящих в определения других таблиц, тогда как применение для подобных целей остальных столбцов будет запрещено.

Когда пользователь с помощью оператора CREATE TABLE создает новую таблицу, он автоматически становится ее владельцем и получает по отношению к ней полный набор привилегий. Остальные пользователи первоначально не имеют каких-либо привилегий в отношении вновь созданной таблицы. Чтобы обеспечить доступ к ней, владелец должен явным образом предоставить им необходимые права, для чего используется оператор GRANT.

Когда пользователь создает представление  с помощью оператора CREATE VIEW, он автоматически  становится владельцем этого представления, однако совсем не обязательно получает по отношению к нему полный набор прав. Для создания представления пользователю достаточно иметь привилегию SELECT для всех входящих в данное представление таблиц и привилегию REFERENCES для всех столбцов, упоминаемых в определении этого представления. Но привилегии INSERT, UPDATE и DELETE в отношении созданного представления пользователь получит только в том случае, если он имеет соответствующие привилегии в отношении всех используемых в представлении таблиц.

 

Заключение

 

Язык SQL отличается от алгоритмических прежде всего своим функциональным назначением. При работе с базами данных (БД) наиболее часто выполняются следующие операции: создание, преобразование, удаление таблиц в БД; поиск, отбор, сортировка по запросам пользователя; добавление новых записей или модификация существующих; удаление записей и др. Для обработки больших массивов информации и выборки записей, по определенным признакам, и был создан структурированный язык запросов SQL (Structured Query Language). SQL стал стандартом языка работы с реляционными базами данных.

Практически в каждой СУБД имеется  свой универсальный язык, ориентированный  на ее особенности. Сегодня в мире ведущие производители СУБД: Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas), Informix и Sybase. Их продукты предназначены для совместной параллельной работы тысяч пользователей в сети, а базы данных могут храниться в распределенном виде на нескольких серверах. В Oracle имеется встроенный язык PL/SQL, в Informix -INFORMIX 4GL, в Adabas - Natural и т.д.

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

SQL — это легкий для понимания  язык и в то же время универсальное  программное средство управления данными.

Успех языку SQL принесли следующие  его особенности:

• независимость от конкретных СУБД;

• переносимость с одной вычислительной системы на другую;

• наличие стандартов;

• одобрение компанией IBM (СУБД DB2);

• поддержка со стороны компании Microsoft (протокол ODBC);

• реляционная основа;

• высокоуровневая структура, напоминающая английский язык;

• возможность выполнения специальных интерактивных запросов:

• обеспечение программного доступа к базам данных;

• возможность различного представления данных;

• полноценность как языка, предназначенного для работы с базами данных;

• возможность динамического определения данных;

• поддержка архитектуры клиент/сервер.

Все перечисленные выше факторы  явились причиной того, что SQL стал стандартным инструментом для управления данными на персональных компьютерах, мини-компьютерах и больших ЭВМ.

Из этого следует что, SQL является достаточно мощным языком для взаимодействия с СУБД.

Во-вторых, SQL — это не полноценный  компьютерный язык типа COBOL, FORTRAN или С. В SQL нет оператора IF для проверки условий, нет оператора GOTO для организации переходов и нет операторов DO или FOR для создания циклов. SQL является подъязыком баз данных, в который входит около тридцати операторов, предназначенных для управления базами данных. Операторы SQL встраиваются в базовый язык, например COBOL, FORTRAN или С, и дают возможность получать доступ к базам данных. Кроме того, из такого языка, как С, операторы SQL можно посылать СУБД в явном виде, используя интерфейс вызовов функций.

Наконец, SQL — это слабо структурированный  язык, особенно по сравнению с такими сильно структурированными языками, как  С или Pascal. Операторы SQL напоминают английские предложения и содержат "слова-пустышки", не влияющие на смысл оператора, но облегчающие его чтение. В SQL почти нет нелогичностей, к тому же имеется ряд специальных правил, предотвращающих создание операторов SQL, которые выглядят как абсолютно правильные, но не имеют смысла. 
Несмотря на не совсем точное название, SQL на сегодняшний день является единственным стандартным языком для работы с реляционными базами данных. SQL — это достаточно мощный и в то же время относительно легкий для изучения язык.

 

Глоссарий

 

п/п

Новое понятие

Содержание

1

База данных

это, прежде всего хранилище объектов данных, т.е. набора возможных понятий или событий, описываемых базой данных (БД)

2

Домен

множество атомарных значений одного и того же типа

3

Замена представления

процесс замены представления  оператором SQL, который обращается к базовым таблицам

4

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

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

5

Материализация представления

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

6

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

виртуальное отношением, которое не всегда реально существует в базе данных, но создается по запросу определенного пользователя в ходе выполнения этого запроса

7

Привилегии

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

8

Транзакция

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

9

ISO, (International Organization for Standardization)

международная организация, занимающаяся выпуском стандартов

10

SQL DDL (Data Definition Language)

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


 

 

 

 

 

 

Список используемых источников

 

  1. Конноли Т., Бегг Л., Страчан А. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. 3-е издание. Вильямс 2003. – Таблицы, картинки.
  2. Мамаев Е. Microsoft SQL Server 2000 – СПБ.: БХВ-Петербург, 2002.
  3. Документация Microsoft SQL Server 2000.
  4. Документация Microsoft Office Access 2003.
  5. Материалы сайта «Сервер информационных технологий»  WEB: www.citforum.ru/database/articles/art_18.shtml

     www.citforum.ru/database/sql_kg/index.shtml

  1. Когаловский М.Р. Энциклопедия технологий баз данных. – М.: Финансы и статистика, 2002.
  2. Дейт К.Дж. Введение в системы баз данных. 6-е изд. - М.: Вильямс. 2000. – 317 с.
  3. Леонтьев В.П. ПК: универсальный справочник пользователя - М.: 2003. – 251 с.
  4. В.В. Фаронов Основы программирования в SQL. - М.: Издатель Молгачева С.В., 2002. – 329 с.
  5. Материалы сайтов www.sql-ex.ru/help.

                                  www.erudition.ru/referat/ref/id.35919_1.html

 

Приложение А

 

Таблица 1 Скалярные типы данных языка SQL

 

Тип данных

Объявления

boolean

(Логический)

BOOLEAN

character

(Символьный)

CHAR VARCHAR

bit

(Битовый)

BIT

BIT VARYING

exact numeric

(Точные числа)

NUMERIC

DECIMAL

INTEGER

SMALLINT

approximate numeric

(Округленные  числа)

FLOAT

REAL

DOUBLE

PRECISION

datetime

(Дата/время)

DATE

TIME

TIMESTAMP

interval

(Интервал)

INTERVAL

LOB

(Большой объект)

CHARACTER

LARGE

OBJECT

BINARY


 

 

 

 

 

 

 

 

 

 

 

 

Приложение Б

 

Таблица 2 Встроенные скалярные операторы и функции

 

Оператор Назначение

Оператор Назначение

BIT_LENGTH

Возвращает длину заданной строки в битах. Например, результат  вычисления выражения BIT_LENGTH(X'FFFF') равен 16

OCTET_LENGTH

Возвращает длину заданной строки в октетах (длина в битах, деленная на 8). Например, результат вычисления выражения OCTET_LENGTH (X'FFFF') равен 2

CHAR__LENGTH

Возвращает длину заданной строки в символах(или в октетах, если строка является битовой). Например, результат вычисления выражения CHAR_LENGTH ( ' Beech') равен 5

CAST

Преобразует значение выражения, построенного из данных одного типа, в  значение данных другого типа. В  качестве примера можно привести выражение CAST (Б .2Е6 AS INTEGER)

| |

Операция конкатенации, Соединенные с помощью этой операции две символьные или битовые строки преобразуются в одну строку.

CURRENTJJSER ИЛИ USER

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

SESSION_USER

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

SYSTEMJJSER

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

LOWER

Функция преобразует  в заданной строке все прописные  буквы в строчные. Например, в  результате вычисления выражения

LOWER(SELECT fName FROM Staff WHERE staffNo = 'SL21') будет получено значение 'john'

UPPER

Функций преобразует в заданной строке все строчные буквы в прописные. Например, в результате вычисления выражения UPPER(SELECT fName FROM Staff WHERE staffNo = SL21') будет получено значение 'JOHN'

TRIM

Функция удаляет указанные  ведущие (LEADING), конечные (TRAILING) или те и другие (BOTH) символы из заданной строки. Например, вычисление выражения TRIM (BOTH ' * ' FROM ' *** Hello World * * * ' ) даст результат 'Hello World1

POSITION

Функция возвращает позицию  одной строки в другой строке.

SUBSTRING

Функция выполняет выделение подстроки из заданной строки.

EXTRACT

Функция возвращает значение указанного поля из значения типа даты, времени или интервала. В качестве примера можно указать Выражение EXTRACT(YEAR FROM Registration.dateJoined)

CASE

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

CASE type

WHEN 'House' THEN 1

WHEN 'Flat' THEN 2

ELSE 0

END

CURRENT_DATE

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

CURRENTJTIME

Функция возвращает текущее  время того часового пояса, который  в настоящее время применяется  по умолчанию для текущего сеанса, Например, выражение CTJRRENTJTIME (6) возвращает текущее время с точностью до микросекунд

CURRENT_TIME_STAMP

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

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