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

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
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

附录 C. SQL 符合性

本节尝试概述 PostgreSQL 在多大程度上符合 SQL 标准。完全符合该标准或给出一份完整的符合性声明既复杂又没有特别的 用处,因此本节只能给出一个概览。

SQL 标准的正式名称是 ISO/IEC 9075“数据库语言 SQL”。该标准不时发布修订版本; 最近一次出现在 1999 年。那个版本称为 ISO/IEC 9075:1999,或非正式地称为 SQL99。 在此之前的版本是 SQL92。 PostgreSQL 的开发倾向于 在不与传统特性或常识相矛盾的前提下,以符合该标准的最新官方版本为目标。 在撰写本文时,该标准的一次新修订正在投票表决中,如果获得批准,它最终将成为未来 PostgreSQL 开发的符合性目标。

SQL92 为符合性定义了三个特性集:入门(Entry)、中级(Intermediate) 和完整(Full)。多数宣称符合 SQL 标准的数据库产品, 实际上只符合入门级别,因为中级和完整级别中的全部特性 要么过于庞杂,要么与既有行为相冲突。

SQL99 定义了大量独立特性,而不是 SQL92 中那种效果不佳且过于宽泛的三级分类。其中很大一个子集构成了 “核心”特性,也就是每个符合标准的 SQL 实现都必须提供的特性。 其余的特性则完全是可选的。 某些可选特性被组合在一起,形成“包”,SQL 实现可以声明符合这些包, 从而表明符合特定的特性组。

SQL99 标准也分为 5 个部分: 框架(Framework)、基础(Foundation)、调用级接口(Call Level Interface)、持久存储 模块(Persistent Stored Modules)和宿主语言绑定(Host Language Bindings)。 PostgreSQL 只涵盖第 1、2、5 部分。 第 3 部分类似于 ODBC 接口,第 4 部分类似于 PL/pgSQL 编程语言,但这两种情况下都没有特别意图实现 精确的符合。

在下面两节中,我们先列出 PostgreSQL 支持的特性, 然后列出 SQL99 中定义但 PostgreSQL 尚不支持的 特性。这两个列表都是近似的:被列为受支持的特性可能存在个别不符合标准的细节, 而不受支持的特性也可能实际上已实现了很大一部分。关于什么可用什么不可用的 最准确信息,始终以文档正文为准。

注意

特性代码中包含连字符的是子特性。因此,如果某个特定的子特性不受支持, 那么即使其他一些子特性受支持,该主特性也会被列为不受支持。

C.1. 支持的特性 #

标识符 包 描述 注释
B012 核心 嵌入式 C  
B021   直接 SQL  
E011 核心 数值数据类型  
E011-01 核心 INTEGER 和 SMALLINT 数据类型  
E011-02 核心 REAL、DOUBLE PRECISON 和 FLOAT 数据类型  
E011-03 核心 DECIMAL 和 NUMERIC 数据类型  
E011-04 核心 算术操作符  
E011-05 核心 数值比较  
E011-06 核心 数值数据类型之间的隐式转换  
E021 核心 字符数据类型  
E021-01 核心 CHARACTER 数据类型  
E021-02 核心 CHARACTER VARYING 数据类型  
E021-03 核心 字符字面量  
E021-04 核心 CHARACTER_LENGTH 函数  
E021-05 核心 OCTET_LENGTH 函数  
E021-06 核心 SUBSTRING 函数  
E021-07 核心 字符连接  
E021-08 核心 UPPER 和 LOWER 函数  
E021-09 核心 TRIM 函数  
E021-10 核心 字符数据类型之间的隐式转换  
E021-11 核心 POSITION 函数  
E011-12 核心 字符比较  
E031 核心 标识符  
E031-01 核心 分隔标识符  
E031-02 核心 小写标识符  
E031-03 核心 尾部下划线  
E051 核心 基本查询说明  
E051-01 核心 SELECT DISTINCT  
E051-02 核心 GROUP BY 子句  
E051-04 核心 GROUP BY 可包含不在 <select list> 中的列  
E051-05 核心 选择列表项可以重命名 需要 AS
E051-06 核心 HAVING 子句  
E051-07 核心 选择列表中带限定符的 *  
E051-08 核心 FROM 子句中的相关名称  
E051-09 核心 在 FROM 子句中重命名列  
E061 核心 基本谓词和搜索条件  
E061-01 核心 比较谓词  
E061-02 核心 BETWEEN 谓词  
E061-03 核心 带值列表的 IN 谓词  
E061-04 核心 LIKE 谓词  
E061-05 核心 LIKE 谓词 ESCAPE 子句  
E061-06 核心 NULL 谓词  
E061-07 核心 量化比较谓词  
E061-08 核心 EXISTS 谓词  
E061-09 核心 比较谓词中的子查询  
E061-11 核心 IN 谓词中的子查询  
E061-12 核心 量化比较谓词中的子查询  
E061-13 核心 相关子查询  
E061-14 核心 搜索条件  
E071 核心 基本查询表达式  
E071-01 核心 UNION DISTINCT 表操作符  
E071-02 核心 UNION ALL 表操作符  
E071-03 核心 EXCEPT DISTINCT 表操作符  
E071-05 核心 通过表操作符组合的列不必具有完全相同的数据类型  
E071-06 核心 子查询中的表操作符  
E081-01 核心 SELECT 权限  
E081-02 核心 DELETE 权限  
E081-03 核心 表级 INSERT 权限  
E081-04 核心 表级 UPDATE 权限  
E081-06 核心 表级 REFERENCES 权限  
E091 核心 集函数  
E091-01 核心 AVG  
E091-02 核心 COUNT  
E091-03 核心 MAX  
E091-04 核心 MIN  
E091-05 核心 SUM  
E091-06 核心 ALL 量词  
E091-07 核心 DISTINCT 量词  
E101 核心 基本数据操纵  
E101-01 核心 INSERT 语句  
E101-03 核心 搜索式 UPDATE 语句  
E101-04 核心 搜索式 DELETE 语句  
E111 核心 单行 SELECT 语句  
E121-01 核心 DECLARE CURSOR  
E121-02 核心 ORDER BY 的列不必在选择列表中  
E121-03 核心 ORDER BY 子句中的值表达式  
E121-08 核心 CLOSE 语句 (游标)
E121-10 核心 FETCH 语句隐式 NEXT  
E131 核心 空值支持(以空值代替值)  
E141 核心 基本完整性约束  
E141-01 核心 NOT NULL 约束  
E141-02 核心 NOT NULL 列的 UNIQUE 约束  
E141-03 核心 PRIMARY KEY 约束  
E141-04 核心 基本 FOREIGN KEY 约束,其引用删除动作和引用更新动作均默认为 NO ACTION  
E141-06 核心 CHECK 约束  
E141-07 核心 列默认值  
E141-08 核心 主键上隐含的 NOT NULL  
E141-10 核心 外键中的名称可以以任意顺序指定  
E151 核心 事务支持  
E151-01 核心 COMMIT 语句  
E151-02 核心 ROLLBACK 语句  
E152-01 核心 SET TRANSACTION 语句:ISOLATION LEVEL SERIALIZABLE 子句  
E161 核心 使用前导双减号的 SQL 注释  
F031 核心 基本模式操纵  
F031-01 核心 用于创建持久基表的 CREATE TABLE 语句  
F031-02 核心 CREATE VIEW 语句  
F031-03 核心 GRANT 语句  
F031-04 核心 ALTER TABLE 语句:ADD COLUMN 子句  
F031-13 核心 DROP TABLE 语句:RESTRICT 子句  
F031-16 核心 DROP VIEW 语句:RESTRICT 子句  
F032   CASCADE 删除行为  
F033   ALTER TABLE 语句:DROP COLUMN 子句  
F041 核心 基本连接表  
F041-01 核心 内连接(但不一定使用 INNER 关键字)  
F041-02 核心 INNER 关键字  
F041-03 核心 LEFT OUTER JOIN  
F041-04 核心 RIGHT OUTER JOIN  
F041-05 核心 外连接可以嵌套  
F041-07 核心 左或右外连接中的内表也可以用于内连接  
F041-08 核心 支持所有比较操作符(而不只是 =)  
F051 核心 基本日期和时间  
F051-01 核心 DATE 数据类型(包括对 DATE 字面量的支持)  
F051-02 核心 TIME 数据类型(包括对 TIME 字面量的支持),小数秒精度至少为 0  
F051-03 核心 TIMESTAMP 数据类型(包括对 TIMESTAMP 字面量的支持),小数秒精度至少为 0 和 6  
F051-04 核心 DATE、TIME 和 TIMESTAMP 数据类型上的比较谓词  
F051-05 核心 日期时间类型与字符类型之间的显式 CAST  
F051-06 核心 CURRENT_DATE  
F051-07 核心 LOCALTIME  
F051-08 核心 LOCALTIMESTAMP  
F052 增强的日期时间设施 间隔和日期时间算术  
F081 核心 视图中的 UNION 和 EXCEPT  
F111-02   READ COMMITTED 隔离级别  
F131 核心 分组操作  
F131-01 核心 带分组视图的查询中支持 WHERE、GROUP BY 和 HAVING 子句  
F131-02 核心 带分组视图的查询中支持多表  
F131-03 核心 带分组视图的查询中支持集函数  
F131-04 核心 带 GROUP BY、HAVING 子句和分组视图的子查询  
F131-05 核心 带 GROUP BY、HAVING 子句和分组视图的单行 SELECT  
F171   每用户多个模式  
F191 增强的完整性管理 引用删除动作  
F201 核心 CAST 函数  
F221 核心 显式默认值  
F222   INSERT 语句:DEFAULT VALUES 子句  
F251   域支持  
F261 核心 CASE 表达式  
F261-01 核心 简单 CASE  
F261-02 核心 搜索式 CASE  
F261-03 核心 NULLIF  
F261-04 核心 COALESCE  
F271   复合字符字面量  
F281   LIKE 增强  
F302 OLAP 设施 INTERSECT 表操作符  
F302-01 OLAP 设施 INTERSECT DISTINCT 表操作符  
F302-02 OLAP 设施 INTERSECT ALL 表操作符  
F304 OLAP 设施 EXCEPT ALL 表操作符  
F311 核心 模式定义语句  
F311-01 核心 CREATE SCHEMA  
F311-02 核心 用于持久基表的 CREATE TABLE  
F311-03 核心 CREATE VIEW  
F311-05 核心 GRANT 语句  
F321   用户授权  
F361   子程序支持  
F381   扩展模式操纵  
F381-01   ALTER TABLE 语句:ALTER COLUMN 子句  
F381-02   ALTER TABLE 语句:ADD CONSTRAINT 子句  
F381-03   ALTER TABLE 语句:DROP CONSTRAINT 子句  
F391   长标识符  
F401 OLAP 设施 扩展连接表  
F401-01 OLAP 设施 NATURAL JOIN  
F401-02 OLAP 设施 FULL OUTER JOIN  
F401-03 OLAP 设施 UNION JOIN  
F401-04 OLAP 设施 CROSS JOIN  
F411 增强的日期时间设施 时区规范  
F421   国家字符  
F431-01   带显式 NEXT 的 FETCH  
F431-04   FETCH PRIOR  
F431-06   FETCH RELATIVE  
F441   扩展集函数支持  
F471 核心 标量子查询值  
F481 核心 扩展 NULL 谓词  
F491 增强的完整性管理 约束管理  
F511   BIT 数据类型  
F531   临时表  
F555 增强的日期时间设施 增强的秒精度  
F561   完整值表达式  
F571   真值测试  
F591 OLAP 设施 派生表  
F611   指示符数据类型  
F651   目录名称限定符  
F701 增强的完整性管理 引用更新动作  
F761   会话管理  
F791   不敏感游标  
F801   完整集函数  
S071 增强的对象支持 函数和类型名称解析中的 SQL 路径  
S111 增强的对象支持 查询表达式中的 ONLY  
S211 增强的对象支持、SQL/MM 支持 用户定义的转换函数  
T031   BOOLEAN 数据类型  
T141   SIMILAR 谓词  
T151   DISTINCT 谓词  
T191 增强的完整性管理 引用动作 RESTRICT  
T201 增强的完整性管理 引用约束的可比较数据类型  
T211-01 增强的完整性管理 在一个基表的 UPDATE、INSERT 或 DELETE 上激活的触发器  
T211-02 增强的完整性管理 BEFORE 触发器  
T211-03 增强的完整性管理 AFTER 触发器  
T211-04 增强的完整性管理 FOR EACH ROW 触发器  
T211-07 增强的完整性管理 TRIGGER 权限  
T231   敏感游标  
T241   START TRANSACTION 语句  
T312   OVERLAY 函数  
T321-01 核心 无重载的用户定义函数  
T321-03 核心 函数调用  
T322 PSM、SQL/MM 支持 SQL 调用的函数和过程的重载  
T323   外部例程的显式安全性  
T351   括起的 SQL 注释(/*...*/ 注释)  
T441   ABS 和 MOD 函数  
T501   增强的 EXISTS 谓词  
T551   默认语法的可选关键字  
T581   正则表达式子串函数  
T591   可为空列的 UNIQUE 约束  

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。