Данные в реляционных базах данных, в частности в InterBase, хранятся в плоских таблицах. В каждом столбце таблицы хранятся данные одного определенного типа. При этом нужно помнить, что данные, по которым осуществляется поиск, должны быть простого (неструктурированного) типа, для которого определены операции сравнения. Данные других типов допускаются, если можно так сказать, "в порядке исключения" и для работы с ними используются средства, выходящие за пределы стандарта SQL.

Приведем перечень обрабатываемых в InterBase типов данных.

SMALLINT - слово, короткое целое (2-байтовое) со знаком (от -32 768 до 32 767).

INTEGER - двойное слово, длинное целое (4-байтовое) со знаком (от -2 147 483 648 до 2 147 483 647).

FLOAT - числа с плавающей точкой одинарной точности (4 байта) -7 значащих цифр.

DOUBLE PRECISION - числа с плавающей точкой двойной точности (8 байтов) - 15 значащих цифр.

DECIMAL (размер, точность) / NUMERIC (размер, точность). Размер переменной (от 1 до 15) указывает гарантированную точность переменной, то есть число значащих цифр. Точность (от 1 до 15) задает число цифр после запятой (должно быть меньше или равно размеру). Например, DECIMAL(10,3) содержит числа в формате: ppppppp.sss

Типы данных DECIMAL и NUMERIC имеют смысл только для внешнего представления данных. В базе они реально хранятся в одном из основных числовых форматов (SMALLINT, INTEGER, FLOAT или DOUBLE PRECISION).

• Если размер и точность не указаны, то данные хранятся как

INTEGER (от -2 147 483 648 до 2 147 483 647). ''

• Если точность не указана, то принимается 0. Хранимый тип при этом будет зависеть от размера. Если размер меньше 5, то SMALLINT. Если размер е [5, 9] , то INTEGER. Если размер больше 9, то DOUBLE PRECISION.

• Если указаны и размер, и точность, то хранимый тип будет зависеть от введенной величины размера. Если размер меньше 5, то SMALLINT. Если размер е[5, 9] , то INTEGER. Если размер больше 9, то DOUBLE PRECISION. То есть, числа типа ppp.ss хранятся, как pppss.

DATE в версии до 6 или TIMESTAMP в версиях от 6 (8 байт) с 1.01.100 до 29.02.32768, включает также данные о времени; DATE в версии от 6 - 4 байта (только дата); TIME в версии от 6 - 4 байта (только время).

CHAR(n) / CHARACTER(n) n символов (от 1 до 32 767 байт) - строка фиксированной длины; максимальная длина - 32К.

CHARACTER VARYING(n) / VARCHAR(n) / CHAR VARYING(n) n символов (от 1 до 32 767 байт) - строка переменной длины; максимальная длина - 32К.

NCHAR(n) / NATIONAL CHARACTER(n) / NATIONAL CHAR(n) n символов (от 1 до 32 767 байт) - строка фиксированной длины, использующая кодовый набор IS08859_1.

NCHAR VARYING (n) / NATIONAL CHARACTER VARYING (n) / NATIONAL CHAR VARYING (n) n символов (от 1 до 32 767 байт) -строка переменной длины, использующая кодовый набор IS08859_1.

BLOB [SUB TYPE { int | subtypename}] [SEGMENT SIZE int] [CHARACTER SET chamame] / BLOB [( seglen [, subtype])].

SUB_TYPE:

• 0 - неструктурированный, обычно используется для двоичных данных или данных неопределенного типа

• 1 - текст

• 2 - двоичное языковое представление BLR (Binary language representation)

• 3 - Access controllist

• 4 - зарезервировано

• 5 - закодированное описание метаданных текущей таблицы

• 6 - описание ненормально завершенной транзакции к нескольким базам

• <0 - пользовательский тип

SEGMENT SIZE - размер блока, через который осуществляется чтение-запись данных BLOB в приложениях, использующих embedded SQL.

Все перечисленные типы данных, кроме BLOB, могут быть организованы в массивы. Массивы могут содержать от 1 до 16 измерений. При необходимости размеры массива по каждому из измерений указываются в квадратных скобках. Например, VesMes[12], Abc[10,4,5].

Границы по измерению могут быть указаны явно, например VesT[5:8]. В этом случае массив будет состоять из четырех элементов: VesT[5], VesT[6], VesT[7], VesT[8].

Заметим, что массив не может быть элементом массива. Нумерация элементов массива начинается с 1, если границы не были заданы явно.

Глава 4 | Введение в InterBase | 4.2. домены


Введение в InterBase



Новости за месяц

  • Февраль
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс