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

Автор работы: Пользователь скрыл имя, 04 Марта 2013 в 11:49, курсовая работа

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

Язык SQL является первым и пока единственным стандартным языком работы с базами данных, который получил достаточно широкое распространение. Есть еще один стандартный язык работы с базами данных, NDL (Network Database Language), который построен на использовании сетевой модели CODASYL, но он применяется лишь в немногих разработках. Практически все крупнейшие разработчики СУБД в настоящее время создают свои продукты с использованием языка SQL либо интерфейса SQL, и большинство таких компаний участвуют в работе, по меньшей мере, одной организации, которая занимается разработкой стандартов этого языка. В SQL сделаны огромные инвестиции как со стороны разработчиков, так и со стороны пользователей

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

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

Файлы: 1 файл

Базы данных- Структура языка SQL2.doc

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


 

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

Содержание.

Введение...................................................................................................................4

1.Типы данных языка SQL, определенные стандартом ISO...............................6

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

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

1.3 Точные числовые данные (тип exact numeric)................................................8

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

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

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

2.3. Целостность сущностей.................................................................................16

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

2.5. Требования данного  предприятия................................................................20

3. Определение данных.........................................................................................22

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

3.2. Создание таблиц (оператор CREATE TABLE)............................................24

3.3. Модификация определения  таблицы (оператор ALTER TABLE).............28

3.4. Удаление таблиц (оператор DROP TABLE)................................................29

3.5. Создание индекса  (оператор CREATE INDEX)..........................................30

3.6. Удаление индекса  (оператор DROP INDEX)...............................................32

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

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

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

Заключение.............................................................................................................40

Библиографический список..................................................................................43

Приложение............................................................................................................44

 

Введение.

Язык SQL является первым и пока единственным стандартным языком работы с базами данных, который получил достаточно широкое распространение. Есть еще один стандартный язык работы с базами данных, NDL (Network Database Language), который построен на использовании сетевой модели CODASYL, но он применяется лишь в немногих разработках. Практически все крупнейшие разработчики СУБД в настоящее время создают свои продукты с использованием языка SQL либо интерфейса SQL, и большинство таких компаний участвуют в работе, по меньшей мере, одной организации, которая занимается разработкой стандартов этого языка. В SQL сделаны огромные инвестиции как со стороны разработчиков, так и со стороны пользователей. Он стал частью архитектуры приложений (например, такой как System Application Architecture (SAA) корпорации IBM), а также является стратегическим выбором многих крупных и влиятельных организаций (например, консорциума Х/Open, занятого разработкой стандартов для среды UNIX), Язык SQL также принят в качестве федерального стандарта обработки информации (Federal Information Processing Standard — FIPS), который должен соблюдаться в СУБД для получения разрешения продавать ее на территории США. Консорциум разработчиков SQL Access Group прилагает усилия по созданию расширений языка SQL, которые позволят обеспечить взаимодействие разнородных систем.

Язык SQL используется в других стандартах и даже оказывает влияние  на разработку многих стандартов как  инструмент их определения. В качестве примера можно привести стандарты ISO "Information Resource Dictionary System" (IRDS) и "Remote Data Access" (RDA). Разработка языка вызвала определенную заинтересованность научных кругов, выразившуюся как в выработке необходимых теоретических основ, так и в подготовке успешно реализованных технических решений. Это особенно справедливо в отношении оптимизации запросов, методов распределения данных и реализации средств защиты. Начали появляться специализированные реализации языка SQL, предназначенные для новых рынков, такие как OnLine Analytical Processing (OLAP).

 

1.Типы данных языка SQL, определенные стандартом ISO.

В настоящем разделе описаны  типы данных, определенные стандартом ISO SQL. Начнем с определения требований к допустимому идентификатору языка SQL.

 

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

Идентификаторы языка SQL предназначены для обозначения объектов в базе данных и являются именами таблиц, представлений и столбцов. Символы, которые могут использоваться в создаваемых пользователем идентификаторах языка SQL, должны быть определены как набор символов. Стандарт ISO задает набор символов, который должен использоваться по умолчанию; он включает строчные и прописные буквы латинского алфавита (A-Z, a-z), цифры (0-9) и символ подчеркивания (_). Допускается использование и альтернативного набора символов.

На формат идентификаторов накладываются следующие ограничения:

•может иметь длину до 128 символов (большинство диалектов предусматривает  более жесткие ограничения);

•должен начинаться с буквы;

•не может содержать пробелов.

 

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

В табл. 1(смотрите приложение) перечислены скалярные типы данных языка SQL, которые определены стандартом ISO. В некоторых случаях в целях упрощения манипулирования и преобразования, а также из-за сходства основных свойств данные типов character и bit объединяются под названием "строковые типы данных", а данные типов exact numeric и approximate numeric — под названием "числовые типы данных". В стандарте SQL3 определены также большие символьные и двоичные объекты.

 

Логические данные (тип boolean).

Логические данные состоят из различимых истинностных значений TRUE (истинный) и FALSE (ложный). Логические данные поддерживают также истинностное значение UNKNOWN (неопределенный), заданное как значение NULL, если применение неопределенных значений-не запрещено ограничением NOT NULL. Все значения данных логического типа и истинностные значения SQL могут совместно применяться в операторах сравнения и присваивания. Значение TRUE в арифметических операторах сравнения больше значения FALSE, а любое сравнение, в котором участвует значение NULL или истинностное значение UNKNOWN, возвращает результат UNKNOWN.

 

Символьные данные (тип character).

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

CHARACTER [VARYING] [length]

CHARACTER (может. быть сокращено до СНАЕ.) и

CHARACTER VARYING (может быть- сокращено до VARCHAR)

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

Символьная строка может быть определена как имеющая фиксированную или  переменную (VARYING) длину. Если строка определена с фиксированной длиной, то при вводе в нее меньшего количества символов строковое значение дополняется до указанной длины пробелами, добавляемыми справа. Если строка определена с переменной длиной, то при вводе в нее меньшего количества символов в базе данных будут сохранены только введенные символы, что позволяет достичь определенной экономии внешней памяти. Например, столбец branchNo таблицы Branch с обозначением номера отделения имеет фиксированную длину четыре символа и может быть объявлен следующим образом:

branchNo CHAR(4)

Столбец address таблицы PrivateOwner имеет переменную длину значения {максимум до 30 символов), поэтому он может быть объявлен следующим образом:

address VARCHAR(30)

 

Битовые данные (тип bit)

Битовый тип данных используется для определения битовых строк, т.е. последовательности двоичных цифр (битов), каждая из которых может иметь значение либо 0, либо 1. Для опредеяения данных битового типа используется формат, сходный с определением символьных данных:

OBIT IVARYING] {length].

Например, для сохранения битовой  строки с фиксированной длиной и  значением ' ООН ' может быть объявлен столбец bitstring:

bitString BIT(4)

 

1.3Точные числовые данные (тип exact numeric).

Тип точных числовых данных используется для определения чисел, которые имеют точное представление в компьютере. Числа состоят из цифр и необязательных символов (десятичной точки, знака "плюс" или "минус"). Данные точного числового типа определяются значностъю (precision) и длиной, дробной части (scale). Значность задает общее количество значащих десятичных цифр числа, в которое входят длина целой и дробной частей, но без учета самой десятичной точки. Дробная часть указывает количество дробных десятичных разрядов числа. Например, точное число -12 .345 имеет значность, равную 5 цифрам, и дробную часть длиной 3. Особой разновидностью точных чисел являются целые числа. Существует несколько способов определения данных точного числового типа:

NUMERIC [ precision - [, scale] ]

DECIMAL [ precision [, scale] ]

INTEGER

SMALLXNT

INTEGER . (может быть сокращено до INT) и DECIMAL (до DEC)

Типы NUMERIC и DECIMAL предназначены для  хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию значность зависит от реализации. Тип INTEGER используется для хранения больших положительных или отрицательных целых чисел. Тип SMALLINT используется для хранения небольших положительных или отрицательных целых чисел. При использовании этого типа данных расход внешней памяти существенно сокращается. Например, максимальное абсолютное значение числа, которое может сохраняться в столбцах с типом данных SMALLINT, чаще всего составляет 32 767. Для столбца rooms таблицы PropertyForRent, в котором сохраняются сведения о количестве комнат сдаваемого в аренду объекта, можно выбрать тип SMALLINT и объявить его следующим образом:

rooms SMALLINT Столбец salary таблицы Staff может быть объявлен следующим образом:

salary DECIMAL(7,2)

В этом случае максимальное значение заработной платы составит 99 999.99 фунтов стерлингов,

Округленные числовые данные (тип approximate numeric)

Тип округленных числовых данных используется для описания данных, которые нельзя точно представить в компьютере, например действительных чисел. Для представления округленных чисел или чисел с плавающей точкой используется экспоненциальная система обозначений, в которой число записывается с помощью мантиссы, умноженной на определенную степень десяти (порядок), на пример: 10ЕЗ, +5.2Е6, -0.2Е-4. Существует несколько способов определения данных с типом округленных числовых данных:

FLOAT [precision]

REAL

DOUBLE PRECISION

Параметр precision задает значность мантиссы. Значность определений типа REAL и DOUBLE PRECISION зависит от конкретной реализации.

 

Дата и время (тип datetime)

Тип данных "дата/время" используется для определения моментов времени с некоторой установленной точностью. Примерами являются даты, отметки времени и время суток. Стандарт ISO разделяет тип данных "дата/время" на подтипы YEAR (Год), MONTH (Месяц), DAY (День), HOUR (Час), MINUTE (Минута), SECOND (Секунда), TIMEZONE_HOUR (Зональный час) и TIMEZONE_MINUTE (Зональная минута). Два последних типа определяют час и минуты сдвига зонального времени по отношению к всеобщему скоординированному времени (прежнее название — гринвичское время). Поддерживаются три типа полей даты/времени.

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

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