SQL方言
SQL方言是一个术语,它定义了特定的SQL语言的特点,用于访问数据库。可以在数据库级别上定义的SQL方言和指定连接级别。三种方言是可用的:
方言1的目的是允许向后兼容从非常老的Interbase版本遗留下来的数据库,包括V.5及以下版本。方言1数据库保留某些语言特性不同于方言3,方言3为Firebird数据库默认。
-日期和时间信息都存储在数据类型为日期。时间戳数据类型也是可用的,这个日期的实现是一样的。
-双引号可用作替代撇号(即')分隔的字符串数据。这有悖于SQL标准,双引号被保留为标准SQL和独特的语法的目的在方言3中.因此双引号字符串要极力避免。
-数值和小数类数据类型的精度小于方言3,如果精度固定的十进制数大于9,在内部Firebird将其作为一个浮点值存储。
- 不支持大整型数据型(64位整型)
- 标识符是不区分大小写,必须始终遵守常规标识符的规则 — — 请参阅下面标题为"标识符"的一节。
- 虽然序列号生成器的值被存储为 64 位整数,方言 1 客户端请求,SELECT GEN_ID(MyGen, 1),这个例子将返回序列号生成器的值截断为 32 位。
方言 2 仅在火鸟客户端连接上可用,并且不能设置在数据库中。其目的是为帮助调试的遗留数据可能存在的问题,当迁移数据库从方言 1 到 3 时。
在方言 3 数据库中
- 数字(小数和数值数据类型)被当作一个长的定点值(缩放整数)存储在内部,当精度大于9时。
- 时间数据类型仅存储时段数据可用。
- 日期数据类型只存储日期信息。
- 64位整型数据型大整型有效。
- 双引号被留给划定非常规标识符,使对象名称是区分大小写或许不符合常规标识符在其他方面的要求。
- 所有字符串必须用单引号(撇号)作分隔。
- 序列号生成器值被存储为 64 位整数。
重要提示
强烈建议为新开发的数据库和应用程序使用方言 3 。数据库和连接方言必须匹配,方言 2 迁移条件下除外。
此参考描述的语义的 SQL 为方言 3,除非另有指定。
错误条件
处理的每个 SQL 语句要么完全成功,要么因特定的错误条件而失败。