Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Базы данных

г. Значения типа CHAR(n) и VARCHAR(n)

В полях этих типов допускается хранение строки символов размером не более 32 Кбайт. Различия между типами:

  • CHAR(n) — на жестком диске для хранения значения отводится жестко фиксированный размер п символов. Если хранимое значение содержит менее п символов, то добавляются пробелы справа независимо от хранимого значения. При хранении строки меньшей длины на винчестере хранится истинное количество символов. При чтении значения с винчестера автоматически добавляются конечные пробелы до размера п
  • VARCHAR(n) — на жестком диске для хранения значения фактически отводится необходимое количество памяти, но не более п разрядов.

Таким образом, тип VARCHAR(n) более экономно расходует дисковое пространство. Но чтение формата VARCHAR(n) производится медленнее, чем формата CHAR(n).

д. Поля типа BLOB

Поля типа BLOB размера не имеют и предназначены для хранения информации произвольного типа в двоичной форме:

  • • графические данные;
  • • текстовые данные большой длины;
  • • звуковые данные;
  • • видеоизображения.

В поле таблицы хранится ссылка на соответствующую страницу типа BLOB в базе данных и на номер первого сегмента.

Чтение AELOAE-страницы выполняется по сегментам. По умолчанию размер сегмента установлен в 80 байт. Программист может увеличить размер сегмента, но не более 32 Кбайт. Для определения размера сегмента используют параметр SEGMENT SIZE. Указатель на сегмент формируется автоматически и представляет собой уникальное целочисленное значение.

Для идентификации информации, размещенной в поле типа BLOB, в СУБД InterBase определены подтипы. Подтип описывается с помощью ключевого слова SUB TYPE. Положительные целочисленные номера подтипов зарезервированы за СУБД InterBase, а отрицательные программист может использовать по своему усмотрению. Так, номер подтипа 0 говорит о том, что в поле типа BLOB помещена информация в виде двоичных кодов (значение по умолчанию); номер подтипа 1 говорит о том, что в поле типа BLOB помещена информация в виде Д5С//-текстов. Номера подтипов могут быть присвоены полям типа BLOB во время создания таблицы командой CREATE TABLE ...

Пример 5.13. Создать поле ANNOT типа BLOB для хранения текстовой информации в ASCII-кодах.

CREATE TABLE ВООК_9 • • •

ANNOTBLOB SUB TYPE 1 CHARACTER SET WIN1251,

Для работы с полем типа BLOB в серверной части приложения базы данных предусмотрены 5105-фильтры, которые определяют преобразование сохраняемой информации, помещаемой в поле типа BLOB, из одного вида в другой вид. В клиентской части приложения базы данных для отображения содержимого поля типа BLOB используют различные визуальные компоненты. Например, для отображения графической информации используют компоненты DBImage и Image, текстовой информации — RichEdit, Memo и т. д.

За правильность помещаемой информации в поле типа BLOB отвечает программист.

В серверной части для преобразования из одного типа в другой предусмотрена функция CAST.

Пример 5.14. Преобразование из типа CHAR в тип DATE.

SELECT ... WHERE Date sale <= CAST (Date doc AS CHAR)

е. Массивы

В InterBase допускается создание одномерных и многомерных массивов, которые хранятся внутри поля. При создании таблицы определяется тип поля и размерность массива.

Massl INTEGERS],

Mass2 INTEGER [3,4,5], Mass3 VARCHAR(IO) [10],

Нумерация элементов массива начинается с единицы. Если нумерацию элементов массива необходимо начать с нуля, как это принято в Ое1рЫ, то границы массива надо указать явно

Massl INTEGER[0:8],

Mass2 INTEGER [0:3, 0:4, 0:5], Mass3 VARCHAR(IO) [0:10],

InterBase обрабатывает массивы как поля типа BLOB. Использование массивов в базе данных является неэффективным, так как вместо массива проще создать новую подчиненную таблицу.

 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Пред   СОДЕРЖАНИЕ   След >
 

Популярные страницы