Понимание SQL
Шрифт:
Для все прочих типов, отличия слишком малы чтобы их как-то классифицировать.
Иногда типы данных используют аргумент, который я называю размером аргумента, чей точный формат и значение меняется в зависимости отконкретного типа. Значения по умолчанию обеспечены для всех типов, если размер аргумента отсутствует.
Ниже представлены типы данных ANSI (имена в круглых скобках - это синонимы ):
TEXT
ТЕКСТ
CHAR (или CHARACTER) | Строка текста в реализационно-определенном формате. Размер агрумента здесь это единственное неотрицательное целое число которое ссылается к максимальной длине строки. Значения этого типа, должны быть заключены в одиночные кавычки, |
ПРИМЕЧАНИЕ:
Здесь и далее, фраза Реализационно-Определенный или Реализационно Зависимый, указывает, что этот аргумент или формат зависит от конкретной программы в которой реализуются данные.
EXACT NUMERIC
ТОЧНОЕ ЧИСЛО
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 |