Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Тут можно читать онлайн Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство БХВ-Петербург, год 2006. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
  • Автор:
  • Жанр:
  • Издательство:
    БХВ-Петербург
  • Год:
    2006
  • Город:
    Санкт-Петербург
  • ISBN:
    5-94157-609-9
  • Рейтинг:
    4/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - описание и краткое содержание, автор Хелен Борри, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.

Для разработчиков баз данных

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать книгу онлайн бесплатно, автор Хелен Борри
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Табл. 10.10 показывает ограничения на аргументы и их типы данных при использовании функции EXTRACT().

Таблица 10.10. Аргументы, типы и ограничения функции EXTRACT()

Элемент

Тип данных

Ограничения

TIMESTAMP/ диалект 1 DATE

DATE

TIME

YEAR

SMALLINT

0-5400

Допустимо

Допустимо

Не допустимо

MONTH

SMALLINT

1-12

Допустимо

Допустимо

Не допустимо

DAY

SMALLINT

1-31

Допустимо

Допустимо

Не допустимо

HOUR

SMALLINT

0-23

Допустимо

Не допустимо

Допустимо

MINUTE

SMALLINT

0-59

Допустимо

Не допустимо

Допустимо

SECOND

DECIMAL(6,4)

0-59.9999

Допустимо

Не допустимо

Допустимо

WEEKDAY

SMALLINT

0-6*

Допустимо

Допустимо

Не допустимо

YEARDAY

SMALLINT

1-366

Допустимо

Допустимо

Не допустимо

* 0 = воскресенье ... 6 = суббота.

Объединение EXTRACT() с другими функциями

Далее следуют два примера использования функции EXTRACT() внутри CAST() для получения представлений даты, которые не могут быть получены использованием одной из функций.

Получение даты и времени без долей секунды

Хотя невозможно прямым преобразованием получить строку даты и времени без долей секунды, это может быть сделано при использовании выражения, включающего обе функции CAST() и EXTRACT().

Выделение строки времени

Эта техника больше нужна в диалекте 1, чем в диалекте 3. Тем не менее она может быть экстраполирована на любой тип даты или времени диалекта 3, если вам нужно сохранять время дня в виде строки.

Функция EXTRACT() делает возможным выделение отдельных элементов типов даты и времени в значения SMALLINT. Следующий триггер выделяет элементы времени из столбца диалекта 1 DATE с именем CAPTURE_DATE и преобразует их в CHAR (13), имитируя стандартный в Firebird литерал времени 'HH:MM:ss.nnnn'.

SET TERM ^;

CREATE TRIGGER BI_ATABLE FOR ATABLE

ACTIVE BEFORE INSERT POSITION 1

AS

BEGIN

IF (NEW.CAPTURE_DATE IS NOT NULL) THEN

BEGIN

NEW. CAPTURE_TIME =

CAST(EXTRACT (HOUR FROM NEW.CAPTUEE_DATE) AS CHAR(2)) || ':' ||

CAST(EXTRACT (MINUTE FROM NEW.CAPTURE_DATE) ASCHAR(2)) || ':' ||

CAST(EXTRACT (SECOND FROM NEW.CAPTURE_DATE) AS CHAR(7));

END

END ^

SET TERM ; ^

Пример преобразования типа дата/время

Строка CHAR (13), сохраняемая триггером в предыдущем примере, не имеет того "поведения," что тип TIME в диалекте 3. Тем не менее при простом преобразовании она может быть конвертирована напрямую в тип TIME диалекта 3 при последующем обновлении до диалекта 3.

Сначала мы добавляем новый временный столбец в таблицу для хранения конвертированной строки времени:

ALTER TABLE ATABLE

ADD TIME_CAPTURE TIME;

COMMIT;

Затем заполняем временный столбец строкой времени, выполняя преобразование в диалекте 1:

UPDATE ATABLE

SET TIME_CAPTURE = CAST (CAPTURE_TIME AS TIME)

WHERE CAPTURE_TIME IS NOT NULL;

COMMIT;

Следующая вещь, которую мы должны сделать, - это временно удалить в нашем триггере ссылку на строку времени диалекта 1. Это нужно, чтобы устранить проблемы зависимости при изменении старой строки времени.

SET TERM ^;

RECREATE TRIGGER BI_ATABLE FOR ATABLE

ACTIVE BEFORE INSERT POSITION 1

AS

BEGIN

/* ничего не выполняется */

END ^

SET TERM ;^

COMMIT;

Теперь мы можем удалить старый столбец CAPTURE_TIME:

ALTER TABLE ATABLE DROP CAPTURE_TIME;

COMMIT;

Создадим его опять, на этот раз как тип TIME:

ALTER TABLE ATABLE

ADD CAPTURE_TIME TIME;

COMMIT;

Перепишем данных из временного столбца в только что добавленный столбец

CAPTURE_TIME:

UPDATE ATABLE

SET CAPTURE_TIME = TIME_CAPTURE

WHERE TIME_CAPTURE IS NOT NULL;

COMMIT;

Удалим временный столбец:

ALTER TABLE ATABLE DROP TIME_CAPTURE;

COMMIT;

Под конец изменим триггер так, чтобы он теперь записывал значение CAPTURE_TIME как тип TIME:

SET TERM ^;

RECREATE TRIGGER BI_ATABLE FOR ATABLE

ACTIVE BEFORE INSERT POSITION 1

AS

BEGIN

IF (NEW.CAPTURE_DATE IS NOT NULL) THEN

BEGIN

NEW.CAPTURE_TIME = CAST (NEW.CAPTURE.DATE AS TIME);

END

END ^

SET TERM ;^

COMMIT;

Все эти шаги могут быть записаны в скрипте SQL. Подробности использования скриптов SQL см. в разд. "Скрипты схемы" главы 14.

Понимание функции EXTRACT()

Функция EXTRACT() вызывает исключение, если она получает пустой аргумент. Этот факт можно использовать в простых запросах для проверки условия NOT NULL или в выражениях подзапросов при декодировании полей типа дата/время. Тем не менее во внешних соединениях это не столь просто, потому что потоки внешнего соединения, которые не соответствуют условиям последнего, возвращают NULL в незаполненных полях.

Рекомендуется использовать подзапрос (см. главы 21 и 22), который ограничивает вызовы функции только при ненулевых значениях. В диалекте 3 есть другое решение: использовать выражение CASE (см. главу 21) для исключения вызова EXTRACT() при нулевых датах.

Пора дальше

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

ГЛАВА 11. Символьные типы данных.

Firebird поддерживает символьные (строковые) типы данных фиксированной и переменной длины. Они могут быть определены для локального использования в любом наборе символов, выбираемом из большого списка. Символьные типы фиксированной длины не могут превышать 32 767 байт абсолютной длины; для типов переменной длины этот предел уменьшается на два байта, которые при сохранении строки содержат счетчик символов.

Firebird хранит строки очень экономно, используя простой алгоритм сжатия данных, даже если это тип CHAR или NCHAR. В том случае, когда вы хотите объявить очень большой строковый столбец, помните, что существует множество причин не использовать длинные строки - ограничения клиентской памяти или размеров индекса, а для Firebird 1.0.x еще и декомпрессия строк фиксированной и переменной длины в объявленную длину до того, как они покинут сервер.

Основы использования строк

Атрибут символьных типов CHARACTER SET важен не только для совместимости с интерфейсом локализованных приложений, но также в некоторых случаях для определения размера столбца. Отдельные наборы символов используют несколько байтов для хранения одного символа- обычно два или три в Firebird. Когда используются такие наборы символов, максимальный размер уменьшается в два или три раза.

! ! !

ПРИМЕЧАНИЕ. Атрибут CHARACTER SET в объявлении является необязательным. Если никакой набор символов не определяется на уровне столбца, то атрибут CHARACTER SET устанавливается в значение набора символов по умолчанию для базы данных. Механизм определения набора символов для столбцов и переменных обсуждается более подробно позже в этой главе.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Хелен Борри читать все книги автора по порядку

Хелен Борри - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ отзывы


Отзывы читателей о книге Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ, автор: Хелен Борри. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x