HSQLDB 支持的 SQL 标准

HyperSQL 2.0 支持 SQL 标准92,1999,2003 中定义的 SQL 方言。这就意味着 HSQLDB 能够支持上面标准中涉及到的所有特性。

例如一些特性:left out join 等,这些特性都能在相关的标准中找到。

所有 SQL-92 中的句法特性和高级特性也能够被很好的支持,一些在 SQL:2008 中涉及到的一些可选特性也被支持了。SQL 标准的一致性工作也在不停的改变和统一中。

换句话说,HyperSQL 是所有开源关系数据库中能够对 SQL 标准支持得最好的一种数据库。

本手册中的一些章节使用的句法可能随着时间的发展有所过时,当你为你的 HSQLDB 书写或者转换以及存在的 SQL DDL (数据定义语言),DML(数据操作语言)或DQL(数据查询语言)的时候,你需要查看下支持的句法,同时对你使用的老的 SQL 语句进行一些修改。

有差不多超过 300 多个关键字为保留关键字,你不能在你的表名和列名中使用这些关键字。例如关键字 POSITION 为函数定义的时候使用的保留关键字,这个与在 Java 程序中使用的方法 String.indexOf() 又很接近。

例如 CUBE 为 SQL 标准的保留关键字,这个关键字现在还不能在 HSQLDB 中被支持,但是这个关键字是可以在表名和列名中使用的。

你应该尽可能的不要在你的表名和列名中使用这样的关键字,因为这些关键字有可能被数据库拒绝定义或者查询。

完整的关键字列表,你可以参考相关的手册,使用 Google 等搜索引擎来进行搜索。

如果你是做希望在一些表名和列名中使用保留关键字,那么你可以使用双引号来包含这个关键字。

HyperSQL 同时也支持增强关键字和表达式,这部分并不是 SQL 的标准。

例如表达式:SELECT TOP 5 FROM .., SELECT LIMIT 0 10 FROM ... or DROP TABLE mytableIF EXISTS便使用了这样的结构。

你可以参考很多打印版本的 SQL 脚本和句法。如果你想对你的 SQL 脚本进行更好的组织,你也可以参考电子书: PostgreSQL:介绍与概念 http://www.postgresql.org/files/documentation/books/aw_pgsql/index.html 。上面这本书中描述的核心内容也适用于 HyperSQL。

HyperSQL 也定义了一些与其他数据库不同的关键字 (例如,OUTER,OID’s 等)和一些有不同用途的关键字 (IDENTITY/SERIAL, TRIGGER, SEQUENCE 等)。

在 HyperSQL 2.0 中,所有 JDBC 4.0 中描述的特性都能够被完全的支持。

与 JDBC 有关的相关类和文档,以及 HSQLDB 对 JDBC 进行定义的注解,你可以参考 HSQLDB 提供的相关 Java API 文档,这些内容将会在类 org.hsqldb.jdbc.* 中进行定义和描述。