↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 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 “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为符合性定义了三个特性集:入门(Entry)、中级(Intermediate)和完整(Full)。多数宣称符合SQL标准的数据库管理系统,实际上只符合入门(Entry)级别,因为中级(Intermediate)和完整(Full)级别中的全部特性要么过于庞杂,要么与既有行为相冲突。

从SQL:1999开始,SQL 标准不再沿用SQL-92中那种效果不佳且过于宽泛的三级分类,而是定义了大量独立特性。其中很大一个子集构成了核心(“Core”)特性,也就是每个符合 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 个。此外,还有一长串已支持的可选特性。值得一提的是,在写作本文时,还没有任何数据库管理系统的现行版本宣称完全符合 SQL:2023 的核心要求。

接下来的两节先列出PostgreSQL已支持的特性,再列出SQL:2023中定义但PostgreSQL尚未支持的特性。这两个列表都只是近似描述:某个被列为已支持的特性,可能仍有少量细节并不完全符合标准;反之,一个被列为不支持的特性,其很大一部分实际上也可能已经实现。关于哪些内容可用、哪些内容不可用,文档正文始终是最准确的信息来源。

注意

带连字符的特性代码表示子特性。因此,如果某个特定子特性不受支持,则即使该主特性的其他子特性受支持,该主特性也会被列为不受支持。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。英文原文本身的问题请通过上游文档表单反馈给 PostgreSQL 文档维护者。