# 附录D.SQL一致性
目录
D.1.支持的功能D.2.不支持的功能D.3.XML限制和与SQL/XML的一致性D.3.1.查询仅限于XPath 1.0D.3.2.实施的附带限制
本节试图概述PostgreSQL在多大程度上符合当前的SQL标准。以下信息不是完整的一致性声明,但它尽可能详细地介绍了主要主题,对用户来说既合理又有用。
SQL标准的正式名称是ISO/IEC 9075“数据库语言SQL”。本标准的修订版不时发布;最新更新出现在2016年。2016版被称为ISO/IEC 9075:2016,或简称为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实现都必须提供这些特性。其余的功能完全是可选的。
以SQL:2003开头的标准版本也分为若干部分。每个都有一个简写的名字。请注意,这些零件没有连续编号。
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)
PostgreSQL核心包括第1、2、9、11和14部分。ODBC驱动程序涵盖了第3部分,PL/Java插件涵盖了第13部分,但目前尚未验证这些组件的确切一致性。目前没有针对PostgreSQL的第4、10和15部分的实现。
PostgreSQL支持SQL:2016的大部分主要功能。在完整核心一致性所需的177项强制性功能中,PostgreSQL至少符合170项。此外,还有一长串受支持的可选功能。值得注意的是,在撰写本文时,没有任何数据库管理系统的当前版本声称完全符合核心SQL:2016.
在以下两个部分中,我们将列出PostgreSQL支持的功能,然后是SQL:2016中定义的PostgreSQL尚不支持的功能。这两个列表都是近似的:对于被列为受支持的功能,可能存在不符合要求的次要细节,而事实上可能实现了不受支持功能的大部分。文档的主体部分总是包含关于什么起作用和什么不起作用的最准确信息。
# 笔记
包含连字符的要素代码是子要素。因此,如果某一特定子功能不受支持,则即使支持其他一些子功能,主功能也会被列为不受支持。