这一节尝试勾勒出PostgreSQL与当前 SQL 标准相符合的范围。下面的信息并不是符合性的完整说明,但是它尽可能详细地表达了对用户合理且有用的主要主题。
SQL标准的正式名称是ISO/IEC 9075 “数据库语言SQL”。 标准的修订版本会不时发布;最近的一次更新出现在2023年。 2023版本被称为ISO/IEC 9075:2023,或简称为SQL:2023。 在此之前的版本包括SQL:2016、SQL:2011、SQL:2008、SQL:2006、SQL:2003、 SQL:1999和SQL-92。每个版本都会取代前一个版本,因此声称符合早期版本 的说法没有官方意义。 PostgreSQL的开发目标是与最新的官方标准版本 保持一致,但前提是这种一致性不会与传统功能或常识相矛盾。 SQL标准要求的许多功能都得到了支持,尽管有时语法或功能略有不同。 随着时间的推移,可以期待进一步向标准一致性迈进。
SQL-92为符合性定义了三个特性集:入口、中间和完整。大部分号称SQL标准符合的数据库管理系统只是在入口级别上的符合,因为中间和完整级别的整个特性集合要么太多要么与遗留行为冲突。
从SQL:1999开始,SQL 标准定义了一个大型的个体特性集合,而没有无用地拓宽SQL-92中的三个级别。 这些特性中的一个大型子集代表“核心”特性,每一个符合 SQL 的实现都必须提供。剩下的特性纯粹是可选的。
标准分为多个部分,每个部分也有一个简称:
ISO/IEC 9075-1 框架 (SQL/Framework)
ISO/IEC 9075-2 基础 (SQL/Foundation)
ISO/IEC 9075-3 调用级接口 (SQL/CLI)
ISO/IEC 9075-4 持久存储模块 (SQL/PSM)
ISO/IEC 9075-9 外部数据管理 (SQL/MED)
ISO/IEC 9075-10 对象语言绑定 (SQL/OLB)
ISO/IEC 9075-11 信息和定义模式 (SQL/Schemata)
ISO/IEC 9075-13 使用 Java 语言的例程和类型 (SQL/JRT)
ISO/IEC 9075-14 与 XML 相关的规范 (SQL/XML)
ISO/IEC 9075-15 多维数组 (SQL/MDA)
ISO/IEC 9075-16 属性图查询 (SQL/PGQ)
请注意,某些部分编号未使用(或不再使用)。
PostgreSQL核心涵盖了第1、2、9、11和14部分。第3部分由 ODBC驱动程序涵盖,第13部分由PL/Java插件涵盖,但目前尚未对这些组件进行精确 的符合性验证。目前还没有针对PostgreSQL的第4、 10、15和16部分的实现。
PostgreSQL 支持 SQL:2023 的大多数主要功能。在实现完全核心兼容性 所需的 177 项强制功能中,PostgreSQL 至少符合 170 项。此外,还有 一长串支持的可选功能。值得注意的是,在撰写本文时,没有任何版本的 数据库管理系统声称完全符合核心 SQL:2023。
在接下来的两个部分中,我们提供了PostgreSQL 支持的功能列表,接着是SQL:2023中定义但尚未被 PostgreSQL支持的功能列表。 这两个列表都是近似的:对于标记为支持的功能,可能存在一些不符合规范的 细节,而对于不支持的功能,大部分内容实际上可能已经实现。 文档的主体部分始终包含关于哪些功能可用或不可用的最准确信息。
包含一个连字符的特性编码是子特性。因此,如果一个特定的子特性没有被支持,其主特性被列为未支持,即使其他的子特性都已被支持。