2025年9月25日: PostgreSQL 18 发布!
支持的版本:当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本:开发版
不支持的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

附录 D. SQL 兼容性

本节旨在概述 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 中尚不支持的功能列表。这两个列表都是近似的:某个被列为支持的功能可能存在不兼容的细节,而一个不支持的功能可能在很大程度上已经被实现。文档的正文始终包含关于什么可行和什么不可行的最准确信息。

注意

包含连字符的功能代码是子功能。因此,如果某个特定的子功能不受支持,即使该主功能的其他某些子功能得到支持,该主功能仍被列为不受支持。

提交更正

如果您在文档中发现任何不正确、与您对特定功能的体验不符或需要进一步澄清的内容,请使用此表格报告文档问题。