Чтение онлайн

на главную - закладки

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

ГЛАВА 8. О типах данных Firebird.

Тип данных является основным атрибутом, который должен быть определен для каждого столбца в таблице Firebird. Он устанавливает и ограничивает характеристики множества данных, которые могут храниться в столбце, и операции, которые могут быть выполнены над данными. Он также определяет, какое дисковое пространство занимает каждый элемент данных. Выбор оптимального размера значений данных является важным решением для сетевого трафика, экономии дисковой памяти и размера индексов.

Firebird поддерживает большую часть типов данных SQL. В дополнение он поддерживает динамически изменяемые типизированные и не типизированные большие двоичные объекты (Binary Large Object, BLOB) и многомерные однородные массивы для большинства типов данных.

Где задаются типы данных

Тип данных определяется

для элементов данных в следующих ситуациях:

* при определении столбца в операторе CREATE TABLE;

* при создании шаблона глобально используемого столбца посредством CREATE DOMAIN;

* при изменении шаблона глобально используемого столбца с применением ALTER DOMAIN;

* при добавлении нового столбца в таблицу или при изменении столбца с использованием ALTER TABLE;

* при объявлении аргументов и локальных переменных в хранимых процедурах и триггерах;

* при объявлении аргументов и возвращаемых значений внешних функций (функций, определенных пользователем, UDF).

Поддерживаемые типы данных

Числовые типы данных (обсуждаемые в главе 9) следующие:

* BIGINT, INTEGER и SMALLINT;

* NUMERIC и DECIMAL;

* FLOAT и DOUBLE PRECISION.

Типы данных даты и времени (обсуждаемые в главе 10):

* DATE;

* TIME и TIMESTAMP.

Символьные типы данных (обсуждаемые далее в главе 11):

* CHARACTER;

* VARYING CHARACTER и NATIONAL CHARACTER.

Типы данных BLOB и массивы (обсуждаемые далее в главе 12):

* BLOB, типизированный и нетипизированный.

* ARRAY (массив).

Булевы типы данных

Firebird 1.5 и выше не поддерживает булевы (логические) типы данных. Обычной практикой является объявление односимвольного или SMALLINT домена для общего использования, где требуются булевы типы данных.

Советы по определению булевых доменов см. в главе 13.

"Диалекты" SQL

Firebird поддерживает три "диалекта" SQL, которые не имеют другого практического назначения, кроме конвертирования баз данных из InterBase версий 5.x в Firebird. "Родной" диалект Firebird в настоящий момент известен как диалект 3. По умолчанию Firebird создает новую базу данных в этом родном диалекте. Если в вашем опыте в Firebird нет ни груза существующих предположений, ни созданных баз данных, которые вам нужно обновить для Firebird, вы можете без риска "следовать естеству" и игнорировать все последующие замечания и предупреждения относительно диалекта 1.

Если вы бывший пользователь InterBase или применяли устаревшие инструменты для преобразования данных из других СУБД в InterBase, то диалекты SQL будут для вас предметом обсуждения в нескольких отношениях.

Поскольку вы можете работать с этой книгой в том порядке, который вам подходит, то вопросы влияния диалекта SQL будут отмечены соответствующим образом. Некоторые из наиболее серьезных эффектов разных диалектов проявляются в различии между типами данных. Вопросам диалектов посвящен разд. "Специальная тема миграции: диалекты SQL" этой главы.

Идентификаторы с разделителями в SQL-92

В базах данных диалекта 3 Firebird поддерживает соглашение ANSI SQL о необязательных идентификаторах с разделителями. Для использования зарезервированных слов, строк, чувствительных к регистру, или пробелов в именах объектов заключите имя в двойные кавычки. Это имя становится идентификатором с разделителями. К идентификаторам с разделителями всегда нужно обращаться, заключив их в кавычки.

Подробности см. в разд. "Соглашения и ограничения в именовании объектов базы данных" главы 14. Более подробную информацию об именовании объектов базы данных с использованием операторов CREATE и DECLARE см. в части IV этой книги. В приложении 11 представлен список ключевых слов, которые являются зарезервированными словами в SQL.

Контекстные переменные

Firebird делает доступным множество значений переменных, поддерживаемых системой в контексте текущего соединения клиента и его деятельности. Эти контекстные переменные доступны для использования в SQL, включая язык триггеров и хранимых процедур, PSQL. Некоторые доступны только в PSQL, большинство - только в диалекте 3 базы данных. В табл. 8.1 представлены контекстные переменные Firebird.

Таблица 8.1. Список контекстных переменных

Контекстная переменная Тип данных Описание Доступность
CURRENT_CONNECTION INTEGER Системный идентификатор
соединения, при котором выполняется настоящий запрос
Firebird 1.5 и выше, DSQL и PSQL
CURRENT_DATE DATE Текущая дата по часам на сервере Firebird 1.0 и выше, все окружения SQL
CURRENT_ROLE VARCHAR (31) Имя роли, под которым соединился текущий пользователь. Возвращает пустую строку, если текущее соединение не использовало роль Firebird 1.0 и выше, все окружения SQL
CURRENT_TIME TIME Текущее время по часам на сервере, выраженное в секундах после полуночи Firebird 1.0 и выше, все окружения SQL
CURRENT_TIMESTAMP TIMESTAMP Текущая дата и время по часам на сервере в секундах Firebird 1.0 и выше, все окружения SQL
CURRENT_TRANSACTION INTEGER Системный идентификатор транзакции, в контексте которой выполняется текущий запрос Firebird 1.5 и выше, DSQL и PSQL
CURRENTUSER VARCHAR( 128) Имя пользователя, который связан сданным экземпляром клиентской библиотеки Firebird 1.0 и выше, все окружения SQL
ROW_COONT INTEGER Счетчик строк измененных, удаленных и добавленных оператором DML после завершения операции Firebird 1.5 и выше, DSQL и PSQL
UPDATING BOOLEAN Возвращает true, если выполняется оператор изменения Firebird 1.5 и выше, только диалект триггера PSQL
INSERTING BOOLEAN Возвращает true, если выполняется оператор добавления Firebird 1.5 и выше, только диалект триггера PSQL
DELETING BOOLEAN Возвращает true, если выполняется оператор удаления Firebird 1.5 и выше, только диалект триггера PSQL
SQLCODE INTEGER Возвращает SQLCODE из блока исключения WHEN. Использование см. в главе 32 Firebird 1.5 и выше, только язык процедур PSQL
GDSCODE INTEGER Возвращает GDSCODE из блока исключения WHEN. Использование см. в главе 32 Firebird 1.5 и выше, только язык процедур PSQL
USER VARCHAR(128) Имя пользователя, который связан сданным экземпляром клиентской библиотеки Предшественники InterBase, все версии Firebird, все окружения SQL, доступные в диалекте 1

Временные значения

CURRENT_CONNECTION и CURRENT_TRANSACTION не имеют смысла вне текущего соединения и контекста транзакции соответственно. Сервер Firebird сохранит самые последние значения этих идентификаторов в заголовочной странице базы данных. После восстановления базы данных из резервной копии эти значения будут заново установлены в ноль.

CURRENT_TIMESTAMP записывает время сервера на момент старта операции. Для всех записей, вставляемых или обновляемых одним оператором, значение этой переменной будет одним и тем же.

Хотя CURRENT_TIME хранится на сервере как время после полуночи, ее тип TIME, а не интервал времени. Для получения интервала времени используйте TIMESTAMP при старте и завершении и вычтите время старта из времени завершения. Результатом будет интервал времени в днях.

Контекстные переменные даты/времени основаны на времени сервера, которое может отличаться от внутреннего времени на клиенте.

Примеры использования

Следующий оператор возвращает время сервера в момент, когда сервер обслуживает запрос клиента Firebird:

Поделиться:
Популярные книги

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

Черный дембель. Часть 1

Федин Андрей Анатольевич
1. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 1

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь

Темный Лекарь 5

Токсик Саша
5. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 5

Последний из рода Демидовых

Ветров Борис
Фантастика:
детективная фантастика
попаданцы
аниме
5.00
рейтинг книги
Последний из рода Демидовых

Чиновникъ Особых поручений

Кулаков Алексей Иванович
6. Александр Агренев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чиновникъ Особых поручений

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Курсант: Назад в СССР 10

Дамиров Рафаэль
10. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 10

Сделай это со мной снова

Рам Янка
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сделай это со мной снова

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая

Небо для Беса

Рам Янка
3. Самбисты
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Небо для Беса

Надуй щеки! Том 4

Вишневский Сергей Викторович
4. Чеболь за партой
Фантастика:
попаданцы
уся
дорама
5.00
рейтинг книги
Надуй щеки! Том 4