Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Важной функцией триггеров является проверка с использованием выражений поступающих новых значений, а также использование других выражений для преобразования или создания значений для текущей строки или для строк в связанных таблицах. Например, следующий общий триггер проверяет, является ли значение NULL, и если да, то вызывает функцию для присваивания ему значения:
CREATE TRIGGER BI_MEMBERSHIP FOR MEMBERSHIP
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.MEMBER_ID IS NULL) THEN
NEW. MEMBER_I D - GEN_ID(GEN_MEMBER_ID, 1);
END
Подробную информацию о написании триггеров и хранимых процедур см. в части VII.
Вызовы функций
После установки Firebird содержит минимальный набор внутренних функций SQL. Хотя новые функции появляются время от времени, тем не менее сохраняется одно из основных достоинств Firebird: малый объем памяти, занимаемый сервером.
Функциональные возможности сервера могут быть легко расширены за счет его возможности получать доступ к функциям из внешних библиотек. Традиционно такие функции называются функциями, определенными пользователями (User-Defined Functions, UDF). Более корректно называть их внешними библиотеками функций. В реальности большинство администраторов баз данных используют хорошо протестированные библиотеки, находящиеся в общем пользовании и свободно распространяемые.
Внутренние функции SQL
В табл. 21.7 представлены внутренние функции SQL, доступные в Firebird.
Таблица 21.7. Внутренне реализованные функции SQL
Функция |
Тип |
Назначение |
CAST() |
Преобразование |
Преобразует столбец из одного типа данных в другой |
EXTRACT() |
Преобразование |
Выделяет части даты и времени (год, месяц, день и т.д.) из значений DATE, TIME и TIMESTAMP |
SUBSTRING() |
Строка |
Отыскивает последовательность символов в строке |
UPPER() |
Строка |
Преобразует символы в строке в верхний регистр |
GEN_ID() |
Генерация |
Возвращает значение генератора |
AVGO |
Агрегат |
Вычисляет среднее значение набора значений |
COUNT() |
Агрегат |
Возвращает количество строк, которые удовлетворяют условию поиска запроса |
MAX() |
Агрегат |
Отыскивает максимальное значение в наборе значений |
MIN() |
Агрегат |
Отыскивает минимальное значение в наборе значений |
SUM() |
Агрегат |
Суммирует значения в наборе числовых значений |
Функции преобразования трансформируют типы данных, например, путем преобразования их из одного типа данных в другой совместимый тип, изменения масштаба или точности числовых значений или убирая какой-нибудь наследуемый атрибут из элемента данных. Можно сказать, что многие строковые функции также являются функциями преобразования, потому что они преобразуют способ хранения строковых значений, представленных в выходном наборе.
Функция CAST() широко используется. Она позволяет преобразовывать элемент данных одного типа данных в другой тип или трактовать его как другой тип данных.
DSQL, PSQL, ISQL, ESQL, Firebird 1.5 и выше. Любая платформа.
CAST(значение AS <���тип-данных>)
Фраза AS <���тип-данных> с аргументом является обязательной.
значение является столбцом или выражением, которое преобразуется к типу данных, допустимому для преобразования в тип данных, названный в ключевом слове AS.
<���тип-данных> должен быть родным типом данных Firebird. Нельзя указывать имя домена. Рис. 8.1 показывает все допустимые преобразования из одного типа в другой.
Функция возвращает вычисляемое поле заданного типа данных.
В следующем фрагменте PSQL поле LOG_DATE типа данных TIMESTAMP преобразуется в тип данных DATE, потому что для вычисления нужно получить целые дни:
. . .
IF (CURRENT_DATE - CAST (LOG_DATE AS DATE) = 30) THEN
STATUS = '30 DAYS';
Следующий оператор выбирает значение из столбца типа INTEGER, преобразует его в строку и соединяет со столбцом типа CHAR(3) для формирования значения другого столбца:
UPDATE MEMBERSHIP
SET MEMBER_CODE = MEMBER_GROUP || CAST(MEMBER_ID AS CHAR(8))
WHERE MEMBER_CODE IS NULL;
См. главу 8, где более подробно осуждается функция CAST(), а также последующие главы, в которых индивидуально рассматриваются типы данных.
Эта функция выделяет часть полей типа данных DATE, TIME и TIMESTAMP в виде числа.
DSQL, PSQL, ISQL, ESQL, Firebird 1.5 и выше. Любая платформа.
EXTRACT(часть FROM поле)
YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | WEEKDAY | YEARDAY
часть является одним значением из указанного списка необязательных ключевых слов, WEEKDAY выделяет день недели (воскресенье = 1, понедельник = 2 и т.д.), YEARDAY выделяет день в году (от 1 января = 1 до 366).
поле- поле типа данных DATE, TIME или TIMESTAMP (столбец, переменная или выражение).
Все части возвращают SMALLINT за исключением SECOND, которое возвращает
DECIMAL(6,4).
EXTRACT будет работать только со значениями, которые преобразуются к полям дата/время.
Следующий оператор возвращает имена и дни рождения, упорядоченные no BIRTHDAY, для всех участников, имеющих день рождения в текущем месяце:
SELECT
FIRST_NAME,
LAST_NAME,
EXTRACT(DAY FROM DATE_OF_BIRTH) AS BIRTHDAY
FROM MEMBERSHIP
WHERE DATE_OF_BIRTH IS NOT NULL
AND EXTRACT (MONTH FROM DATE_OF_BIRTH) = EXTRACT (MONTH FROM
CURRENT_DATE)
ORDER BY 3;
Firebird имеет только две внутренние строковые функции. Большое количество строковых функций доступно во внешних функциях (см. следующий раздел этой главы).
SUBSTRING() является внутренней функцией, реализующей функцию ANSI SQL SUBSTRING(). Она возвращает поток, состоящий из байта с номером начальная-позиция и всех последующих байтов до конца строки значение. Если указано необязательное предложение FOR длина, она вернет меньшее из длина байт и количество байт до конца входного потока.
DSQL, PSQL, ISQL, ESQL, Firebird 1.5 и выше. Любая платформа.
SUBSTRING(значение FROM начальная-позиция [FOR длина])
Необязательное предложение FOR задает длину возвращаемой подстроки.
значение может быть любым выражением, константой или идентификатором столбца, который преобразуется в строку.
начальная-позиция должна преобразовываться в целое >= 1. Не может быть заменяемым параметром.
Читать дальшеИнтервал:
Закладка: