
Текстовые типы
Существует два текстовых типа данных: CHARACTER(n) (в сокращенном варианте CHAR(n) )и CHARACTER VARYING(n) (в сокращенном вариантеVAR CHAR(n) ).
n - указывает количество символов в поле. В обоих типах n может быть от 1 до 32767 символов (32 Кбайт). Если n не указать, по умолчанию будет присвоено число 1. Пример создания полей:
CREATE TABLE Table_Text(
Kol_Char CHAR,
Kol_Varchar VARCHAR(255))
В первом случае будет создано поле размером 1 символ, во втором случае в поле можно сохранить текст размером до 255 символов. Между этими типами данных есть отличия. Тип CHAR предназначен для хранения текста фиксированной длины. Другими словами, если мы определим поле в 10 символов, а запишем только 5, то текст будет дополнен завершающими пробелами до полной длины. Тип VARCHAR хранит текст переменной длины, и возвращает сохраненный текст без завершающих пробелов. Тем самым, использование типа VARCHAR в большинстве случаев является предпочтительным.
Еще важными факторами при работе с текстовыми полями является кодировка символов и порядок их сортировки. Как мы знаем из прошлой лекции, при создании базы данных можно указать кодировку "по умолчанию", для кириллицы предпочтительней будет кодировка WIN1251. При этом все создаваемые текстовые поля будут иметь эту кодировку, в чем несложно убедиться, выполнив описанный выше запрос, и посмотрев вкладку Metadata созданной таблицы:
Рис. 16.5. Установки кодировки "по умолчанию"
Как видно из рисунка, с помощью оператора CHARACTER SET кодировку можно указать явно при описании поля:
CREATE TABLE Table_Text2(
Kol_Char CHAR CHARACTER SET WIN1251,
Kol_Varchar VARCHAR(255) CHARACTER SET ASCII)
Если кодировка указана явно, именно она и будет использована при создании столбца таблицы.
Для символьных полей также возможно указывать порядок сортировки COLLATE. Этот порядок определяет способ, по которому будут сортироваться и сравниваться текстовыеданные при выводе их оператором SELECT. Для кодировки WIN1251 это может быть сортировка WIN1251 или PXW_CYRL. В первом случае русские символы сортируются как
АБВ….эюя
что не очень удобно. Сортировка PXW_CYRL предпочтительней, она выводит русские символы в таком порядке:
аАбБ…яЯ
Пример:
CREATE TABLE Table_Text3(
Kol_Char CHAR CHARACTER SET WIN1251 COLLATE WIN1251,
Kol_Varchar VARCHAR(255) CHARACTER SET WIN1251 COLLATE PXW_CYRL)
Тип данных blob
BLOB ( Binary Large Object - Большой двоичный объект) - Поле неограниченного размера, может содержать любой тип двоичных данных, например, файл с фотографией, мелодией или цифровой книгой, или просто большой текст (аналог MEMO ). Пример определения поля:
CREATE TABLE Table_BLOB(
Kol_BLOB BLOB)
Поля BLOB несколько отличаются по способу хранения данных от других типов данных. Все остальные поля записи хранятся на одной странице рядом, одно за другим. Поле BLOBсохраняет на этой странице только идентификатор записи, а сама запись хранится на отдельной странице (страницах). Таким образом, оказалось возможным хранить данные большого размера, не ухудшая в целом работу всей БД.
У этого типа есть возможность указывать явно подтип: целое число, определяющее тип хранимых в поле данных. По умолчанию, 0 указывает на двоичные данные и 1 указывает наASCII - текст. Программист может указывать собственные типы, используя отрицательные значения. Подтип указывается оператором SUB_TYPE:
CREATE TABLE Table_BLOB2(
Kol_BLOB BLOB SUB_TYPE -1)
Однако заметим, что эта возможность InterBase практически не используется программистами.