MaxEdu.ru

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

Само развитие языка SQL началось с непрерывного роста быстродействия, а также увеличения объема и структурной сложности хранимых данных, расширение круга пользователей информационных систем. В общей сложности это и привело к широкому распространению наиболее удобных и сравнительно простых для понимания табличных систем управления базами данных. Ведь база данных – это, прежде всего хранилище объектов данных, т.е. набора возможных понятий или событий, описываемых базой данных. Вместе с этим основными функциями базы данных являются систематизация информации (знаний) и возможность взаимосвязи объектов между собой.
В общей сложности структуру данных можно преобразовать в несложную двумерную таблицу. Главная идея реляционного подхода состоит в том, чтобы представить произвольную структуру данных в виде простой двумерной таблицы или, как говорят, нормализовать структуру. Исходя, из этого возникла такая необходимость использования универсального языка для доступа и управления данных в различных базах данных. В итоге этим языком стал SQL .
Для взаимодействия с базами данных язык SQL появился в середине 70-х и был разработан в рамках проекта экспериментальной реляционной СУБД System R. Исходное название языка SEQUEL только чуть-чуть отражает суть этого языка. Язык, конечно, был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционной базы данных, но на самом деле уже являлся полным языком базы данных, содержащим помимо операторов формулирования запросов и манипулирования базы, данных средства определения и манипулирования схемой базы данных. В языке отсутствовали средства синхронизации доступа к объектам базы данных со стороны параллельно выполняемых транзакций: с начала предполагалось, что необходимую синхронизацию неявно выполняет система управления базами данных СУБД [1] .
В последующем после появления на рынке двух уже пионерских СУБД– SQL/DS 1981 года и DB2 1983 года – SQL приобрел статус стандарта де-факто для профессиональных реляционных СУБД. В 1987 году SQL стал официальным международным стандартом языка баз данных, а в 1992 году вышел SQL второй версии этого стандарта.
Самой главной отличительной чертой SQL является его независимость от компьютерной среды, т.е. операционной системы и архитектуры . SQL –это есть инструмент, предназначенным для обработки и чтения информации, содержащейся в компьютерной базе данных.
При создании языка запросов нового поколения разработчики старались сделать его простым и легким в освоении инструментом для обращения к базе данных. И в итоге SQL стал слабо структурированным языком, особенно по сравнению с такими языками, как С или Pascal , и в то же время достаточно мощным и относительно легким для изучения.
Одним из наиболее важнейших шагов на пути к признанию SQL на рынке стало появление стандартов на этот язык. Обычно употребление стандарта SQL имеют в виду официальный стандарт, утвержденный Американским институтом национальных стандартов ( American National Standards Institute ) и Международной организацией по стандартам ( International Standards Organization ). Но существуют и другие важные стандарты SQL , включая SQL , реализованный в системе DB 2 компании IBM , и стандарт X / OPEN для SQL в среде UNIX . Этот стандарт, слегка пересмотренный в 1989 году, обычно называют стандартом « SQL -89», или « SQLI ».
1 Типы данных языка SQL
В этом разделе мы рассмотрим типы данных SQL, определенные стандартом ISO. И начнем с основных концепций к допустимому идентификатору языка SQL.
1.1 Идентификаторы языка SQL
В языке SQL идентификаторы предназначены для обозначения объектов в базе данных и являются именами таблиц, представлений и столбцов. Символы, которые могут использоваться в создаваемых пользователем идентификаторах языка SQL, должны быть определены как набор символов . Стандарт ISO задает набор символов, который должен использоваться по умолчанию; он включает строчные и прописные буквы латинского алфавита (A-Z, a-z), цифры ( -9) и символ подчеркивания (_). Допускается использование и альтернативного набора символов.
На формат идентификаторов накладываются следующие ограничения:
- должен начинаться с буквы;
- может иметь длину до 128 символов ;
- не может содержать пробелов.
1.2 Точные числовые данные
Тип точных числовых данных используется для определения чисел, которые имеют точное представление в компьютере. Следовательно числа состоят из цифр и необязательных символов (десятичной точки, знака "плюс" или "минус"). Данные определяются значностъю (precision) и длиной, дробной части (scale). Значность задает общее количество значащих десятичных цифр числа, в которое входят длина целой и дробной частей, но без учета самой десятичной точки. Дробная часть указывает количество дробных десятичных разрядов числа [2] . На примере это выглядит так, точное число -21 .751 имеет значность, равную 5 цифрам, и дробную часть длиной 3. Особой разновидностью точных чисел являются целые числа. Существует несколько способов определения данных точного числового типа:
NUMERIC [ precision - [, scale ] ]
DECIMAL [ precision [ , scale ] ]
INTEGER
SMALLXNT
Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию значность зависит от реализации. Тип INTEGER (обычно до 1 значащих цифр) используется для хранения больших положительных или отрицательных целых чисел. Тип SMALLXNT используется для хранения небольших положительных или отрицательных целых чисел. При использовании этого типа данных расход внешней памяти существенно сокращается.
Тип округленных числовых данных используется для описания данных, которые нельзя точно представить в компьютере, таких как действительных числа. Для представления округленных чисел или чисел с плавающей точкой используется экспоненциальная система обозначений, в которой число записывается с помощью мантиссы, умноженной на определенную степень десяти (порядок), на пример: 1 ЕЗ, +5.2Е6, - .2Е-4. Существует несколько способов определения данных с типом округленных числовых данных:
FLOAT [precision]
REAL
DOUBLE PRECISION
Параметр precision задает значность мантиссы . Значность определений типа REAL и DOUBLE PRECISION зависит от конкретной реализации.
Тип DATATIME (комбинация даты и времени) используется для определения моментов времени с некоторой установленной точностью. Примерами являются даты, отметки времени и время суток. Стандарт 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.
Интервальный тип данных используется для представления периодов времени. Любой интервальный тип данных состоит из набора полей: YEAR, MONTH, HOUR , DAY , 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
Это объявление описывает интервал времени, значение которого может находиться между годом, месяцем и 99 годом, 11 месяцем. Еще один пример:
INTERVAL HOUR TO SECOND (4)
Это объявление описывает интервал времени, значение которого может изменяться от часов, минут, о секунд до 99 часов, 59 минут 59.9999 секунды. (Число дробных десятичных знаков для секунд установлено равным 4.)
Скалярные операторы используются для построения скалярных выражений, т.е. выражений, вычисление которых дает скалярный результат. Помимо обычных арифметических операторов (+, -, * и /) в языке определены и другие операторы, представленные в таблице 1(См.Приложение).
1. 3 Скалярные типы данных языка SQL
Скалярные тапы данных языка SQL, которые определены стандартом ISO, предоставлены, в таблице № 2(См. Приложение). В некоторых случаях в целях упрощения манипулирования и преобразования, а также из-за сходства основных свойств данные типов character и bit объединяются названием "строковые типы данных", а данные типов exact numeric и approximate numeric - названием "числовые типы данных". В стандарте SQL определены также большие символьные и двоичные объекты.
Логические данные состоят из различимых истинностных значений TRUE (истинный) и FALSE (ложный). Логические данные поддерживают также истинностное значение UNKNOWN (неопределенный), заданное как значение NULL, если применение неопределенных значений-не запрещено ограничением NOT NULL. Все значения данных логического типа и истинностные значения SQL могут совместно применяться в операторах сравнения и присваивания. Значение TRUE в арифметических операторах сравнения больше значения FALSE, а любое сравнение, в котором участвует значение NULL или истинностное значение UNKNOWN, возвращает результат UNKNOWN.
Символьные данные состоят из последовательностей символов, входящих в определенный создателями СУБД набор символов. Поскольку наборы символов являются специфическими для различных диалектов языка SQL, перечень символов, которые могут входить в состав значений данных символьного типа, также зависит от конкретной реализации. В настоящее время чаще всего используются наборы символов ASCII и EBCDIC. Для определения данных символьного типа применяется следующий формат:
CHARACTER [VARYING] [length]
CHARACTER
CHARACTER VARYING
При определении столбца с символьным типом данных параметр length используется для указания максимального количества символов, которые могут быть помещены в данный столбец.
Символьная строка может быть определена как имеющая фиксированную или переменную длину. Если строка определена с фиксированной длиной, то при вводе в нее меньшего количества символов строковое значение дополняется до указанной длины пробелами, добавляемыми справа. Если строка определена с переменной длиной, то при вводе в нее меньшего количества символов в базе данных будут сохранены только введенные символы, что позволяет достичь определенной экономии внешней памяти.
Битовые данные используется для определения битовых строк, т.е. последовательности двоичных цифр (битов), каждая из которых может иметь значение либо 0, либо 1. Для определения данных битового типа используется формат, сходный с определением символьных данных:
OBIT IVARYING].
2 Средства поддержки целостности данных
Поддержка целостности данных включает средства задания ограничений, которые вводятся с целью защиты базы от нарушения согласованности сохраняемых в ней данных. Ниже приведенные ограничения могут быть определены в операторах CREATE TABLE и ALTER TABLE [ Документация Microsoft SQL Server 2000] .
2.1 Обязательные данные
Для некоторых столбцов требуется наличие в каждой строке таблицы конкретного и допустимого значение, отличного от неопределенного значения (или значения NULL). Значение NULL не следует путать с пустыми строковыми значениями или нулевыми числовыми значениями; оно служит для представления данных, которые в данный момент недоступны, отсутствуют или не определены. Для задания ограничений подобного типа стандарт ISO предусматривает использование спецификатора NOT NULL, указываемого в операторах CREATE TABLE и ALTER TABLE. Если для столбца задан спецификатор NOT NULL, система отвергает любые попытки вставить в такой столбец пустое значение. А если при определении характеристик столбца задан спецификатор NULL, то система допускает размещение в этом столбце значений NULL. В соответствии со стандартом ISO по умолчанию применяется спецификатор NULL.
2.2 Ограничения
Каждый столбец имеет собственный домен, т.е. некоторый набор допустимых значений. Стандарт ISO предусматривает два различных механизма определения доменов в операторах CREATE TABLE и ALTER TABLE. Первый состоит в использовании конструкции CHECK, позволяющей задать требуемые ограничения для столбца или таблицы в целом. Конструкция CHECK имеет следующий формат:
CHECK {searchCandition}
При определении ограничений для отдельного столбца в конструкции CHECK можно ссылаться только на определяемый столбец.
Однако стандарт ISO позволяет определять и более сложные домены, для чего предназначен второй механизм — использование оператора CREATE DOMAIN, имеющего следующий формат:
CREATE DOMAIN domainWame [AS] datatype
[DEFAULT defaultOption]
[ CHECK ( searcftCoriditicn )]
Каждому создаваемому домену присваивается имя, задаваемое параметром domainName , тип данных, определяемый параметром dataType, необязательное значение по умолчанию, устанавливаемое параметром defaulCOption , и необязательный набор допустимых значений, определяемый в конструкции CHECK. Следует отметить, что приведенный формат оператора CREATE DOMAIN является неполным, однако его достаточно для демонстрации основных возможностей.
Удаление доменов из базы данных выполняется с помощью оператора DROP DOMAIN , имеющего следующий формат:
DROP DOMAIN domainName [RESTRICT | CASCADE]
Спецификатор способа удаления домена (RESTRICT или CASCADE) определяет, какие действия выполняются в базе данных, если домен в настоящее время используется. Если задан спецификатор RESTRICT, а домен применяется в существующей таблице, представлении или определении проверки, то операция удаления оканчивается неудачей. А если задан спецификатор CASCADE, то в любой столбец таблицы, который основан на определении домена, автоматически вносятся изменения. Таким образом, чтобы в нем применялся базовый тип данных домена, а любые ограничения или применяемые по умолчанию конструкции операторов для этого домена заменяются в случае необходимости ограничениями столбца или применяемой по умолчанию конструкцией оператора для соответствующего столбца.
3 Определение данных
Язык определения данных SQL DDL (Data Definition Language) позволяет создавать и уничтожать такие объекты базы данных, как схемы, домены, таблицы, представления и индексы. В настоящем разделе кратко рассматриваются способы создания и удаления схем, таблиц и индексов, а в следующем разделе показано, как создавать и удалять представления [3] . Стандарт 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
Кроме того, администратор базы данных может воспользоваться дополнительными командами для уточнения параметров физического хранения данных.

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать полную версию
Рефераты по информатике Само развитие языка SQL началось с непрерывного роста быстродействия, а также увеличения объема и структурной сложности хранимых данных, расширение
Оценок: 632 (Средняя 5 из 5)

Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.

Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.

© 2014 - 2022 MaxEdu.ru