本节试图概述 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 中尚不支持的功能列表。这两个列表都是近似的:列为支持的功能可能存在一些不符合标准的细节,并且不支持的功能的大部分实际上可能已实现。文档的主体始终包含有关哪些功能有效和无效的最准确信息。
包含连字符的功能代码是子功能。因此,如果某个特定子功能不受支持,则即使某些其他子功能受支持,也会将主要功能列为不受支持。
如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用此表单 报告文档问题。