Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Avance rapide | Suivant |
Cette section tente de mettre en évidence dans quelle mesure PostgreSQL est conforme au standard SQL actuel. L'information qui suit n'est pas une indication complète de compatibilité mais présente les thèmes principaux avec autant de détails que possible, c'est-à-dire en restant raisonnable et utile pour l'utilisateur.
Le nom complet du standard SQL est ISO/IEC 9075 << Database Language SQL >>. Une version revue du standard est publiée de temps en temps dont la plus récente date de la fin 2003. Cette version est référencée en temps que ISO/IEC 9075:2003, ou de manière informelle comme SQL:2003. Les versions précédentes à celle-ci étaient SQL:1999 et SQL-92. Chaque version remplace la précédente, donc toute indication de support des versions précédentes n'a aucun mérite. Le développement de PostgreSQL tend à se conformer à la dernière version officielle dans la mesure où celle-ci ne viendrait pas s'opposer aux fonctionnalités traditionnelles ou au bon sens. Le projet PostgreSQL n'était pas représenté dans le groupe de travail ISO/IEC 9075 Working Group lors de la préparation de SQL:2003. Malgré cela, un grand nombre des fonctionnalités requises par SQL:2003 sont déjà supportées, bien que, parfois, avec une syntaxe ou une fonction légèrement différente. Une meilleure compatibilité est attendue pour les prochaines versions.
SQL-92 définit trois ensembles de fonctionnalité pour le test de compatibilité : base, intermédiaire, complète. La majorité des systèmes de gestion de bases de données se disant compatibles au standard SQL sont en général conformes au niveau des bases en vertu du fait que l'ensemble des fonctionnalités des niveaux intermédiaire et complet sont soit trop volumineux soit en conflit avec des comportements précédemment implantés.
Avec SQL99, le standard SQL a défini un vaste ensemble de fonctionnalités individuelles à la place des trois niveaux de fonctionnalités définis dans SQL-92 et dont l'efficacité est discutable. Une grande partie représente les fonctionnalités << centrales >> que chaque implémentation de SQL doit fournir. Les fonctionnalités restantes sont purement optionnelles. Certaines de ces fonctionnalités optionnelles sont regroupées au sein de << paquetages >>. Une implémentation peut ainsi se dire conforme à certains paquetages, se déclarant ainsi conforme à des groupes particuliers de fonctions.
Le standard SQL:2003 est aussi divisée en un certain nombre de parties. Chacune est connu par un pseudonyme. Notez que ces parties ne sont pas numérotées dans l'ordre.
ISO/IEC 9075-1 Framework (SQL/Framework)
ISO/IEC 9075-2 Foundation (SQL/Foundation)
ISO/IEC 9075-3 Call Level Interface (SQL/CLI)
ISO/IEC 9075-4 Persistent Stored Modules (SQL/PSM)
ISO/IEC 9075-9 Management of External Data (SQL/MED)
ISO/IEC 9075-10 Object Language Bindings (SQL/OLB)
ISO/IEC 9075-11 Information and Definition Schemas (SQL/Schemata)
ISO/IEC 9075-13 Routines and Types using the Java Language (SQL/JRT)
ISO/IEC 9075-14 XML-related specifications (SQL/XML)
PostgreSQL couvre les parties 1, 2 et 11. La partie 3 est similaire à l'interface ODBC et la partie 4 est similaire au langage de programmation PL/pgSQL mais une compatibilité exacte n'est pas spécifiquement voulue ou vérifiée dans chaque cas.
PostgreSQL supporte la plupart des fonctionnalités majeures de SQL:2003. Des 164 fonctionnalités requises pour une compatibilité Core, PostgreSQL est conforme sur au moins 150. De plus, il existe une longue liste de fonctionnalités supplémentaires supportées. Il est important de noter qu'au moment de l'écriture de ce texte, aucune version actuelle d'un quelconque système de gestion de bases de données n'indique une compatibilité totale au Core de SQL:2003.
Dans les deux sections suivantes, nous fournissons une liste de ces fonctionnalités supportées par PostgreSQL suivies de la liste des fonctionnalités définies dans SQL:2003 qui ne sont pas encore prises en compte. Ces deux listes sont approximatives : certains détails mineurs peuvent ne pas être compatibles et certaines grandes parties d'une fonctionnalité non supportée peuvent avoir été implantées. Vous pourrez trouver des informations plus précises sur ce qui fonctionne ou ne fonctionne pas dans les différents chapitres principaux de la documentation.
Note : Les codes de fonctionnalités contenant un tiret sont des sous-fonctionnalités. Le cas échéant, si une sous-fonction n'est pas supportée, la fonctionnalité de niveau supérieur sera définie comme non supportée même si d'autres sous-fonctions lui appartenant sont supportées.
Identifiant | Paquetage | Description | Commentaire |
---|---|---|---|
B012 | Cœur | Intégration de C | |
B021 | SQL direct | ||
E011 | Cœur | Types de données numériques | |
E011-01 | Cœur | INTEGER and SMALLINT data types | |
E011-02 | Cœur | REAL, DOUBLE PRECISON, and FLOAT data types | |
E011-03 | Cœur | DECIMAL and NUMERIC data types | |
E011-04 | Cœur | Arithmetic operators | |
E011-05 | Cœur | Numeric comparison | |
E011-06 | Cœur | Implicit casting among the numeric data types | |
E021 | Cœur | Character data types | |
E021-01 | Cœur | CHARACTER data type | |
E021-02 | Cœur | CHARACTER VARYING data type | |
E021-03 | Cœur | Character literals | |
E021-04 | Cœur | CHARACTER_LENGTH function | |
E021-05 | Cœur | OCTET_LENGTH function | |
E021-06 | Cœur | SUBSTRING function | |
E021-07 | Cœur | Character concatenation | |
E021-08 | Cœur | UPPER and LOWER functions | |
E021-09 | Cœur | TRIM function | |
E021-10 | Cœur | Implicit casting among the character data types | |
E021-11 | Cœur | POSITION function | |
E021-12 | Cœur | Character comparison | |
E031 | Cœur | Identifiers | |
E031-01 | Cœur | Delimited identifiers | |
E031-02 | Cœur | Lower case identifiers | |
E031-03 | Cœur | Trailing underscore | |
E051 | Cœur | Basic query specification | |
E051-01 | Cœur | SELECT DISTINCT | |
E051-02 | Cœur | GROUP BY clause | |
E051-04 | Cœur | GROUP BY can contain columns not in <select list> | |
E051-05 | Cœur | Select list items can be renamed | AS is required |
E051-06 | Cœur | HAVING clause | |
E051-07 | Cœur | Qualified * in select list | |
E051-08 | Cœur | Correlation names in the FROM clause | |
E051-09 | Cœur | Rename columns in the FROM clause | |
E061 | Cœur | Basic predicates and search conditions | |
E061-01 | Cœur | Comparison predicate | |
E061-02 | Cœur | BETWEEN predicate | |
E061-03 | Cœur | IN predicate with list of values | |
E061-04 | Cœur | LIKE predicate | |
E061-05 | Cœur | LIKE predicate ESCAPE clause | |
E061-06 | Cœur | NULL predicate | |
E061-07 | Cœur | Quantified comparison predicate | |
E061-08 | Cœur | EXISTS predicate | |
E061-09 | Cœur | Subqueries in comparison predicate | |
E061-11 | Cœur | Subqueries in IN predicate | |
E061-12 | Cœur | Subqueries in quantified comparison predicate | |
E061-13 | Cœur | Correlated subqueries | |
E061-14 | Cœur | Search condition | |
E071 | Cœur | Basic query expressions | |
E071-01 | Cœur | UNION DISTINCT table operator | |
E071-02 | Cœur | UNION ALL table operator | |
E071-03 | Cœur | EXCEPT DISTINCT table operator | |
E071-05 | Cœur | Columns combined via table operators need not have exactly the same data type | |
E071-06 | Cœur | Table operators in subqueries | |
E081-01 | Cœur | SELECT privilege | |
E081-02 | Cœur | DELETE privilege | |
E081-03 | Cœur | INSERT privilege at the table level | |
E081-04 | Cœur | UPDATE privilege at the table level | |
E081-06 | Cœur | REFERENCES privilege at the table level | |
E081-08 | Cœur | WITH GRANT OPTION | |
E091 | Cœur | Set functions | |
E091-01 | Cœur | AVG | |
E091-02 | Cœur | COUNT | |
E091-03 | Cœur | MAX | |
E091-04 | Cœur | MIN | |
E091-05 | Cœur | SUM | |
E091-06 | Cœur | ALL quantifier | |
E091-07 | Cœur | DISTINCT quantifier | |
E101 | Cœur | Basic data manipulation | |
E101-01 | Cœur | INSERT statement | |
E101-03 | Cœur | Searched UPDATE statement | |
E101-04 | Cœur | Searched DELETE statement | |
E111 | Cœur | Single row SELECT statement | |
E121-01 | Cœur | DECLARE CURSOR | |
E121-02 | Cœur | ORDER BY columns need not be in select list | |
E121-03 | Cœur | Value expressions in ORDER BY clause | |
E121-08 | Cœur | CLOSE statement | |
E121-10 | Cœur | FETCH statement implicit NEXT | |
E121-17 | Cœur | WITH HOLD cursors | |
E131 | Cœur | Null value support (NULLs in lieu of values) | |
E141 | Cœur | Basic integrity constraints | |
E141-01 | Cœur | NOT NULL constraints | |
E141-02 | Cœur | UNIQUE constraints of NOT NULL columns | |
E141-03 | Cœur | PRIMARY KEY constraints | |
E141-04 | Cœur | Basic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update action | |
E141-06 | Cœur | CHECK constraints | |
E141-07 | Cœur | Column defaults | |
E141-08 | Cœur | NOT NULL inferred on PRIMARY KEY | |
E141-10 | Cœur | Names in a foreign key can be specified in any order | |
E151 | Cœur | Transaction support | |
E151-01 | Cœur | COMMIT statement | |
E151-02 | Cœur | ROLLBACK statement | |
E152 | Cœur | Basic SET TRANSACTION statement | |
E152-01 | Cœur | SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clause | |
E152-02 | Cœur | SET TRANSACTION statement: READ ONLY and READ WRITE clauses | |
E161 | Cœur | SQL comments using leading double minus | |
F021 | Cœur | Basic information schema | |
F021-01 | Cœur | COLUMNS view | |
F021-02 | Cœur | TABLES view | |
F021-03 | Cœur | VIEWS view | |
F021-04 | Cœur | TABLE_CONSTRAINTS view | |
F021-05 | Cœur | REFERENTIAL_CONSTRAINTS view | |
F021-06 | Cœur | CHECK_CONSTRAINTS view | |
F031 | Cœur | Basic schema manipulation | |
F031-01 | Cœur | CREATE TABLE statement to create persistent base tables | |
F031-02 | Cœur | CREATE VIEW statement | |
F031-03 | Cœur | GRANT statement | |
F031-04 | Cœur | ALTER TABLE statement: ADD COLUMN clause | |
F031-13 | Cœur | DROP TABLE statement: RESTRICT clause | |
F031-16 | Cœur | DROP VIEW statement: RESTRICT clause | |
F031-19 | Cœur | REVOKE 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 | ||
F041 | Cœur | Basic joined table | |
F041-01 | Cœur | Inner join (but not necessarily the INNER keyword) | |
F041-02 | Cœur | INNER keyword | |
F041-03 | Cœur | LEFT OUTER JOIN | |
F041-04 | Cœur | RIGHT OUTER JOIN | |
F041-05 | Cœur | Outer joins can be nested | |
F041-07 | Cœur | The inner table in a left or right outer join can also be used in an inner join | |
F041-08 | Cœur | All comparison operators are supported (rather than just =) | |
F051 | Cœur | Basic date and time | |
F051-01 | Cœur | DATE data type (including support of DATE literal) | |
F051-02 | Cœur | TIME data type (including support of TIME literal) with fractional seconds precision of at least 0 | |
F051-03 | Cœur | TIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6 | |
F051-04 | Cœur | Comparison predicate on DATE, TIME, and TIMESTAMP data types | |
F051-05 | Cœur | Explicit CAST between datetime types and character types | |
F051-06 | Cœur | CURRENT_DATE | |
F051-07 | Cœur | LOCALTIME | |
F051-08 | Cœur | LOCALTIMESTAMP | |
F052 | Enhanced datetime facilities | Intervals and datetime arithmetic | |
F081 | Cœur | UNION and EXCEPT in views | |
F111-02 | READ COMMITTED isolation level | ||
F131 | Cœur | Grouped operations | |
F131-01 | Cœur | WHERE, GROUP BY, and HAVING clauses supported in queries with grouped views | |
F131-02 | Cœur | Multiple tables supported in queries with grouped views | |
F131-03 | Cœur | Set functions supported in queries with grouped views | |
F131-04 | Cœur | Subqueries with GROUP BY and HAVING clauses and grouped views | |
F131-05 | Cœur | Single row SELECT with GROUP BY and HAVING clauses and grouped views | |
F171 | Multiple schemas per user | ||
F191 | Enhanced integrity management | Referential delete actions | |
F201 | Cœur | CAST function | |
F221 | Cœur | Explicit 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 | ||
F261 | Cœur | CASE expression | |
F261-01 | Cœur | Simple CASE | |
F261-02 | Cœur | Searched CASE | |
F261-03 | Cœur | NULLIF | |
F261-04 | Cœur | COALESCE | |
F271 | Compound character literals | ||
F281 | LIKE enhancements | ||
F302 | OLAP facilities | INTERSECT table operator | |
F302-01 | OLAP facilities | INTERSECT DISTINCT table operator | |
F302-02 | OLAP facilities | INTERSECT ALL table operator | |
F304 | OLAP facilities | EXCEPT ALL table operator | |
F311-01 | Cœur | CREATE SCHEMA | |
F311-02 | Cœur | CREATE TABLE for persistent base tables | |
F311-03 | Cœur | CREATE VIEW | |
F311-05 | Cœur | GRANT 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 | OLAP facilities | Extended joined table | |
F401-01 | OLAP facilities | NATURAL JOIN | |
F401-02 | OLAP facilities | FULL OUTER JOIN | |
F401-03 | OLAP facilities | UNION JOIN | |
F401-04 | OLAP facilities | CROSS JOIN | |
F411 | Enhanced datetime facilities | Time zone specification | |
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 | ||
F471 | Cœur | Scalar subquery values | |
F481 | Cœur | Expanded NULL predicate | |
F491 | Enhanced integrity management | Constraint management | |
F501 | Cœur | Features and conformance views | |
F501-01 | Cœur | SQL_FEATURES view | |
F501-02 | Cœur | SQL_SIZING view | |
F501-03 | Cœur | SQL_LANGUAGES view | |
F502 | Enhanced documentation tables | ||
F502-01 | SQL_SIZING_PROFILES view | ||
F502-02 | SQL_IMPLEMENTATION_INFO view | ||
F502-03 | SQL_PACKAGES view | ||
F511 | BIT data type | ||
F531 | Temporary tables | ||
F555 | Enhanced datetime facilities | Enhanced seconds precision | |
F561 | Full value expressions | ||
F571 | Truth value tests | ||
F591 | OLAP facilities | Derived tables | |
F611 | Indicator data types | ||
F651 | Catalog name qualifiers | ||
F701 | Enhanced integrity management | Referential update actions | |
F711 | ALTER domain | ||
F761 | Session management | ||
F771 | Connection management | ||
F781 | Self-referencing operations | ||
F791 | Insensitive cursors | ||
F801 | Full set function | ||
S071 | Enhanced object support | SQL paths in function and type name resolution | |
S111 | Enhanced object support | ONLY in query expressions | |
S211 | Enhanced object support, SQL/MM support | User-defined cast functions | |
T031 | BOOLEAN data type | ||
T141 | SIMILAR predicate | ||
T151 | DISTINCT predicate | ||
T171 | LIKE clause in table definition | ||
T191 | Enhanced integrity management | Referential action RESTRICT | |
T201 | Enhanced integrity management | Comparable data types for referential constraints | |
T211-01 | Enhanced integrity management, Active database | Triggers activated on UPDATE, INSERT, or DELETE of one base table | |
T211-02 | Enhanced integrity management, Active database | BEFORE triggers | |
T211-03 | Enhanced integrity management, Active database | AFTER triggers | |
T211-04 | Enhanced integrity management, Active database | FOR EACH ROW triggers | |
T211-07 | Enhanced integrity management, Active database | TRIGGER privilege | |
T212 | Enhanced integrity management | Enhanced trigger capability | |
T231 | SENSITIVE cursors | ||
T241 | START TRANSACTION statement | ||
T312 | OVERLAY function | ||
T321-01 | Cœur | User-defined functions with no overloading | |
T321-03 | Cœur | Function invocation | |
T321-06 | Cœur | ROUTINES view | |
T321-07 | Cœur | PARAMETERS view | |
T322 | PSM, SQL/MM support | Overloading 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 |
Précédent | Sommaire | Suivant |
Mots-clé SQL | Niveau supérieur | Fonctionnalités non supportées |