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

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

Жанры

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), он может быть использован в любой таблице вашей базы данных, как если бы он был типом данных.

! ! !

ПРИМЕЧАНИЕ. Существуют некоторые ограничения по использованию доменов. В частности, домен не может применяться в объявлении локальных переменных, входных и выходных аргументов в модулях PSQL (язык процедур).

. ! .

Столбцы, основанные на домене, наследуют все атрибуты домена: его тип данных, другие атрибуты, включая значение по умолчанию, ограничения на значения, набор символов и порядок сортировки.

Любой атрибут за исключением типа данных может быть переопределен при использовании домена в определении столбца при определении таблицы путем замены атрибута на другой совместимый атрибут или при добавлении атрибута. Например, можно объявить домен с набором атрибутов, не включающих NOT NULL, для которого можно сделать допустимым пустое значение в одних случаях, a NOT NULL в других.

Более подробную информацию о создании, использовании и поддержке доменов см. в главе 13.

Преобразование типов данных

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

Неявное преобразование типов

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

* В диалекте 1 для некоторых выражений Firebird выполняет автоматическое преобразование данных в эквивалентные типы данных (неявное преобразование типов). Здесь также может быть использована функция CAST, хотя в большинстве случаев она не нужна.

* В диалекте 3 в условиях поиска требуется функция CAST для явной трансляции одного типа данных в другой для операций сравнения.

Например, сравнение столбца типа DATE или TIMESTAMP с '12/31/2003' в диалекте 1 приводит к неявному преобразованию строкового литерала '12/31/2003' в тип данных DATE.

SELECT * FROM TABLE_A

WHERE START_DATE < '12/31/2003';

В диалекте 3 требуется явное преобразование:

SELECT * FROM TABLE_A

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

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Аргумент барона Бронина 4

Ковальчук Олег Валентинович
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 4

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Измена. Право на обман

Арская Арина
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Жаба с кошельком

Донцова Дарья
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Жаба с кошельком

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

Академия чаросвет. Тень

Ярошинская Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия чаросвет. Тень

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4