Структура языка 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 Кб (Скачать файл)

INTERVAL HOUR TO SECOND(4)

Это объявление описывает интервал времени, значение которого может изменяться от 0 часов, 0 минут, 0 секунд до 99 часов, 59 минут 59.9999 секунды. (Число дробных десятичных знаков для секунд установлено равным 4).

Скалярные операторы.

Язык SQL включает некоторое количество встроенных скалярных операторов и  функций, которые могут использоваться для построения скалярных выражений, т.е. выражений, вычисление которых дает скалярный результат. Помимо обычных арифметических операторов (+, -, * и /) в языке определены и другие операторы, представленные в таблице 2 (см. Приложение Б).

 

1.2 Обязательные данные. Ограничения для доменов

 

Для некоторых столбцов требуется наличие в каждой строке таблицы конкретного и допустимого значение, отличного от неопределенного значения (или значения NULL). Значение NULL не следует путать с пустыми строковыми значениями или нулевыми числовыми значениями; оно служит для представления данных, которые в данный момент недоступны, отсутствуют или не определены. Например, каждый работник обязательно занимает ту или иную должность: менеджер, заместитель и т.п. Для задания ограничений подобного типа стандарт ISO предусматривает использование спецификатора NOT NULL, указываемого в операторах CREATE TABLE и ALTER TABLE. Если для столбца задан спецификатор NOT NULL, система отвергает любые попытки вставить в такой столбец пустое значение. А если при определении характеристик столбца задан спецификатор NULL, то система допускает размещение в этом столбце значений NULL. В соответствии со стандартом ISO по умолчанию применяется спецификатор NULL. Например, для указания того, что столбец position (Должность) в таблице Staff (Персонал) не может содержать пустых значений, следует определить его, как показано ниже. position VARCHAR(IO) NOT NULL

Ограничения для доменов.

Каждый столбец имеет  собственный домен, т.е. некоторый  набор допустимых значений. Например, для определения пола работника достаточно всего двух значений, поэтому домен для столбца sex (Пол) таблицы Staff можно определить как набор из двух строк длиной в один символ со значением либо 'М', либо ' F ' . Стандарт ISO предусматривает два различных механизма определения доменов в операторах CREATE TABLE и ALTER TABLE. Первый состоит в использовании конструкции CHECK, позволяющей задать требуемые ограничения для столбца или таблицы в целом. Конструкция CHECK имеет следующий формат:

CHECK {searchCandition}

При определении ограничений для  отдельного столбца в конструкции CHECK можно ссылаться только на определяемый столбец. Например, для указания того, что столбец sex может содержать лишь два допустимых значения ('М' и 'F'), следует объявить его таким образом:

Sех CHAR NOT NULL CHECK {sex IN ‘M’ , ' F’ }

Однако стандарт ISO позволяет  определять и более сложные домены, для чего предназначен второй механизм — использование оператора CREATE DOMAIN, имеющего следующий формат:

CREATE DOMAIN domainWame [AS] datatype

[DEFAULT defaultOption]

[CHECK (searcftCoriditicn)]

Каждому создаваемому домену присваивается  имя, задаваемое параметром domainName, тип данных, определяемый параметром dataType , необязательное значение по умолчанию, устанавливаемое параметром defaulCOption, и необязательный набор допустимых значений, определяемый в конструкции CHECK. Следует отметить, что приведенный формат оператора CREATE DOMAIN является неполным, однако его достаточно для демонстрации основных возможностей. Таким образом, в условиях предыдущего примера мы могли бы определить домен для столбца sex с помощью следующего оператора:

CREATE DOMAIN SexType AS CHAR

DEFAULT 'M'

CHECK (VALUE IN {' M ' , ' F ' } ) ;

В результате обработки этого оператора  в базе данных будет создан домен  под именем SexType, состоящий из двух отдельных символов, имеющих значения “М” и 'F'. Теперь столбец sex в таблице Staff можно будет описать, используя домен SexType вместо определителя типа данных CHAR:

sex SexType NOT NULL

Значение параметра searchCondicion может  предусматривать обращение к  справочной таблице. Например, можно создать домен BranchNumber (Номер отделения), который позволит вводить в соответствующие столбцы различных таблиц только те значения, которые уже существуют в столбце branchNo таблицы Branch. Для этой цели необходимо использовать следующий оператор:

CREATE DOMAIN BranchNumber AS VARCHAR(4)

CHECK (VALUE IN (SELECT branchNo PROM Branch));

Удаление доменов из базы данных выполняется с помощью оператора DROP DOMAIN, имеющего следующий формат:

DROP DOMAIN domainName [RESTRICT | CASCADE]

Спецификатор способа удаления домена (RESTRICT или CASCADE) определяет, какие  действия выполняются в базе данных, если домен в настоящее время  используется. Если задан спецификатор RESTRICT, а домен применяется в  существующей таблице, представлении  или определении проверки, то операция удаления оканчивается неудачей. А если задан спецификатор CASCADE, то в любой столбец таблицы, который основан на определении домена, автоматически вносятся изменения таким образом, чтобы в нем применялся базовый тип данных домена, а любые ограничения или применяемые по умолчанию конструкции операторов для этого домена заменяются в случае необходимости ограничениями столбца или применяемой по умолчанию конструкцией оператора для соответствующего столбца.

 

1.3 Целостность сущностей. Ссылочная целостность

 

Первичный ключ таблицы должен иметь  уникальное непустое значение в каждой ее строке. Например, каждая строка таблицы PropertyForRent должна содержать уникальное значение номера объекта недвижимости, помещенное в столбец propertyNo; именно оно будет уникальным образом определять объект недвижимости, представленный этой строкой таблицы. Стандарт ISO позволяет задавать подобные требования поддержки целостности данных с помощью конструкции PRIMARY KEY в операторах CREATE TABLE и ALTER TABLE. Например, для определения первичного ключа таблицы PropertyForRent можно использовать следующую конструкцию:

PRIMARY KEY(staffNo)

В случае составного первичного ключа, например, первичного ключа таблицы Viewing, состоящего из двух столбцов под именами clientNo и propertyNo, конструкция определения первичного ключа PRIMARY KEY будет иметь вид

PRIMARY KEY(clientNo, propertyNo)

Конструкция PRIMARY KEY может указываться  в определении таблицы только один раз. Однако существует возможность  гарантировать уникальность значений и для любых альтернативных ключей таблицы, для чего предназначено ключевое слово UNIQUE. Кроме того, при определении столбцов альтернативных ключей рекомендуется использовать и спецификаторы NOT NULL. В каждой таблице может быть определено произвольное количество конструкций UNIQUE. База данных отвергает любые попытки выполнения операций INSERT или UPDATE, которые влекут за собой создание повторяющегося значения в любом потенциальном ключе (под этим подразумевается первичный или альтернативный ключ). Например, определение таблицы Viewing можно переписать следующим образом:

clientNo VARCHAR{5) NOT NULL,

propertyNo VARCHAR(S) NOT NULL,

UNIQUE (clientNo, propertyNo)

Ссылочная целостность.

Внешние ключи представляют собой  столбцы или наборы столбцов, предназначенные для связывания каждой из строк дочерней таблицы, содержащей этот внешний ключ, со строкой родительской таблицы, содержащей соответствующее значение потенциального ключа. Понятие ссылочной целостности означает, что если поле внешнего ключа содержит некоторое значение, то оно обязательно должно ссылаться на существующую допустимую строку в родительской таблице. Например, значение в столбце номера отделения branchNo таблицы PropertyForRent всегда должно связывать данные об объекте недвижимости с конкретной строкой таблицы Branch, соответствующей тому отделению компании, за которым закреплен этот объект недвижимости. Если столбец с номером отделения не пуст, он обязательно должен являться допустимым значением столбца branchNo таблицы Branch. В противном случае объект недвижимости будет закреплен за несуществующим отделением компании.

Стандарт ISO предусматривает механизм определения внешних ключей с  помощью конструкции FOREIGN KEY операторов CREATE TABLE и ALTER TABLE. Например, для определения внешнего ключа branchNo в таблице PropertyForRent можно использовать следующую конструкцию:

FOREIGN KEY(branchNo) REFERENCES Branch

Теперь система отклонит выполнение любых операторов INSERT или UPDATE, с помощью  которых будет предпринята попытка создать в дочерней таблице значение внешнего ключа, не соответствующее одному из уже существующих значений потенциального ключа родительской таблицы. Действия системы, выполняемые при поступлении операторов UPDATE или DELETE, содержащих попытку обновить или удалить значение потенциального ключа в родительской таблице, которому соответствует одна или несколько строк дочерней таблицы, зависят от правил поддержки ссылочной целостности, указанных в конструкциях ON UPDATE и ON DELETE конструкции FOREIGN KEY. На тот случай, если пользователь предпринимает попытку удалить из родительской таблицы строку, на которую ссылается одна или несколько строк дочерней таблицы, в языке SQL предусмотрены следующие четыре допустимых варианта действий.

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

• SET NULL. Выполняется удаление строки из родительской таблицы, а во внешние  ключи всех ссылающихся на нее  строк дочерней таблицы заносятся  значения NULL. Этот вариант применим только в том случае, если в определении  столбца внешнего ключа отсутствует ключевое слово NOT NULL.

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

• NO ACTION. Операция удаления строки из родительской таблицы отвергается. Именно это значение используется по умолчанию в тех случаях, когда в описании внешнего ключа конструкция ON DELETE опущена. Те же правила применяются в языке SQL и тогда, когда значение потенциального ключа родительской таблицы обновляется. В случае использования правила CASCADE в столбцы внешнего ключа дочерней таблицы помещается новое, измененное значение потенциального ключа родительской таблицы. Аналогичным образом, обновления каскадно распространяются на другие таблицы, если их внешние ключи ссылаются на обновленные столбцы дочерней таблицы. Например, в таблице PropertyForRent столбец табельного номера работника staff No является внешним ключом, ссылающимся на таблицу staff. Для этого внешнего ключа можно установить правило удаления, указывающее, что в случае удаления записи о работнике из таблицы staff соответствующее значение в столбце staffNo таблицы PropertyForRent должно быть заменено значением NULL:

FOREIGN KEY (staffNo} REFERENCES Staff ON DELETE SET NULL

Аналогичным образом, столбец с  номером владельца объекта недвижимости ownerNo таблицы PropertyForRent является внешним ключом, связывающим ее с таблицей PrivateOwner. Можно установить правило обновления, указывающее, что в случае изменения номера владельца в таблице PrivateOwner соответствующие значения в столбце ownerNo таблицы PropertyForRent также должны быть заменены новым значением:

FOREIGN KEY {ownerNo) REFERENCES PrivateOwner ON UPDATE CASCADE

 

1.4 Требования данного предприятия

 

Обновления данных в таблицах могут  быть ограничены существующими в  данной организации требованиями (которые принято также называть деловым регламентом), установленными в отношении выполнения вручную операций, связанных с внесением изменений в информацию. Например, в компании DreamHome существует правило, ограничивающее количество сдаваемых в аренду объектов, за которые может отвечать один работник, причем верхний предел установлен равным ста объектам. Стандарт ISO позволяет реализовать деловой регламент предприятий либо с помощью конструкций CHECK и ключевого слова UNIQUE в операторах CREATE TABLE и ALTER TABLE, либо с помощью оператора CREATE ASSERTION. Использование конструкции CHECK и ключевого слова UNIQUE уже обсуждалось выше в этом разделе. Оператор CREATE ASSERTION предназначен для введения ограничений целостности данных, которые непосредственно не связаны с определениями таблиц. Этот оператор имеет следующий формат:

CREATE ASSERTION ArsercicnNane

CHECK   (searchCondion);

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

CHEATS ASSERTION Staff NotHandlingTooMuch

CHECK (NOT EXISTS (SELECT staff No

FROM PropertyForRent

GROUP BY staffNo

HAVING COUNT(*} > 100))

В следующем разделе показано, как  используются эти средства обеспечения  целостности в операторах CREATE TABLE и ALTER TABLE.

 

2 Определение данных. Представления. Использование транзакций. Управление доступом к данным

 

Язык определения данных SQL DDL (Data Definition Language) позволяет создавать  и уничтожать такие объекты базы данных, как схемы, домены, таблицы, представления и индексы. В настоящем  разделе кратко рассматриваются способы создания и удаления схем, таблиц и индексов, а в следующем разделе показано, как создавать и удалять представления. Стандарт 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

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

2.1 Определение данных

 

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

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

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