Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Типы данных. В языке sql/89 поддерживаются следующие типы данных: character, numeric, decimal,integer, smallint, float




 

В языке SQL/89 поддерживаются следующие типы данных: CHARACTER, NUMERIC, DECIMAL,INTEGER, SMALLINT, FLOAT, REAL, DOUBLE PRECISION. Эти типы данных классифицируются на типы строк символов, точных чисел и приблизительных чисел. К первому классу относится CHARACTER. Спецификатор типа имеет вид CHARACTER (lenght), где lenght задает длину строк данного типа. Заметим, что в SQL/89 нет типа строк переменного размера, хотя во многих реализациях они допускаются. Литеральные строки символов изображаются в виде 'последовательность символов' (например, 'example'). Представителями второго класса типов являются NUMERIC, DECIMAL (или DEC), INTEGER (или INT) и SMALLINT. Спецификатор типа NUMERIC имеет вид NUMERIC [(precision [, scale]). Специфицируются точные числа, представляемые с точностью precision и масштабом scale. Здесь и далее, если опущен масштаб, то он полагается равным 0, а если опущена точность, то ее значение по умолчанию определяется в реализации.

 

Спецификатор типа DECIMAL (или DEC) имеет вид NUMERIC [(precision [, scale]). Специфицируются точные числа, представленные с масштабом scale и точностью, равной или большей значения precision. INTEGER специфицирует тип данных точных чисел с масштабом 0 и определяемой в реализации точностью. SMALLINT специфицирует тип данных точных чисел с масштабом 0 и определяемой в реализации точностью, не большей, чем точность чисел типа INTEGER. Литеральные значения точных чисел в общем случае представляются в форме

[+|-] <целое-без-знака> [.<целое-без-знака>].

 

Наконец, в классу типов данных приблизительных чисел относятся типы FLOAT, REAL и DOUBLE PRECISION. Спецификатор типа FLOAT имеет вид FLOAT [(precision)]. Специфицируются приблизительные числа с двоичной точностью, равной или большей значения precision.

 

REAL специфицирует тип данных приблизительных чисел с точностью, определенной в реализации. DOUBLE PRECISION специфицирует тип данных приблизительных чисел с точностью, определенной в реализации, большей, чем точность типа REAL. Литеральные значения приблизительных чисел в общем случае представляются в виде

<литеральное-значение-точного-числа> E <целое-со-знаком>.

 

Заметим, что хотя с использованием языка SQL можно определить схему БД, содержащую данные любого из перечисленных типов, возможность использования этих данных в прикладных системах зависит от применяемого языка программирования. Весь набор типов данных можно использовать, только если программировать на ПЛ/1. Поэтому в некоторых реализациях SQL типы данных с масштабом и точностью вообще не поддерживаются.

Хотя правила встраивания SQL в программы на языке Си не определены в SQL/89, в большинстве реализаций, поддерживающих такое встраивание, имеется следующее соответствие между типами данных SQL и типами данных Си: CHARACTER соответствует строкам Си; INTEGER соответствует long; SMALLINT соответствует short; REAL соответствует float; DOUBLE PRECISION соответствует double(именно такое соответствие утверждено в стандарте SQL/92).

 

Заметим еще, что в большинстве реализаций SQL поддерживаются некоторые дополнительные типы данных, например, DATE, TIME, INTERVAL, MONEY. Некоторые из этих типов специфицированы в стандарте SQL/92, но в текущих реализациях синтаксические и семантические свойства таких типов могут различаться.

В качестве примера практической реализации стандарта, рассмотрим типы данных поддерживаемых СУБД SQL Anywhere.

В SQL Anywhere типы хранимых данных можно объединить в следующие категории:

 

Символьные типы данных: для хранения строк символов и цифр.

Типы данных Character

CHAR [ (max-length) ]

| CHARACTER [ (max-length) ]

| CHARACTER VARYING [ (max-length) ]

| LONG VARCHAR

| VARCHAR [ (max-length) ]

 

 

Описание

 

CHAR [(max-length)] Символьные данные с длиной не превышающей max-length. Если max-length не указана, по умолчанию принимается 1. Максимальное значение 32,767.

 

CHARACTER [(max-length)] Тоже что CHAR[(max-length)].

VARCHAR [(max-length)] Тоже что CHAR[(max-length)].

CHARACTER VARYING[(max-length)] Тоже что CHAR[(max-length)].

LONG VARCHAR Символьные данные произвольной длины. Максимальный размер ограничен размером файла базы данных (2GB для версии 5.5).

 

 

Числовые типы данных - для хранения числовых данных.

Типы данных Numeric

DECIMAL [ (длина [, точность ]) ]

| DOUBLE

| FLOAT [ (длина) ]

| INT

| INTEGER

| NUMERIC [ (длина [, точность ]) ]

| REAL

| SMALLINT

 

Описание

 

INT Целое число со знаком максимальное значение 2,147,483,647 занимает 4 байта.

INTEGER Тоже что INT.

SMALLINT Целое число со знаком максимальное значение 32,767 занимает 2 байта.

DECIMAL [ (длина [, точность ])] Десятичное число из <длина> цифр и <точность> - число знаков после десятичной точки. Значения по умолчанию <точность> = 6 and <длина> = 30.

Количество требуемой памяти можно вычислить по формуле:

 

2 + int((before+1) / 2) + int((after+1)/2)

 

NUMERIC [ (длина [, точность ]) ] Тоже что DECIMAL.

FLOAT [ (длина) ] Если длина не указана, тип дынных FLOAT аналогичен типу REAL. Если <длина> указана, тип FLOAT аналогичен REAL или DOUBLE, в зависимости от значения <длины>.

Тип FLOAT поддерживается на всех платформах. Типы REAL и DOUBLE зависят от реализации.

 

DOUBLE занимает 8 байт. Диапазон значений от 2.22507385850720160e-308 до 1.79769313486231560e+308. Точность DOUBLE до 15 значащих цифр.

REAL Занимает 4 байта. Диапазон значений от 1.175494351e-38 до 3.402823466e+38. Точность REAL до 6 значащих цифр.

Типы данных для хранения даты и времени.

Типы данных Date и time

 

DATE

| TIME

| TIMESTAMP

 

Описание:

 

DATE – предназначен для хранения календарной даты. Значение года может быть от 0001 до 9999. Тип DATE требует 4 байта.

TIMESTAMP – “момент времени” – содержит год, месяц, день, час, минуты, секунды и доли секунд. Тип DATE требует 8 байт памяти.

 

Типы данных Binary data

Бинарные(Двоичные) типы данных - для хранения двоичных данных, таких как изображения, документы и другие данные которые не интерпретируются СУБД(передаются пользователю только как единое целое для обработки).

 

BINARY [ (max-length) ]

| LONG BINARY

 

Описание

 

BINARY [(max-length)] Бинарные данные длиной не более max-length (в байтах). Если размер не указан, по умолчанию принимается 1. Максимально допустимый размер 32767. Тип BINARY аналогичен типу CHAR исключая операции сравнения.

LONG BINARY Двоичные данные произвольной длины. Максимальный размер ограничен размером файла БД (2 GB для файловой системы файл).

 

Тип данных, определенные пользователем (User-defined)

Типы данных определенные пользователем (иногда называемые доменами).

Являются псевдонимами для встроенных типов данных, включая длину и количество знаков после запятой (длину символьного выражения и тд). Дополнительно могут быть указаны DEFAULT -значения условия проверки CHECK. (И ограничения NOT Null)

Создаются оператором Create datatype.

 

Пример: создается тип данных street_address, который является символьными строками длиной 35 символов.

 

CREATE DATATYPE street_address CHAR(35)

Созданный тип данных может использоваться также как все встроенные типы данных.

Для удаления пользовательского типа данных используется оператор DROP DATATYPE:

 

DROP DATATYPE street_address

Контрольные вопросы

1. Типы данных поддерживаемые в различных стандартах SQL.

2. Перечислите числовые типы данных.

3. Перечислите типы данных для хранения символьных строк.

4. Типы данных для хранения календарных дат и времени.

 





Поделиться с друзьями:


Дата добавления: 2015-06-25; Просмотров: 970; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.