Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Подробности см. в разд. "Соглашения и ограничения в именовании объектов базы данных" главы 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:
SELECT CURRENT_TIME AS TIME_FINISHED FROM RDB$DATABASE;
В следующем операторе добавления идентификатор текущей транзакции, текущие серверные дата и время, а также имя пользователя системы будут записаны в таблицу:
INSERT INTO TRANSACTIONLOG(TRANS_ID, USERNAME, DATESTAMP) VALUES (
CURRENT_TRANSACTION,
CURRENT_USER,
CURRENT_TIMESTAMP) ;
Предопределенные литералы даты
Литералы даты - заключенные в апострофы строки, которые Firebird SQL будет воспринимать как специальные даты. В диалекте 1 эти строки используются напрямую, в диалекте 3 они должны быть преобразованы в соответствующий тип. В табл. 8.2 показано использование дат в каждом диалекте.
Таблица 8.2. Список предопределенных литералов даты
Литерал даты | Подставляемая дата | Тип данных, Диалект 1 | Тип данных, Диалект 3 |
'NOW' | Текущая дата и время | DATE (эквивалентно TIMESTAMP в диалекте 3) | TIMESTAMP |
'TODAY' | Текущая дата | DATE с нулевым временем | DATE (только дата) |
'YESTERDAY' | Текущая дата -1 | DATE c нулевым временем | DATE |
'TOMORROW' | Текущая дата + 1 | DATE с нулевым временем | DATE |
! ! !
ПРИМЕЧАНИЕ. В диалекте 1 тип данных DATE эквивалентен типу данных TIMESTAMP в диалекте 3. В диалекте 3 тип данных DATE содержит только дату. В диалекте 1 нет эквивалентного типа.
. ! .
Примеры использования предопределенных литералов даты
В диалектах базы данных 1 и 3 литерал даты должен быть преобразован в тип данных TIMESTAMP:
SELECT CAST ('NOW' AS TIMESTAMP) AS TIME_FINISHED FROM RDB$DATABASE;
Следующий оператор UPDATE устанавливает значение столбца даты в серверную дату плюс один день в диалекте 1:
UPDATE TABLE_A
SET UPDATE_DATE = 'TOMORROW'
WHERE KEY_ID = 144;
Вот та же самая операция в диалекте 3 с преобразованием типа:
UPDATE TABLE_A
SET UPDATE_DATE = CAST('TOMORROW' AS DATE)
WHERE KEY_ID = 144;
Столбцы
Данные в таких реляционных системах баз данных, как Firebird, логически упорядочены в виде множества строк и столбцов. Столбец хранит один элемент данных с атрибутами, идентичными для всех строк в наборе. Определение столбца имеет два обязательных атрибута: идентификатор (или имя столбца) и тип данных. Другие атрибуты могут быть включены в определение столбца, например, CHARACTER SET и ограничения типа NOT NULL и UNIQUE.
Множества, определенные для хранения данных, называются таблицами. Структура строк таблицы определяется при объявлении идентификатора таблицы; эта структура является списком идентификаторов столбцов, их типов данных и других необходимых атрибутов.
Простой пример объявления таблицы:
CREATE TABLE SIMPLE
( COLUMN1 INTEGER,
COLUMN2 CHAR(3),
COLUMN3 DATE);
Полное описание объявления таблиц и столбцов см. в главе 16.
Домены
В Firebird вы можете сделать предварительное объявление столбца с типом данных и "шаблонным набором" атрибутов в виде домена. Как только домен будет создан и подтвержден (commit), он может быть использован в любой таблице вашей базы данных, как если бы он был типом данных.
Читать дальшеИнтервал:
Закладка: