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

ЖАНРЫ

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

Борри Хелен

Шрифт:

SQL> COMMIT;

SQL> SET SQL DIALECT 1;

WARNING: client SQL dialect has been set to 1 when connecting to Database

SQL dialect 3 database.

(Предупреждение: SQL-диалект клиента установлен в 1 при соединении с базой данных с SQL-диалектом 3)

SQL>

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

SQL> CONNECT 'RSERVER:D:\DATA\SAMPLE\legacy.gdb'

CON> user 'SYSDBA' password 'icur2yy4m';

SQL> SHOW SQL DIALECT;

Client SQL dialect is set to: 1 and database dialect is: 1

(Диалект SQL клиента установлен в: 1, диалект базы данных: 1)

Множество свободно распространяемых и коммерческих инструментов администратора с графическим интерфейсом предоставляют возможность интерактивной

установки диалекта клиента. Компоненты доступа к базе данных и драйверы имеют свойства или другие механизмы для передачи диалекта структуре соединения API.

Пора дальше

Следующие четыре главы подробно описывают типы данных, поддерживаемые для каждой из основных категорий данных: числа, дата/время, символы и BLOB. Глава 13, последняя глава в этой части, описывает реализацию доменов в Firebird для объединения типа данных с группой атрибутов в одно воспроизводимое определение.

ГЛАВА 9. Числовые типы данных.

Firebird поддерживает числовые типы данных с фиксированной точкой (точные числа) и с плавающей точкой (приблизительная точность). Десятичными типами с фиксированной точкой являются целые типы с нулевым масштабом SMALLINT, INTEGER и в диалекте 3 BIGINT, а также два почти одинаковых масштабируемых числовых типа: NUMERIC и DECIMAL. Два типа с плавающей точкой: FLOAT (низкая точность) и DOUBLE PRECISION [15] .

15

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

Firebird не поддерживает беззнаковый целочисленный тип. В табл. 9.1 показаны диапазоны значений каждого числового типа в Firebird.

Таблица 9.1. Границы числовых типов Firebird

Числовой тип Минимум Максимум
SMALLINT – 32,768 32,767
INTEGER – 2,147,483,648 2,147,483,647
BIGINT – 2(^63^) 2(^63^) - 1
(Для мазохистов) – 9223372036854775808 9223372036854775807
NUMERIC* Меняется Меняется
DECIMAL* Меняется Меняется
FLOAT
Положительные 1.175 * 10(^38^) 3.402 * 10(^38^)
Отрицательные – 3.402 * 10(^38^)
DOUBLE PRECISION
Положительные 2.225 * 10(^308^) 1.797 * 10(^308^)
Отрицательные – 1.797 * 10(^308^)

* Границы для типов NUMERIC и DECIMAL изменяются в зависимости от способа хранения и масштаба. Границы всегда будут соответствовать тому типу, в котором эти данные будут сохраняться [16] .

Операции с числовыми типами

* Операции сравнения. Используйте стандартные операторы отношений (=, <, >, >=, <=, <>

или !=) [17] .

Возможны сравнения строк с использованием таких операторов SQL, как CONTAINING, STARTING WITH и LIKE. В данных операциях числа трактуются как строки. Более подробную информацию об этих операторах см. в главе 21.

16

Хранимыми типами являются SMALLINT, INTEGER или BIGINT в зависимости от объявлен-

17

Использование "!=" в качестве замены для "<>" допустимо в Firebird, но не соответствует стандарту. Те, у кого хорошее экстрасенсорное восприятие, будут придерживаться "о", чтобы сделать код более удобным для чтения.

* Арифметические операции. Могут быть использованы стандартные бинарные арифметические операторы (+, * и /).

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

* Операции сортировки. По умолчанию запрос возвращает строки точно в том порядке, в котором находит их в таблице, т. е., скорее всего, неупорядоченные. Вы можете отсортировать строки по значениям целочисленных столбцов, используя предложение ORDER BY оператора SELECT В убывающем или возрастающем порядке. Если числа сохраняются как символьные типы, то порядок сортировки будет алфавитно-цифровым, а не числовым, например, 1 - 10 - 11 ... 19 - 2.

Целые типы

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

* SMALLINT - является знаковым коротким целым с диапазоном от -32,768 до 32,767;

* INTEGER - является знаковым длинным целым с диапазоном от-2 147 483 648 до 2 147 483 647;

* BIGINT - является знаковым 64-битовым целым с диапазоном от 2(^63^) до 2(^63^) - 1. Недоступен в диалекте 1.

! ! !

ПРИМЕЧАНИЕ. В Firebird 1.0.x в диалекте 3 объявляйте 64-битовые целые как NUMERIC(18,0) или DECIMAL (18,0). Всегда допустимо использование этого синтаксиса для целых типов, при этом можно опускать второй аргумент (масштаб).

. ! .

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

Следующие два оператора создают домен и столбец, соответственно, с типами данных SMALLINT и INTEGER:

CREATE DOMAIN RGB_RED_VALUE AS SMALLINT;

/* */

CREATE TABLE STUDENT_ROLL (

STUDENT_ID INTEGER,

. . . );

Каждый из следующих операторов создает домен, который является 64-битовым целым:

CREATE DOMAIN IDENTITY BIGINT CHECK(VALUE >=0);

/* Firebird 1.5 и выше */

CREATE DOMAIN IDENTITY NUMERIC(18,0) CHECK(VALUE >=0);

SMALLINT

SMALLINT является 2-байтовым целым, предоставляющим компактное хранение для целых чисел с ограниченным диапазоном значений. Например, SMALLINT может быть подходящим для хранения значений цветов в форме RGB, как показано в предыдущем примере создания домена.

SMALLINT часто используется для определения булевых значений, обычно 0 = ложь, 1 = истина. Пример такого использования можно найти в разд. "Объявление булевых доменов" главы 13.

INTEGER

INTEGER является 4-байтовым целым. В диалекте 1 генераторы (см. разд. "Генераторы" этой главы) генерируют значения типа INTEGER. Вы можете хранить такие целые в столбцах BIGINT без преобразования.

BIGINT, NUMERIC(18,0)

Доступны только в диалекте 3. Это 8-байтовое целое, полезное для хранения целых чисел с очень маленькими и очень большими значениями. В диалекте 3 генерируются числа типа BIGINT (см. разд. "Генераторы").

Поделиться с друзьями: