本部分力图概述 PostgreSQL 到何种程度符合当前 SQL 标准。以下信息并非完全符合声明,但它以合理且对用户有用的方式呈现尽可能多的主要主题详细信息。
SQL 标准的正式名称为 ISO/IEC 9075 “Database Language 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 的大部分主要特性。对于完全 Core 符合性所需 177 个强制特性,PostgreSQL 符合其中至少 170 个。此外,还有一长串受支持的可选特性。值得注意的是,在编写本文时,没有任何数据库管理系统的当前版本声称完全符合 Core SQL:2023。
在以下两个章节中,我们提供了 PostgreSQL 支持的那些特性的列表,随后提供了SQL:2023中定义而 PostgreSQL 中尚未受支持的特性列表。这两个列表都是近似的:对于标为受支持的特性而言,可能存在不符合的次要细节,而事实上,未受支持的特性的大部分实际上可能已经得到实施。文档的主体部分始终包含关于什么可行、什么不可行的最准确的信息。
包含连字符的特性代码是子特性。因此,如果一个特定的子特性不受支持,则主特性将列为不受支持,即使其他一些子特性受支持。