Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
* константой (например, строкой, числом или датой);
* контекстной переменной (например, CURRENT_TIMESTAMP, CURRENT_USER [42] Если ваша операционная система поддерживает использование многобайтовых символов в именах пользователей или вы используете многобайтовый набор символов при определении ролей, то каждый столбец, в котором будут сохраняться в качестве значений по умолчанию CURRENT_USER или CURRENT_ROLE, должен быть определен с использованием совместимого набора символов.
, CURRENT_CONNECTION и т.д.);
* предварительно определенным литералом даты (таким как 'NOW', 'TOMORROW' и т.д.);
* NULL может быть установлен как значение по умолчанию только для столбцов, допускающих пустое значение [43] См. ограничение NOT NULL для столбца, NULL может оказаться несовместимым значением
. Столбец, допускающий пустое значение, получает значение по умолчанию NULL автоматически, однако вам может понадобиться перекрыть нежелательное значение по умолчанию на уровне домена. Не объявляйте это значение по умолчанию для столбцов, имеющих ограничение NOT NULL.
! ! !
ВНИМАНИЕ! Когда вы полагаетесь на значение по умолчанию, вы должны понимать, что значение по умолчанию будет применяться только к добавлению новой строки и только если оператор INSERT не включает этот столбец со значением по умолчанию в список столбцов. Если ваше приложение включает этот столбец в оператор INSERT и передает NULL в списке значений, то NULL и будет сохранен, независимо от любого определенного значения по умолчанию. Если столбец не допускает пустых значений, то передача значения NULL всегда вызовет исключение.
. ! .
Следующий пример определяет столбец CREATED_BY, который имеет в качестве значения по умолчанию контекстную переменную CURRENT_USER:
CREATE TABLE ORDER (
ORDER_DATE DATE,
CREATED_BY VARCHAR (31) DEFAULT CUREENT_USER,
ORDER_AMOUNT DECIMAL(15,2));
Новая строка добавляется пользователем JILLIBEE; столбец CREATED_BY не указан в списке столбцов:
INSERT INTO ORDER (ORDER_DATE, ORDER_AMT)
VALUES ('15-SEP-2004', 1004.42);
Запрос к этой таблице:
SELECT * FROM ORDER;
. . .
ORDER_DATE CREATED_BY ORDER_AMOUNT
. . .
15-SEP-2004 JILLIBEE 1004.42
. . .
Набор символов (CHARACTER SET) используется для индивидуального символьного столбца или текстового столбца BLOB, когда вы определяете столбец. Если вы не задаете набор символов, то столбец принимает набор символов домена, если определен, иначе он принимает набор символов по умолчанию для базы данных. Пример:
CREATE TABLE TITLES_RUSSIAN (
TITLE_ID BIGINT NOT NULL,
TITLE_EN VARCHAR(100),
TITLE VARCHAR(100) CHARACTER SET WIN1251);
Подробнее о наборах символов см. главу 11. Список доступных наборов символов представлен в приложении 8.
Предложение COLLATE может быть добавлено к столбцам CHAR и VARCHAR для перекрытия последовательности сортировки, определенной для набора символов столбца в домене, на котором основывается столбец. Последовательность сортировки не применима для типов BLOB.
Следующее расширение предыдущего примера включает предложение COLLATE:
CREATE TABLE TITLES_RUSSIAN (
TITLE_ID BIGINT NOT NULL,
TITLE_EN VARCHAR(100),
TITLE VARCHAR(100) CHARACTER SET WIN1251 COLLATE PXW_CYRL);
! ! !
ВНИМАНИЕ! Будьте осторожны при применении предложения COLLATE К столбцам, которые должны быть индексированы. Максимальный размер индекса 252 байта может быть радикально уменьшен при некоторых последовательностях сортировки. Сначала проверьте! (Для COLLATE PXW_CYRL он уменьшается до 84 символов.)
. ! .
Подробности о последовательностях сортировки, доступных для каждого набора символов, см. в главе 11. Список доступных наборов символов и порядков сортировки см. в приложении 8.
! ! !
СОВЕТ. Вы можете получить собственный список, который может включать и более поздние последовательности сортировки, создав новую базу и выполнив запрос из разд. "Отображение доступных последовательностей сортировки" главы 11.
. ! .
Вычисляемые столбцы - это столбцы, чье значение вычисляется каждый раз, когда во время выполнения к столбцам происходит обращение. Это может быть удобный способ доступа к избыточным данным без отрицательных эффектов от их фактического хранения. Не удивительно, что такие столбцы не могут обрабатываться как обычные данные - см. ограничения, описанные позже в этом разделе.
Синтаксис:
<���имя-столбца> COMPUTED [BY] (<���выражение>);
Нет необходимости описывать тип данных (хотя это возможно) - Firebird вычислит его подходящим образом, выражение - любое скалярное выражение, допустимое для типов данных столбцов, входящих в состав выражения. Внешние функции прекрасны для использования, если вы уверены, что библиотеки этих функций существуют в готовом виде или могут быть скомпилированы для всех платформ, где может устанавливаться база данных. (Информацию о внешних функциях, также называемых UDF, см. в главе 21. Список общих функций представлен в приложении 1.)
Приведем другие существующие ограничения для вычисляемых столбцов.
* Любой столбец, к которому обращается выражение, должен быть определен до определения вычисляемого столбца, следовательно, полезной практикой является размещение вычисляемых столбцов последними.
* Вычисляемый столбец не может быть определен как массив или возвращать массив.
* Вы можете определить вычисляемый столбец BLOB, используя оператор SELECT для поиска столбца BLOB в другой таблице, но делать это настоятельно не рекомендуется.
* Вычисляемые столбцы не могут быть индексированы.
* Ограничения, помещенные для вычисляемого столбца, будут проигнорированы.
* Вычисляемые столбцы используются только для вывода и только для чтения. Включение их в операторы INSERT или UPDATE вызовет исключение.
! ! !
ВНИМАНИЕ! В качестве общего предупреждения: хотя возможно создание вычисляемого столбца с использованием оператора SELECT к другой таблице, эта практика должна быть исключена, поскольку добавляет нежелательные зависимости и может ухудшить производительность. Правильно нормализованная модель базы данных не требует такого.
. ! .
Следующий оператор создает вычисляемый столбец FULL NAME путем конкатенации столбцов LAST_NAMES и FIRST_NAME.
CREATE TABLE PERSON (
PERSON_ID BIGINT NOT NULL,
FIRST_NAME VARCHAR(35) NOT NULL,
LAST_NAMES VARCHAR (80) NOT NULL,
FULL_NAME COMPUTED BY FIRST_NAME ||' ' || LAST_NAMES) ;
/**/
SELECT FULL_NAME FROM PERSON
WHERE LAST_NAMES STARTING WITH 'SMI';
FULL NAME
=============
Arthur Smiley
John Smith
Mary Smits
! ! !
ПРИМЕЧАНИЕ. Обратите внимание на ограничения NOT NULL В двух именах, объединяемых для вычисляемого столбца. Важно обращать внимание на такие детали в случае вычисляемых столбцов, потому что NULL как элемент конкатенации всегда будет давать результат NULL.
. ! .
Следующий оператор вычисляет два столбца с использованием контекстных переменных. Это может быть полезным для регистрации подробностей создания строки:
Читать дальшеИнтервал:
Закладка: