↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 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 8.0 已结束支持。 请参阅 当前版本手册.

附录 D. SQL 符合性

本节尝试概述PostgreSQL在多大程度上符合当前的 SQL 标准。下文并不是一份完整的符合性声明,但会在合理且对用户有用的范围内,尽可能详细地介绍主要主题。

SQL 标准的正式名称是 ISO/IEC 9075“数据库语言 SQL”。该标准不时发布修订版本;最近一次发布于 2003 年末。该版本称为 ISO/IEC 9075:2003,或简称 SQL:2003。在此之前的版本是 SQL:1999 和 SQL-92。每个版本都取代前一个版本,因此声称符合早期版本并没有官方意义。PostgreSQL的开发目标是在不与传统特性或常识相矛盾的前提下,符合该标准的最新官方版本。在 SQL:2003 的制定期间,PostgreSQL 项目并未参与 ISO/IEC 9075 工作组。即便如此,SQL:2003 所要求的许多特性已经得到支持,尽管有时语法或功能略有差异。可以预期在后续版本中会进一步向标准靠拢。

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

从SQL:1999开始,SQL 标准不再沿用SQL-92中那种效果不佳且过于宽泛的三级分类,而是定义了大量独立特性。其中很大一个子集构成了核心(“Core”)特性,也就是每个符合 SQL 标准的实现都必须提供的特性。其余特性则完全是可选的。某些可选特性被组合在一起,形成“包”,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)

PostgreSQL涵盖第 1、2 和 11 部分。第 3 部分类似于 ODBC 接口,第 4 部分类似于 PL/pgSQL编程语言,但在两种情况下都未专门意图或核验确切符合性。

PostgreSQL 支持 SQL:2003 的大部分主要特性。在完全符合 Core 所要求的 164 个强制特性中,PostgreSQL 至少符合 150 个。此外,还有一长串受支持的可选特性。值得注意的是,截至撰写时,尚无任何数据库管理系统的当前版本声称完全符合 Core SQL:2003。

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

注意

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

D.1. 支持的特性 #

标识符包描述注释
B012 Embedded C 
B021 Direct SQL 
E011CoreNumeric data types 
E011-01CoreINTEGER and SMALLINT data types 
E011-02CoreREAL, DOUBLE PRECISION, and FLOAT data types 
E011-03CoreDECIMAL and NUMERIC data types 
E011-04CoreArithmetic operators 
E011-05CoreNumeric comparison 
E011-06CoreImplicit casting among the numeric data types 
E021CoreCharacter data types 
E021-01CoreCHARACTER data type 
E021-02CoreCHARACTER VARYING data type 
E021-03CoreCharacter literals 
E021-04CoreCHARACTER_LENGTH functiontrims trailing spaces from CHARACTER values before counting
E021-05CoreOCTET_LENGTH function 
E021-06CoreSUBSTRING function 
E021-07CoreCharacter concatenation 
E021-08CoreUPPER and LOWER functions 
E021-09CoreTRIM function 
E021-10CoreImplicit casting among the character string types 
E021-11CorePOSITION function 
E021-12CoreCharacter comparison 
E031CoreIdentifiers 
E031-01CoreDelimited identifiers 
E031-02CoreLower case identifiers 
E031-03CoreTrailing underscore 
E051CoreBasic query specification 
E051-01CoreSELECT DISTINCT 
E051-02CoreGROUP BY clause 
E051-04CoreGROUP BY can contain columns not in <select list> 
E051-05CoreSelect list items can be renamedAS is required
E051-06CoreHAVING clause 
E051-07CoreQualified * in select list 
E051-08CoreCorrelation names in the FROM clause 
E051-09CoreRename columns in the FROM clause 
E061CoreBasic predicates and search conditions 
E061-01CoreComparison predicate 
E061-02CoreBETWEEN predicate 
E061-03CoreIN predicate with list of values 
E061-04CoreLIKE predicate 
E061-05CoreLIKE predicate ESCAPE clause 
E061-06CoreNULL predicate 
E061-07CoreQuantified comparison predicate 
E061-08CoreEXISTS predicate 
E061-09CoreSubqueries in comparison predicate 
E061-11CoreSubqueries in IN predicate 
E061-12CoreSubqueries in quantified comparison predicate 
E061-13CoreCorrelated subqueries 
E061-14CoreSearch condition 
E071CoreBasic query expressions 
E071-01CoreUNION DISTINCT table operator 
E071-02CoreUNION ALL table operator 
E071-03CoreEXCEPT DISTINCT table operator 
E071-05CoreColumns combined via table operators need not have exactly the same data type 
E071-06CoreTable operators in subqueries 
E081-01CoreSELECT privilege 
E081-02CoreDELETE privilege 
E081-03CoreINSERT privilege at the table level 
E081-04CoreUPDATE privilege at the table level 
E081-06CoreREFERENCES privilege at the table level 
E081-08CoreWITH GRANT OPTION 
E081-10CoreEXECUTE privilege 
E091CoreSet functions 
E091-01CoreAVG 
E091-02CoreCOUNT 
E091-03CoreMAX 
E091-04CoreMIN 
E091-05CoreSUM 
E091-06CoreALL quantifier 
E091-07CoreDISTINCT quantifier 
E101CoreBasic data manipulation 
E101-01CoreINSERT statement 
E101-03CoreSearched UPDATE statement 
E101-04CoreSearched DELETE statement 
E111CoreSingle row SELECT statement 
E121-01CoreDECLARE CURSOR 
E121-02CoreORDER BY columns need not be in select list 
E121-03CoreValue expressions in ORDER BY clause 
E121-04CoreOPEN statement 
E121-08CoreCLOSE statement 
E121-10CoreFETCH statement implicit NEXT 
E121-17CoreWITH HOLD cursors 
E131CoreNull value support (nulls in lieu of values) 
E141CoreBasic integrity constraints 
E141-01CoreNOT NULL constraints 
E141-02CoreUNIQUE constraints of NOT NULL columns 
E141-03CorePRIMARY KEY constraints 
E141-04CoreBasic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update action 
E141-06CoreCHECK constraints 
E141-07CoreColumn defaults 
E141-08CoreNOT NULL inferred on PRIMARY KEY 
E141-10CoreNames in a foreign key can be specified in any order 
E151CoreTransaction support 
E151-01CoreCOMMIT statement 
E151-02CoreROLLBACK statement 
E152CoreBasic SET TRANSACTION statement 
E152-01CoreSET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clause 
E152-02CoreSET TRANSACTION statement: READ ONLY and READ WRITE clauses 
E161CoreSQL comments using leading double minus 
E171CoreSQLSTATE support 
F021CoreBasic information schema 
F021-01CoreCOLUMNS view 
F021-02CoreTABLES view 
F021-03CoreVIEWS view 
F021-04CoreTABLE_CONSTRAINTS view 
F021-05CoreREFERENTIAL_CONSTRAINTS view 
F021-06CoreCHECK_CONSTRAINTS view 
F031CoreBasic schema manipulation 
F031-01CoreCREATE TABLE statement to create persistent base tables 
F031-02CoreCREATE VIEW statement 
F031-03CoreGRANT statement 
F031-04CoreALTER TABLE statement: ADD COLUMN clause 
F031-13CoreDROP TABLE statement: RESTRICT clause 
F031-16CoreDROP VIEW statement: RESTRICT clause 
F031-19CoreREVOKE statement: RESTRICT clause 
F032 CASCADE drop behavior 
F033 ALTER TABLE statement: DROP COLUMN clause 
F034 Extended REVOKE statement 
F034-01 REVOKE statement performed by other than the owner of a schema object 
F034-02 REVOKE statement: GRANT OPTION FOR clause 
F034-03 REVOKE statement to revoke a privilege that the grantee has WITH GRANT OPTION 
F041CoreBasic joined table 
F041-01CoreInner join (but not necessarily the INNER keyword) 
F041-02CoreINNER keyword 
F041-03CoreLEFT OUTER JOIN 
F041-04CoreRIGHT OUTER JOIN 
F041-05CoreOuter joins can be nested 
F041-07CoreThe inner table in a left or right outer join can also be used in an inner join 
F041-08CoreAll comparison operators are supported (rather than just =) 
F051CoreBasic date and time 
F051-01CoreDATE data type (including support of DATE literal) 
F051-02CoreTIME data type (including support of TIME literal) with fractional seconds precision of at least 0 
F051-03CoreTIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6 
F051-04CoreComparison predicate on DATE, TIME, and TIMESTAMP data types 
F051-05CoreExplicit CAST between datetime types and character string types 
F051-06CoreCURRENT_DATE 
F051-07CoreLOCALTIME 
F051-08CoreLOCALTIMESTAMP 
F052Enhanced datetime facilitiesIntervals and datetime arithmetic 
F053 OVERLAPS predicate 
F081CoreUNION and EXCEPT in views 
F111 Isolation levels other than SERIALIZABLE 
F111-01 READ UNCOMMITTED isolation level 
F111-02 READ COMMITTED isolation level 
F111-03 REPEATABLE READ isolation level 
F131CoreGrouped operations 
F131-01CoreWHERE, GROUP BY, and HAVING clauses supported in queries with grouped views 
F131-02CoreMultiple tables supported in queries with grouped views 
F131-03CoreSet functions supported in queries with grouped views 
F131-04CoreSubqueries with GROUP BY and HAVING clauses and grouped views 
F131-05CoreSingle row SELECT with GROUP BY and HAVING clauses and grouped views 
F171 Multiple schemas per user 
F191Enhanced integrity managementReferential delete actions 
F201CoreCAST function 
F221CoreExplicit defaults 
F222 INSERT statement: DEFAULT VALUES clause 
F231 Privilege tables 
F231-01 TABLE_PRIVILEGES view 
F231-02 COLUMN_PRIVILEGES view 
F231-03 USAGE_PRIVILEGES view 
F251 Domain support 
F261CoreCASE expression 
F261-01CoreSimple CASE 
F261-02CoreSearched CASE 
F261-03CoreNULLIF 
F261-04CoreCOALESCE 
F271 Compound character literals 
F281 LIKE enhancements 
F302 INTERSECT table operator 
F302-01 INTERSECT DISTINCT table operator 
F302-02 INTERSECT ALL table operator 
F304 EXCEPT ALL table operator 
F311-01CoreCREATE SCHEMA 
F311-02CoreCREATE TABLE for persistent base tables 
F311-03CoreCREATE VIEW 
F311-05CoreGRANT statement 
F321 User authorization 
F361 Subprogram support 
F381 Extended schema manipulation 
F381-01 ALTER TABLE statement: ALTER COLUMN clause 
F381-02 ALTER TABLE statement: ADD CONSTRAINT clause 
F381-03 ALTER TABLE statement: DROP CONSTRAINT clause 
F391 Long identifiers 
F401 Extended joined table 
F401-01 NATURAL JOIN 
F401-02 FULL OUTER JOIN 
F401-04 CROSS JOIN 
F411Enhanced datetime facilitiesTime zone specificationdifferences regarding literal interpretation
F421 National character 
F431 Read-only scrollable cursors 
F431-01 FETCH with explicit NEXT 
F431-02 FETCH FIRST 
F431-03 FETCH LAST 
F431-04 FETCH PRIOR 
F431-05 FETCH ABSOLUTE 
F431-06 FETCH RELATIVE 
F441 Extended set function support 
F471CoreScalar subquery values 
F481CoreExpanded NULL predicate 
F491Enhanced integrity managementConstraint management 
F501CoreFeatures and conformance views 
F501-01CoreSQL_FEATURES view 
F501-02CoreSQL_SIZING view 
F501-03CoreSQL_LANGUAGES view 
F502 Enhanced documentation tables 
F502-01 SQL_SIZING_PROFILES view 
F502-02 SQL_IMPLEMENTATION_INFO view 
F502-03 SQL_PACKAGES view 
F531 Temporary tables 
F555Enhanced datetime facilitiesEnhanced seconds precision 
F561 Full value expressions 
F571 Truth value tests 
F591 Derived tables 
F611 Indicator data types 
F651 Catalog name qualifiers 
F672 Retrospective check constraints 
F701Enhanced integrity managementReferential update actions 
F711 ALTER domain 
F761 Session management 
F771 Connection management 
F781 Self-referencing operations 
F791 Insensitive cursors 
F801 Full set function 
S071Enhanced object supportSQL paths in function and type name resolution 
S111Enhanced object supportONLY in query expressions 
S211Enhanced object supportUser-defined cast functions 
T031 BOOLEAN data type 
T071 BIGINT data type 
T141 SIMILAR predicate 
T151 DISTINCT predicate 
T171 LIKE clause in table definition 
T191Enhanced integrity managementReferential action RESTRICT 
T201Enhanced integrity managementComparable data types for referential constraints 
T211-01Active database, Enhanced integrity managementTriggers activated on UPDATE, INSERT, or DELETE of one base table 
T211-02Active database, Enhanced integrity managementBEFORE triggers 
T211-03Active database, Enhanced integrity managementAFTER triggers 
T211-04Active database, Enhanced integrity managementFOR EACH ROW triggers 
T211-07Active database, Enhanced integrity managementTRIGGER privilege 
T212Enhanced integrity managementEnhanced trigger capability 
T231 Sensitive cursors 
T241 START TRANSACTION statement 
T271 Savepoints 
T312 OVERLAY function 
T321-01CoreUser-defined functions with no overloading 
T321-03CoreFunction invocation 
T321-06CoreROUTINES view 
T321-07CorePARAMETERS view 
T322PSMOverloading of SQL-invoked functions and procedures 
T323 Explicit security for external routines 
T351 Bracketed SQL comments (/*...*/ comments) 
T441 ABS and MOD functions 
T501 Enhanced EXISTS predicate 
T551 Optional key words for default syntax 
T581 Regular expression substring function 
T591 UNIQUE constraints of possibly null columns 

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.