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

Автор работы: Пользователь скрыл имя, 01 Февраля 2011 в 18:35, курсовая работа

Краткое описание

Язык SQL является первым и пока единственным стандартным языком работы с базами данных, который получил достаточно широкое распространение. Есть еще один стандартный язык работы с базами данных, NDL (Network Database Language), который построен на использовании сетевой модели CODASYL1, но он применяется лишь в немногих разработках.

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

Введение...................................................................................................................3
1.Типы данных языка SQL, определенные стандартом ISO...............................5
1.1. Идентификаторы языка SQL...........................................................................5
1.2. Скалярные типы данных языка SQL..............................................................6
1.3 Точные числовые данные (тип exact numeric)................................................8
2. Средства поддержки целостности данных......................................................12
2.1. Обязательные данные.....................................................................................12
2.2. Ограничения для доменов.............................................................................13
2.3. Целостность сущностей.................................................................................15
2.4. Ссылочная целостность.................................................................................17
2.5. Требования данного предприятия................................................................19
3. Определение данных.........................................................................................22
3.1. Создание баз данных......................................................................................23
3.2. Создание таблиц (оператор CREATE TABLE)............................................25
3.3. Модификация определения таблицы (оператор ALTER TABLE).............28
3.4. Удаление таблиц (оператор DROP TABLE)................................................30
3.5. Создание индекса (оператор CREATE INDEX)..........................................31
3.6. Удаление индекса (оператор DROP INDEX)...............................................32
4. Представления...................................................................................................34
5. Использование транзакций ..............................................................................35
6. Управление доступом к данным......................................................................38
Заключение.............................................................................................................41 Глоссарий…………………...................................................................................44
Библиографический список.................................................................................45
Приложение…………………………………………………………………...

Содержимое работы - 1 файл

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

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

DATE

TIME [timePrecision] [WITH TIME 2ONS]

TIMESTAMP [timePrecision] [WITH TIME ZONE]

           Тип данных DATE используется для хранения календарных дат, включающих поля YEAR, MONTH и DAY. Тип данных TIME используется для хранения отметок времени, включающих поля HOUR, MINUTE и SECOND. Тип данных TIMESTAMP служит для совместного хранения даты и времени. Параметр timePrecision задает количество дробных десятичных знаков, определяющих точность представления значений в поле SECOND. Если этот параметр опущен, по умолчанию его значение для столбцов типа TIME принимается равным нулю (т.е. сохраняется целое количество секунд), тогда как для полей типа TIMESTAMP он принимается равным 6 (т.е. отметки времени сохраняются с точностью до микросекунд). Наличие ключевого слова WITH TIME ZONE определяет использование полей TIMEZONE_HOUR и TIMEZONE_MINUTE. Например, столбец date таблицы Viewing, представляющий дату (день, месяц и год) осмотра клиентом сдаваемого в аренду объекта, может быть определен следующим образом:

viewDate DATE

           Интервальный тип данных interval. Данные с интервальным типом используются для представления периодов времени. Любой интервальный тип данных состоит из набора полей: YEAR, MONTH, DAY, HOUR, MINUTE и SECOND. Существуют два класса данных с интервальным типом: интервалы год-месяц и интерналы сутки-время суток. В первом случае данные включают только два поля — YEAR и/или MONTH. Данные второго типа могут состоять из произвольной последовательности полей DAY, HOUR, MINUTE, SECOND.

           Данные интервального типа определяются следующим образом:

INTERVAL -{{startField TQ.endField} singleDatetimeField}

StartField = YEAR MONTH | DAY j HOUR | MINUTE

                 [ (intervaiLeadingFieldPrecisicm) ]

endField = YEAR | MONTH | DAY j .HOUR-.. | MINUTE | SECOND

                [(fractionalSecondsPrecision)]

singleDatetimeField = startPield |;SECONB

                [ (intervejlbeadingFie.IdPrecis.icm [,fractionalSecondsRrecision])]

           Для параметра startField должна быть всегда указана размерность первого поля (intervalLeadingFieldPrecision), которая по умолчанию принимается равной двум. Например:

INTERVAL YEAR(2) ТО MONTH

        Это объявление описывает интервал времени, значение которого может находиться между 0 годом, 0 месяцем и 99 годом, 11 месяцем. Еще один пример:

INTERVAL HOUR TO SECOND(4)

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

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

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

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

       • обязательные данные;

       • ограничения для доменов;

       • целостность сущностей;

       • ссылочная целостность;

       • требования конкретного предприятия.

       Эти ограничения могут быть определены в операторах CREATE TABLE и ALTER TABLE.

  

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

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

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

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

CHECK {searchCandition}

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

         Sех CHAR NOT NULL CHECK {sex IN CM1 , ' F 1 } )

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

CREATE DOMAIN domainWame [AS] datatype

[DEFAULT defaultOption]

[CHECK (searcftCoriditicn)]

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

CREATE DOMAIN SexType AS CHAR

DEFAULT 'M'

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

         В результате обработки этого оператора в базе данных будет создан домен под именем SexType, состоящий из двух отдельных символов, имеющих значения "М1 и '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, а домен применяется в существующей таблице, представлении или определении проверки (см. раздел 6.5.2), то операция удаления оканчивается неудачей. А если задан спецификатор CASCADE, то в любой столбец таблицы, который основан на определении домена, автоматически вносятся изменения таким образом, чтобы в нем применялся базовый тип данных домена, а любые ограничения или применяемые по умолчанию конструкции операторов для этого домена заменяются в случае необходимости ограничениями столбца или применяемой по умолчанию конструкцией оператора для соответствующего столбца.

  

           2.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) 
 

  
 

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

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

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