Шрифт:
Как определять диалект
Вызовите окно командной строки и перейдите в каталог /bin, где находятся инструменты командной строки Firebird. Запустите утилиту isql. Соединитесь с вашей базой данных:
SQL> CONNECT '/opt/firebird/examples/employee.fdb'
CON> user 'SYSDBA' password 'icur2yy4m';
SQL>
Затем введите следующую команду ISQL:
SQL> SHOW SQL DIALECT;
Client SQL dialect is set to: 3 and database dialect is: 3
(Диалект SQL клиента установлен в: 3, диалект базы данных: 3)
Это хорошо. Если вы найдете несоответствие, это ничему не повредит, если вы не будете пытаться добавлять или изменять данные. Вы должны принять меры, чтобы гарантировать использование клиентом корректного диалекта.
Предположим, что сейчас в isql вы хотите закрыть ваше соединение с текущей базой данных и соединиться с другой базой данных, о которой вы знаете, что она в диалекте 1. Вот что вы делаете:
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 автоматически выполняет преобразования между числами с фиксированной точкой, с плавающей точкой и строковыми типами данных при выполнении операций над смешанными типами данных. Когда операция является сравнением или арифметической операцией, включающей числовые и нечисловые типы данных, то сначала данные преобразуются в числовой тип, а затем выполняется операция.