DEC (или DECIMAL)
Десятичное число; то есть, число которое может иметь десятичную точку. Здесь аргумент размера имеет две части: точность и масштаб. Масштаб не может превышать точность. Сначала указывается точность, разделительная запятая и далее аргумент масштаба. Точность указывает сколько значащих цифр имеет число. Максимальное десятичное число составляющее номер - реализационно-определенное значение, равное или большее чем этот номер. Масштаб указывает максимальное число цифр справо от десятичной точки. Масштаб =нулю делает поле эквивалентом целого числа.
NUMERIC
Такое же как DECIMAL за исключением того, что максимальное десятичное не может превышать аргумента точности.
INT (или INTEGER)
Число без десятичной точки. Эквивалентно DECIMAL, но без цифр справа от десятичной точки, то-есть с масштабом равным 0. Аргумент размера не используется (он автоматически установливается в реализационно-зависимое значение).
SMALLINT
Такое же как INTEGER, за исключением того, что, в зависимости от реализации, размер по умолчанию может (или не может ) быть меньшее чем INTEGER.
APPROXIMATE NUMERIC
ПРИБЛИЗИТЕЛЬНОЕ ЧИСЛО
|
FLOAT |
Число с плавающей запятой на основе 10 показа тельной функции. Аргумент размера состоит из одного числа определяющего минимальную точность. |
|
REAL |
Такое же как FLOAT, за исключением того, что никакого аргумента размера не используется. Точность становлена реализационно-зависимую по умолчанию. |
|
DOUBLE |
Такое же как REAL, за исключением того, что реаPRECISION лизационно-определяемая точность для DOUBLE PRE( или DOUBLE ) CISION должна превышать реализационно-определяемую точность REAL. |
Когда используется вложение SQL в другие языки, значения используемые и произведенные командами SQL, обычно сохраняются в переменных главного языка( см. Главу 25). Эти переменные должны иметь тип данных совместимый со значениями SQL, которые они будут получать. В дополнениях, которые не являются частью официального SQL стандарта, ANSI обеспечивает поддержку при использовании вложения SQL в четыре языка: Паскаль, PL/I, КОБОЛ, и ФОРТРАН. Между прочим, он включает определение эквивалентов SQL, для данных типов переменных используемых в этих языках.
Эквиваленты типов данных четырех языков определенных ANSI:
ПЛ/I
|
SQL ТИП |
ЭКВИВАЛЕНТ ПЛ/I |
|
CHAR |
CHAR |
|
DECIMAL |
FIXED DECIMAL |
|
INTEGER |
FIXED BINARY |
|
FLOAT |
FLOAT BINARY |
КОБОЛ
|
SQL ТИП |
ЭКВИВАЛЕНТ КОБОЛА |
|
CHAR (<integer>) |
PIC X (<integer>) |
|
INTEGER |
PIC S (<nines>) USAGE COMPUTTATIONAL |
|
NUMERIC |
PIC S (< nines with embedded V > )DISPLAY SING LEADING SEPERATE |
ПАСКАЛЬ
|
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. НЕКОТОРЫЕ ОБЩИЕ НЕСТАНДАРТНЫЕ СРЕДСТВА SQL
ИМЕЕТСЯ РЯД ОСОБЕННОСТЕЙ ЯЗЫКА SQL которые пока не определены как часть стандарта ANSI или стандарта ISO (Международная Организация По Стандартизации), и являются общими для многочисленных реализаций, так как они были получены для практического использования. Это дополнительные элементы чисел этих особенностей. Конечно, эти особенности меняются от программы к программе, и их обсуждение предназначено только чтобы показать некоторые общие подходы к ним.
Типы данных поддерживаемые стандартом SQL, собраны в Приложении B. Это колличество для CHARACTER и разнообразие числовых типов. Реализация их может, фактически, быть значительно сложнее чем показано в терминах типов, которые они фактически могут использовать. Мы будем здесь обсуждать ряд таких нестандартных типов данных.
Как упомянуто в Главе 2, тип данных DATE широко поддерживается, даже если он не часть стандарта. Мы использовали ранее в нашей таблице Порядков, этот тип использующий формат mm/dd/yyyy. Это стандартный формат IBM в США. Разумеется возможны и другие форматы, и программные реализации часто поддерживают ряд форматов, позволяя вам выбирать тот который лучше для вас подходит. Реализация которая предлагает эту особенность должна быть способна преобразовывать дату одного формата в другой - автоматически.
Имеются несколько основных форматов даты с которыми вы можете сталкнуться:
|
Стандарт |
Формат |
Пример |
|
Международная Организация По Стандартизации (ISO) |
yyyy-mm-dd |
1990-10-31 |
|
Японский Индустриальный Стандарт (JIS) |
yyyy-mm-dd |
1990-10-31 |
|
IBM Европейский Стандарт (EUR) |
dd.mm.yyyy |
10.31.1990 |
Наличие специального типа определяемого для даты, дает возможность выполнять арифметические операция с датами. Например, вы можете добавлять число дней к дате и получать другую дату, в программе, самостоятельно следящей за числом дней в месяцах, високосными годами, и так далее. Даты могут также сравниваться; например фраза, дата A < дата B, означает, что дата A предшествует дате B по времени.
Кроме даты, большое количество программ определяют специальный тип для времени, который может также быть представлен в ряде форматов, включая следующие:
|
Стандарт |
Формат |
Пример |
|
МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ (ISO) |
hh-mm-ss |
21.04.37 |
|
Японский Индустриальный Стандарт (JIS ) |
hh-mm-ss |
21.04.37 |
|
IBM Европейский Стандарт |
hh-mm-ss |
21.04.37 |
|
IBM USA Стандарт(USA) |
hh.mm AM/PM |
9.04 PM |
Время может добавляться или сравниваться точно также как дата, с коррекцией числа секунд в минутах или часах автоматически. Кроме того, специально встроенные константы указывающие текущую дату или время (CURDATE или CURTIME ) являются общими. Они похожи на константу USER (Пользователь) в которой их значение будет непрерывно меняться.