Диалекты SQL
SQL диалект — это термин, определяющий специфические особенности языка SQL, которые доступны во время доступа с его помощью к базе данных. SQL диалект может быть определён как на уровне базы данных, так и на уровне соединения с базой данных. В настоящее время доступны три диалекта:
-
Диалект 1 предназначен исключительно для обеспечения обратной совместимости с устаревшими базами данных из очень старых версий InterBase, v.5 и ниже. Базы данных Dialect 1 сохраняют определенные языковые особенности, которые отличаются от Dialect 3, используемого по умолчанию для баз данных Firebird.
-
Информация о дате и времени хранится в типе данных
DATE
. Имеется тип данныхTIMESTAMP
, который идентиченDATE
. -
Двойные кавычки могут использоваться как альтернатива апострофам для разделения строковых данных. Это противоречит стандарту SQL - двойные кавычки зарезервированы для особых синтаксических целей как в стандартном SQL, так и в диалекте 3. Поэтому строки с двойными кавычками следует избегать.
-
Точность типов данных
NUMERIC
иDECIMAL
меньше, чем в 3-м диалекте и в случае, если значение точности более 9, Firebird хранит такие значения как длинные значения с плавающей точкой. -
BIGINT не является доступным типом данных.
-
Идентификаторы нечувствительны к регистру и всегда должны соответствовать правилам для обычных идентификаторов — см. Раздел Идентификаторы ниже.
-
Хотя значения генератора хранятся как 64-битные целые числа, запрос клиента Dialect 1, например,
SELECT GEN_ID (MyGen, 1)
, вернет значение генератора, усеченное до 32 бит.
-
-
Диалект 2 доступен только в клиентском соединении к Firebird и не может быть применён к базе данных. Он предназначен для того, чтобы помочь в отладке в случае возможных проблем с целостностью данных при проведении миграции с диалекта 1 на 3.
-
В базах данных Диалекта 3:
-
Числа с типами данных DECIMAL и NUMERIC хранятся как длинные значения с фиксированной точкой (масштабируемые целые числа) в случае если точность числа больше 9.
-
Тип данных TIME доступен и используется для хранения значения только времени.
-
Тип данных DATE хранит информацию только о дате.
-
Тип данных BIGINT доступен в качестве целого 64-х битного типа данных.
-
Двойные кавычки могут использоваться, но только для идентификаторов, которые являются зависимыми от регистра, а не для строковых данных.
-
Все строки должны быть разделены одинарными кавычками (апострофам).
-
Значения генераторов возвращаются как 64-битное целое.
-
Important
|
Для вновь разрабатываемых баз данных и приложений настоятельно рекомендуется использовать 3-й диалект. Диалект при соединении с базой данных должен быть таким же, как и базы данных. Исключением является случай миграции с 1-го в 3-й диалект, когда в строке соединения с базой данных используется 2-й диалект. По умолчанию это руководство описывает семантику SQL третьего диалекта, если только в тексте явно не указывается диалект. |