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

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

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

WHERE START_DATE < CAST ('12/31/2003' AS DATE);

В выражениях, где смешиваются целые данные и числовые строки, в диалекте 1 строки неявно преобразуются в целое, если это возможно. В следующей операции:

3 + '1'

диалект 1 автоматически преобразует символ "1" в SMALLINT, в то время как диалект 3 вернет ошибку. Он требует явного преобразования типов:

3 + CAST('1' AS SMALLINT)

Оба диалекта вернут ошибку в следующем операторе, потому что Firebird не может преобразовать символ "а" в целое:

3 + 'а'

Явное

преобразование типов: CAST

В тех случаях, когда Firebird не может выполнить неявное преобразование типов, вы должны выполнить явное преобразование типов посредством функции CAST. Используйте CAST для преобразования одного типа данных в другой в операторе SELECT обычно в предложении WHERE для сравнения различных типов данных. Синтаксис функции:

CAST (значение | NOLL AS тип данных)

Вы можете использовать CAST для сравнения столбцов с различными типами данных в той же таблице или из различных таблиц. Например, вы можете преобразовывать правильно сформированную строку в типы дата/время, а также во множество числовых типов. Подробную информацию о преобразованиях типов данных смотрите в остальных главах этой части.

Изменение определения столбцов и доменов

В обоих диалектах вы можете изменять тип данных доменов и столбцов в таблицах. Если вы выполняете миграцию базы данных из другой СУБД, это может быть полезным. Существуют некоторые ограничения при изменении типа данных.

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

* Преобразование числового типа данных в строковый требует минимального размера строкового типа, как показано в табл. 8.3.

Таблица 8.3. Минимальное количество символов для числовых преобразований

Тип данных Минимальная длина символьного типа
BIGINT 19 (или 20 для чисел со знаком)
DECIMAL 20
DOUBLE 22
FLOAT 13
INTEGER 10 (11 для чисел со знаком)
NUMERIC 20 (или 21 для чисел со знаком)
SMALLINT 6

Изменение типа данных столбца

Используйте предложение ALTER COLUMN В операторе ALTER TABLE, например:

ALTER TABLE table1 ALTER COLUMN field1 TYPE char(20);

Информацию об изменении столбцов таблицы см. в разд. "Изменение таблиц" главы 16.

Изменение типа данных домена

Используйте предложение TYPE В операторе ALTER DOMAIN для изменения типа данных домена, например,

ALTER DOMAIN MyDomain TYPE VARCHAR(40);

На рис. 8.1 показаны допустимые преобразования типов данных. Более подробную информацию об изменении атрибутов домена см. в главе 13.

Ключевые слова, используемые для спецификации типа данных

Ключевые

слова для спецификации типов данных в операторах DDL представлены здесь в качестве краткой справки. Точный синтаксис см. в соответствующей главе, связанной с типами данных этой части книги, а также в главах 13 и 16.

{SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION} [<array_dim>]

| {DATE | TIME | TIMESTAMP} [<array_dim>]

| {DECIMAL INUMERIC} [ (precision [, scale])] [<array_dim>]

{ {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [(int)]

[<array_dim>] [CHARACTER SET charname]

| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}

[VARYING] [(int)] [<array_diin>]

BLOB [SUB_TYPE int | subtype_name ] [SEGMENT SIZE int]

[CHARACTER SET charname]

BLOB [(seglen [, subtype])]

Рис. 8.1. Допустимые преобразования данных с использованием операторов ALTER COLUMN и ALTER DOMAIN

Специальная тема миграции: диалекты SQL

Если вы бывшие пользователи InterBase или вы использовали устаревшие инструменты миграции для конвертирования других СУБД в InterBase, то диалекты SQL видимо будут влиять на некоторые аспекты новой жизни ваших баз данных и приложений при использовании сервера Firebird.

ODS и диалект

Структура данных на диске (On-Disk Structure, ODS) идентифицирует базу данных в отношении версии релиза сервера Firebird или InterBase, который создает и восстанавливает базу данных. ODS базы данных влияет на совместимость с версиями сер- вера. Файл, подходящий для обновления ODS, может быть создан резервным копированием базы данных (backup) с использованием утилиты gbak той версии, в которой была создана база данных. Утилита должна быть использована с переключателем -t[ransportable]. Когда файл резервной копии будет восстановлен с использованием gbak новой версии, восстановленная база данных будет иметь новую версию ODS. Такое невозможно выполнить для "понижения" ODS для любой базы данных.

Использование gbak подробно обсуждается в главе 38.

Обновление ODS не изменяет диалект

Обновление ODS не влияет на диалект SQL базы данных: база данных диалекта 1 останется базой данных диалекта 1.

Базы данных Firebird

Firebird 1.0.x имеет ODS, обозначаемый как ODS-10. Firebird 1.5 имеет ODS-10.1. Чтобы преобразовать базу данных ODS-10, созданную в Firebird 1.0.x в ODS-10.1, вам просто нужно сделать ее резервную копию и восстановить эту копию с использованием gbak из Firebird 1.5. По умолчанию серверы Firebird версий 1.0.3+ и 1.5 создают базы данных диалекта 3. Для проверки ваших баз данных см. разд. "Как определить диалект" далее в этой главе.

Базы данных InterBase 6.0.x

OpenSource InterBase версий 6.0.x имеют ODS-10. Тем не менее для обновления баз данных InterBase 6.0.x до любой версии Firebird рекомендуется использовать gbak из InterBase 6.0 с переключателем -t[ransportable]. Файл резервной копии должен быть затем восстановлен с использованием gbak соответствующей версии сервера Firebird.

Если база данных InterBase 6.0 была создана с установками по умолчанию, то, вероятно, она имеет диалект 1. См .разд. "Как определить диалект" далее в этой главе.

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

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

Яманов Александр
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