Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М. ГРУБЕР_SQL.doc
Скачиваний:
22
Добавлен:
18.04.2019
Размер:
1.4 Mб
Скачать

Типы данных в sql

Типы данных, распознаваемые стандартом SQL ANSI, состоят из символов и различных типов чисел, которые могут классифицироваться как точные числа и приблизительные числа.

Точные числовые типы — это номера, с десятичной точкой или без десятичной точки.

Приблизительные числовые типы — это номера в показательной (экспоненциальной по основанию 10) записи.

Для все прочих типов, отличия слишком малы чтобы их как-то классифицировать.

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

Значения по умолчанию обеспечены для всех типов, если размер аргумента отсутствует.

Типы ansi

Ниже представлены типы данных ANSI (имена в круглых скобках — это синонимы):

TEXT ТЕКСТ.

CHAR (CHARACTER) — Строка текста в формате, определенном реализацией. Размер аргумента здесь это единственное неотрицательное целое число, которое ссылается к максимальной длине строки. Значения этого типа, должны быть заключены в одиночные кавычки, например 'text'. Две рядом стоящие одиночные кавычки ('') внутри строки будет пониматься как одна одиночная кавычка (').

ПРИМЕЧАНИЕ: Здесь и далее, фраза определенный реализацией или зависящий от реализации, указывает, что этот аргумент или формат зависит от конкретной программы, в которой реализуются данные.

EXACT NUMERIC

ТОЧНОЕ ЧИСЛО

DEC (DECIMAL) — Десятичное число; то есть, число которое может иметь десятичную точку. Здесь аргумент размера имеет две части: точность и масштаб. Масштаб не может превышать точность. Сначала указывается точность, разделительная запятая и далее аргумент масштаба. Точность указывает сколько значащих цифр имеет число. Максимальное десятичное число составляющее номер —значение, определенное реализацией, равное или большее чем этот номер. Масштаб указывает максимальное число цифр справо от десятичной точки. Масштаб = 0 делает поле эквивалентом целого числа.

NUMERIC — Такое же как DECIMAL за исключением того, что максимальное десятичное не может превышать аргумента точности.

INT (INTEGER) — Число без десятичной точки. Эквивалентно DECIMAL, но без цифр справа от десятичной точки, то есть с масштабом, равным 0. Аргумент размера не используется (он автоматически устанавливается в значение, зависящее от реализации).

SMALLINT — Такое же как INTEGER, за исключением того, что, в зависимости от реализации, размер по умолчанию может (или не может) быть меньше, чем INTEGER.

APPROXIMATE NUMERIC — ПРИБЛИЗИТЕЛЬНОЕ ЧИСЛО

FLOAT — Число с плавающей запятой на основе 10 показательной функции. Аргумент размера состоит из одного числа, определяющего минимальную точность.

REAL — Такое же, как FLOAT, за исключением того, что никакого аргумента размера не используется. Точность установлена зависящей от реализации по умолчанию.

DOUBLE PRECISION (DOUBLE) — Такое же, как REAL, за исключением того, что точность, определяемая реализацией для DOUBLE PRECISION должна превышать определяемую реализацией точность REAL.

Эквивалентные типы данных в других языках

Когда используется вложение SQL в другие языки, значения, используемые и произведенные командами SQL, обычно сохраняются в переменных главного языка (см. Главу 25). Эти переменные должны иметь тип данных, совместимый со значениями SQL, которые они будут получать. В дополнениях, которые не являются частью официального SQL стандарта, ANSI обеспечивает поддержку при использовании вложения SQL в четыре языка: Паскаль, PL/I, КОБОЛ, и ФОРТРАН. Между прочим, он включает определение эквивалентов SQL для данных типов переменных, используемых в этих языках.

Эквиваленты типов данных четырех языков определенных ANSI:

PL/1

SQL ТИП ЭКВИВАЛЕНТ PL/1

CHAR CHAR

DECIMAL FIXED DECIMAL

INTEGER FIXED BINARY

FLOAT FLOAT BINARY

КОБОЛ

SQL ТИП ЭКВИВАЛЕНТ КОБОЛА

CHAR(<integer>) PIC X (<integer>)

INTEGER PIC S (<nines>) USAGE COMPUTATIONAL

NUMERIC PIC S (<nines with embedded V>) DISPLAY SING LEADING

SEPARATE

ПАСКАЛЬ

SQL ТИП ЭКВИВАЛЕНТ ПАСКАЛЯ

INTEGER INTEGER

REAL REAL

CHAR (<length>) PACKED ARRAY [1..<length>] OF CHAR

ФОРТРАН

SQL ТИП ЭКВИВАЛЕНТ ФОРТРАНА

CHAR CHAR

INTEGER INTEGER

REAL REAL

DOUBLE PRECISION DOUBLE PRECISION

Приложение C