SQL兼容性

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# 附录 D. SQL兼容性

本节试图描述PostgreSQL在多大程度上遵循SQL标准。 下面的信息不是兼容性的全部内容， 但是它提供了一个从用户角度来看， 既合理又有用的足够的细节信息。

SQL标准的正式名称是ISO/IEC 9075 "Database Language SQL"。 标准的修改版会经常地发布； 最近更新的一个版本出现在2011年。 那个版本被称作ISO/IEC 9075:2011， 或者简称SQL:2011。 这个版本之前的是SQL:2008, SQL:2003, SQL:1999和SQL-92。 每个版本都替代前面那个， 所以声称兼容早期版本没有什么官方的好处。 PostgreSQL开发瞄准兼容标准最新官方版本， 只要这样的兼容不会与传统的特性或者常识冲突。 许多SQL标准要求的特性都得到了支持， 只是有些时候语法或者函数略微不同。 更多有关标准兼容的特性将在未来的版本里看到。

SQL-92为兼容性定义了三种特性集合： Entry, Intermediate和Full。大部分数据库管理系统声明在Entry 级别遵循SQL标准兼容性， 因为中等和完全的特性要么是太庞大， 要么就是和传统的行为相冲突。

从SQL:1999开始，SQL标准定义了一个很大的独立特性集合， 而不是SQL-92那样宽泛而又低效率的三个级别。 这些特性中的一个很大的子集形成"核心"特性， 它们是每种兼容SQL的实现必须提供的特性。 其它的特性都是可选的。有些可选的特性组合在一起形成"包"， SQL的实现可以号称遵循这些包， 也就是声称遵循特定的特性组。

SQL:2003标准也分裂成一系列部分： 每种都用一个缩写来标识。请注意这些部分并非连续编号的。

- ISO/IEC 9075-1 Framework (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)

PostgreSQL涵盖1,2,9,11和14。3被ODBC驱动覆盖， 13被PL/Java插件覆盖。但是这些组件目前没有严格的兼容检查。 目前没有实现PostgreSQL的第4和10部分。

PostgreSQL支持大多数SQL:2011的主要特性。 在总共179个强制要求完全兼容的核心特性里， PostgreSQL遵循至少160个。另外， PostgreSQL还支持一长串可选的特性。 值得一提的是，在写这些的时候， 没有任何当前版本的数据库管理系统声称支持全部核心SQL:2011。

下面的两节列出了PostgreSQL支持的特性， 以及PostgreSQL目前尚不支持的SQL:2011特性。 这两个列表都是近似的： 被列为支持的特性可能在某些次要细节方面与标准不一致， 被列为不支持的特性也可能实际上已经被实现。 文档的主体部分包含了大多数能否正常工作的精确信息。

> 注意: 包含一个连字符的特性代码表示一个子特性。 因此，如果不支持特定的子特性， 那么主特性也会列在不支持的特性， 即使支持其它的子特性也如此。

上一页 | 起始页 | 下一页
SQL关键字 | 上一级 | 支持的特性