Понятие типов данных в реляционной модели данных соответствует понятию типа данных в языках программирования. В современных реляционных БД допускается хранение символьных, числовых данных, специальных числовых данных таких как "деньги", а также дат и времени.
В таблице 2.1 приведены основные типы данных, используемые в InterBase для полей таблиц, при описании доменов, для переменных внутри хранимых процедур и триггеров и для параметров в процедурах и функциях пользователя.
Домен – это описание множества допустимых значений поля таблицы. Описание домена показывает тип данных (например, число или строка), дли-ну данных и другие ограничения (например, требование, чтобы первый сим-вол был буквой или чтобы значение не превышало заданного числа). В InterBase домены используются только в операторах создания и изменения структуры таблиц.
Таблица 2.1 – Типы данных InterBase
Название | Размер | Диапазон/точность | Описание |
SQL диалект 1 | |||
INTEGER | 32 бита | от –2 147 483 648 до 2 147 483 647 | Длинное целое. |
SMALLINT | 16 бит | от –32 768 до 32 767 | Короткое целое. |
FLOAT | 32 бита | от 3,4х10P–38P до 3,4х10P38P | Число с одинарной точностью (точность 7 значащих цифр). |
DOUBLE PRECISION | 64 бита | от 1,7х10P-308P до 1,7х10P308P | Число с двойной точностью (точность 15 значащих цифр) |
DATE | 64 бита | от 1 января 100 года н.э. до 29 февраля 32768 года | Дата. Включает информацию о времени. |
CHAR(n) | n сим-волов | n = 1÷32767 | Строка символов фиксиро-ванной длины. |
VARCHAR(n) | n сим-волов | n = 1÷32767 | Строка символов переменной длины. |
BLOB | пере-менный | нет | Двоичные большие объекты, такие как графика, текст, циф-ровой звук. Содержание опре-деляется подтипом. |
SQL диалект 3 | |||
BIGINT | 64 бита | от -2P63P до 2P63P-1 | Большое целое. |
DATE | 32 бита | от 1 января 100 года н.э. до 29 февраля 32768 года | Только дата без информации о времени. |
TIME | 32 бита | от 00:00 до 23:59:9999 | Данные о времени с точно-стью до десятитысячной доли секунды. |
TIMESTAMP | 64 бита | Комбинация типов DATE и TIME. |
Для создания доменов используется команда CREATE DOMAIN, для изменения – ALTER DOMAIN, а для удаления – DROP DOMAIN.
|
|
Ниже приведен упрощенный синтаксис оператора создания домена.
CREATE DOMAIN Имя_Домена [ AS ] <тип данных> [ DEFAULT { Literal | NULL | USER} ] [ NOT NULL ] [ CHECK ( Проверяемое_Условие ) ];
При описании синтаксиса операторов квадратные скобки обозначают необязательный элемент, фигурные скобки объединяют группу элементов оператора в один, | означает выбор одной из нескольких альтернатив. Элемент, расположенный в угловых скобках должен поясняться отдельно.
В приведенном примере необязательный элемент
[ DEFAULT { Literal | NULL | USER} ]
позволяет задать значение столбца по умолчанию с использованием одной из трех возможностей. Первая возможность, обозначенная как Literal, позволяет задавать значения по умолчанию в виде текстовых констант, чисел и дат. Вторая возможность – указать в определении столбца DEFAULT NULL, что приведет к тому, что во вновь создаваемых записях значение этого столбца будет NULL. Третий способ – указать при определении столбца DEFAULT USER. Если в этом случае в таблицу будет вставлена строка без указания значения этого поля, то в него будет занесено имя текущего пользователя.
|
|
Если необходимо, чтобы поле имело какое-то непустое значение, в описание домена вносят NOT NULL.
Последний необязательный элемент в описании домена позволяет заставить сервер проверять заносимые в базу данных значения на выполнение заданного условия.
Вместо элемента <тип данных> должно быть использовано название одного из типов данных InterBase (таблица 2.1).
Фрагмент сценария создания доменов:
/***************************************************
Домены
***************************************************/
CREATE DOMAIN ID INTEGER NOT NULL; -- идентификатор
CREATE DOMAIN Name VARCHAR( 30 ) NOT NULL; -- имя
CREATE DOMAIN CurrentDate DATE DEFAULT ' TODAY ' NOT NULL;
CREATE DOMAIN Percent INTEGER -- процент CHECK (VALUE >= 0 AND VALUE <= 100); -- текст без ограничения длины:
CREATE DOMAIN MEMO BLOB SUB_TYPE TEXT SEGMENT SIZE 128;
Синтаксис оператора удаления домена:
DROP DOMAIN Имя_Домена;
Оператор изменения домена ALTER DOMAIN позволяет изменить тип данных, имя домена, а также добавить или удалить условие контроля данных. Чтобы изменить домен можно также внести изменения в системные таблицы.