Documentation PostgreSQL 8.2.23 > Annexes > Conformité SQL
Mots-clé SQL Fonctionnalités non supportéesSuivant

D. Conformité SQL

Cette section explique dans quelle mesure PostgreSQLTM se conforme à la norme SQL en vigueur. Les informations qui suivent ne représentent pas une liste exhaustive de conformance, mais présentent les thèmes principaux utilement et raisonnablement détaillés.

Le nom complet du standard SQL est ISO/IEC 9075 « Database Language SQL ». Le standard est modifié de temps en temps. La plus récente révision est datée de fin 2003. Cette version porte la référence ISO/IEC 9075:2003, aussi abrégée SQL:2003. Les versions précédentes sont SQL:1999 et SQL-92. Chaque version remplace la précédente. Il n'y a donc aucun mérite à revendiquer une compatibilité avec une version antérieure du standard.

Le développement de PostgreSQLTM respecte le standard en vigueur, tant que celui-ci ne s'oppose pas aux fonctionnalités traditionnelles ou au bon sens. Le projet PostgreSQL n'était pas représenté au sein du groupe de travail ISO/IEC 9075 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. Parfois avec une syntaxe ou un fonctionnement légèrement différents. Une meilleure comformance est attendue pour les prochaines versions.

SQL-92 définit trois niveaux de conformité : basique (Entry), intermédiaire (Intermediate) et complète (Full). La majorité des systèmes de gestion de bases de données se prétendaient compatibles au standard SQL dès lors qu'ils se conformaient au niveau Entry ; l'ensemble des fonctionnalités des niveaux Intermediate et Full étaient, soit trop volumineux, soit en conflit avec les fonctionnalités implantées.

À partir de SQL99, le standard SQL définit un vaste ensemble de fonctionnalités individuelles à la place des trois niveaux de fonctionnalités définis dans SQL-92. Une grande partie représente les fonctionnalités « centrales » que chaque implantation conforme de SQL doit fournir. Les fonctionnalités restantes sont purement optionnelles. Certaines sont regroupées au sein de « paquetages » auxquels une implantation peut se déclarer conforme. On parle alors de conformité à un groupe de fonctionnalités.

Le standard SQL:2003 est également divisé en parties. Chacune est connue par un pseudonyme. Leur numérotation n'est pas consécutive :

  • 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).

PostgreSQLTM couvre les parties 1, 2 et 11. La partie 3 est similaire à l'interface ODBC et la partie 4 au langage de programmation PL/pgSQL. Une conformité exacte n'est pas spécifiquement voulue ou vérifiée pour ces parties.

PostgreSQL supporte la plupart des fonctionnalités majeures de SQL:2003. Sur les 164 fonctionnalités requises pour une conformité « centrale » complète (full Core conformance), PostgreSQL se conforme à plus de 150. De plus, il existe une longue liste de fonctionnalités optionelles supportées. à la date de rédaction de ce document, aucune version de quelque système de gestion de bases de données que ce soit n'affiche une totale conformité à SQL:2003 « centrale ».

Les deux sections qui suivent présentent la liste des fonctionnalités supportées par PostgreSQLTM et celle des fonctionnalités définies dans SQL:2003 qui ne sont pas encore prises en compte. Ces deux listes sont approximatives : certains détails d'une fonctionnalité présentée comme supportée peuvent ne pas être conformes, alors que de grandes parties d'une fonctionnalité non supportée peuvent être implantées. La documentation principale fournit les informations précises sur ce qui est, ou non, supporté.

[Note]

Note

Les codes de fonctionnalité contenant un tiret sont des sous-fonctionnalités. Si une sous-fonctionnalité n'est pas supportée, la fonctionnalité elle-même sera déclarée non supportée, alors même que d'autres de ses sous-fonctionnalités le sont.

D.1. Fonctionnalités supportées

Identifiant Paquetage Description Commentaire
B012 C embarqué
B021 SQL direct
E011 Cœur Types de données numériques
E011-01 Cœur Types de données INTEGER et SMALLINT
E011-02 Cœur Types de données REAL, DOUBLE PRECISON et FLOAT
E011-03 Cœur Types de données DECIMAL et NUMERIC
E011-04 Cœur Opérateurs arithmétiques
E011-05 Cœur Comparaison numérique
E011-06 Cœur Transtypage implicite entre types de données numériques
E021 Cœur Character data types
E021-01 Cœur CHARACTER data type
E021-02 Cœur Type de données CHARACTER VARYING
E021-03 Cœur Libellés
E021-04 Cœur Fonction CHARACTER_LENGTH
E021-05 Cœur Fonction OCTET_LENGTH
E021-06 Cœur Fonction SUBSTRING
E021-07 Cœur Concaténation de caractères
E021-08 Cœur Fonctions UPPER et LOWER
E021-09 Cœur Fonction TRIM
E021-10 Cœur Transtypage implicite entre types de données caractères
E021-11 Cœur Fonction POSITION
E021-12 Cœur Comparaison de caractères
E031 Cœur Identifiants
E031-01 Cœur Identifiants délimités
E031-02 Cœur Identifiants minuscules
E031-03 Cœur Tirets bas de fin (Trailing underscore
E051 Cœur Spécification de requête basique
E051-01 Cœur SELECT DISTINCT
E051-02 Cœur Clause GROUP BY
E051-04 Cœur GROUP BY peut contenir des colonnes en dehors de la <select list>
E051-05 Cœur Les éléments de la <select list> peuvent être renommés AS est obligatoire
E051-06 Cœur Clause HAVING
E051-07 Cœur * qualifié dans la <select list>
E051-08 Cœur Noms de corrélation dans la clause FROM
E051-09 Cœur Renommer les colonnes de la clause FROM
E061 Cœur Prédicats et conditions de recherche de base
E061-01 Cœur Prédicat de comparaison
E061-02 Cœur Prédicat BETWEEN
E061-03 Cœur Prédicat IN avec une liste de valeurs
E061-04 Cœur Prédicat LIKE
E061-05 Cœur Prédicat LIKE clause ESCAPE
E061-06 Cœur Prédicat NULL
E061-07 Cœur Prédicat de comparaison qunatifiée
E061-08 Cœur Prédicat EXISTS
E061-09 Cœur Sous-requêtes dans un prédicat de comparaison
E061-11 Cœur Sous-requêtes dans un prédicat IN
E061-12 Cœur Sous-requêtes dans un prédicat de comparaison qunatifiée
E061-13 Cœur Sous-requêtes corrélées
E061-14 Cœur Condition de recherche
E071 Cœur Expressions de requête basiques
E071-01 Cœur Opérateur de table UNION DISTINCT
E071-02 Cœur Opérateur de table UNION ALL
E071-03 Cœur Opérateur de table EXCEPT DISTINCT
E071-05 Cœur Les colonnes combinées par des opérateurs de table doivent avoir exactement le même type de données
E071-06 Cœur Opérateurs de table dans les sous-requêtes
E081-01 Cœur Privilège SELECT
E081-02 Cœur Privilège DELETE
E081-03 Cœur Privilège INSERT de niveau table
E081-04 Cœur Privilège UPDATE de niveau table
E081-06 Cœur Privilège REFERENCES de niveau table
E081-08 Cœur WITH GRANT OPTION
E081-10 Cœur Privilège EXECUTE
E091 Cœur Fonctions ensemblistes (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 Quantificateur ALL
E091-07 Cœur Quantificateur DISTINCT
E101 Cœur Manipulation de données basique
E101-01 Cœur Instruction INSERT
E101-03 Cœur Instruction UPDATE sur recherche
E101-04 Cœur Instruction DELETE sur recherche
E111 Cœur Instruction SELECT sur ligne unique
E121-01 Cœur DECLARE CURSOR
E121-02 Cœur Les colonnes de l'ORDER BY n'ont pas besoin d'être dans la <select list>
E121-03 Cœur Expressions valuées dans une clause ORDER BY
E121-04 Cœur Instruction OPEN
E121-08 Cœur Instruction CLOSE
E121-10 Cœur Instruction FETCH à NEXT implicite
E121-17 Cœur Curseurs WITH HOLD
E131 Cœur Support des valeurs nulles (NULL comme valeur)
E141 Cœur Contraintes d'intégrité basiques
E141-01 Cœur Contraintes NOT NULL
E141-02 Cœur Contraintes UNIQUE des colonnes NOT NULL
E141-03 Cœur Contraintes PRIMARY KEY
E141-04 Cœur Contrainte FOREIGN KEY de base avec NO ACTION par défaut pour la suppression référentielle et l'actualisation référentielle
E141-06 Cœur Contraintes CHECK
E141-07 Cœur Valeur par défaut de la colonne
E141-08 Cœur NOT NULL inféré sur PRIMARY KEY
E141-10 Cœur L'ordre des noms au sein d'une clé étrangère n'a aucune importance
E151 Cœur Support des transactions
E151-01 Cœur Instruction COMMIT
E151-02 Cœur Instruction ROLLBACK
E152 Cœur Instruction SET TRANSACTION basique
E152-01 Cœur Instruction SET TRANSACTION : clause ISOLATION LEVEL SERIALIZABLE
E152-02 Cœur Instruction SET TRANSACTION : clauses READ ONLY et READ WRITE
E161 Cœur Commentaires SQL définis avec deux tirets hauts en début de chaîne
E171 Cœur Support de SQLSTATE
F021 Cœur Schéma d'information basique
F021-01 Cœur Vue COLUMNS
F021-02 Cœur Vue TABLES
F021-03 Cœur Vue VIEWS
F021-04 Cœur Vue TABLE_CONSTRAINTS
F021-05 Cœur Vue REFERENTIAL_CONSTRAINTS
F021-06 Cœur Vue CHECK_CONSTRAINTS
F031 Cœur Manipulation basique de schéma
F031-01 Cœur Instruction CREATE TABLE de création de tables de base persistentes
F031-02 Cœur Instruction CREATE VIEW
F031-03 Cœur Instruction GRANT
F031-04 Cœur Instruction ALTER TABLE ;: clause ADD COLUMN
F031-13 Cœur Instruction DROP TABLE : clause RESTRICT
F031-16 Cœur Instruction DROP VIEW : clause RESTRICT
F031-19 Cœur Instruction REVOKE : clause RESTRICT
F032 Comportement de la suppression en CASCADE
F033 Instruction ALTER TABLE : clause DROP COLUMN
F034 Instruction REVOKE étendue
F034-01 Instruction REVOKE exécutée par quelqu'un qui n'est pas propriétaire d'un objet du schéma
F034-02 Instruction REVOKE : clause GRANT OPTION FOR
F034-03 Instruction REVOKE pour supprimer un privilège hérité avec WITH GRANT OPTION
F041 Cœur Table jointe basique
F041-01 Cœur Jointure interne (mais pas nécessairement le mot-clé INNER)
F041-02 Cœur Mot-clé INNER
F041-03 Cœur LEFT OUTER JOIN
F041-04 Cœur RIGHT OUTER JOIN
F041-05 Cœur Les jointures externes peuvent être imbriquées
F041-07 Cœur La table interne d'une jointure externe droite ou gauche peut aussi être utilisée dans une jointure interne
F041-08 Cœur Tous les opérateurs de comparaison sont supportés (plutôt que juste =)
F051 Cœur Date et heure basiques
F051-01 Cœur Type de données DATE (incluant le support des libellés DATE)
F051-02 Cœur Type de données TIME (incluant le support des libellés TIME) avec une précision des secondes fractionnelles d'au moins 0
F051-03 Cœur Type de données TIMESTAMP (incluant le support des libellés TIMESTAMP) avec une précision des secondes fractionnelles d'au moins 0 et 6
F051-04 Cœur Prédicat de comparaison des types de données DATE, TIME et TIMESTAMP
F051-05 Cœur CAST explicite entre types date-heure et types caractère
F051-06 Cœur CURRENT_DATE
F051-07 Cœur LOCALTIME
F051-08 Cœur LOCALTIMESTAMP
F052 Fonctionnalités date-heure évoluées Arithmétique des intervalles et date-heure
F053 Prédicat OVERLAPS
F081 Cœur UNION et EXCEPT dans les vues
F111 Niveaux d'isolation différents de SERIALIZABLE
F111-01 Niveau d'isolation READ UNCOMMITTED
F111-02 Niveau d'isolation READ COMMITTED
F111-03 Niveau d'isolation REPEATABLE READ
F131 Cœur Opérations groupées
F131-01 Cœur Clauses WHERE, GROUP BY et HAVING supportées dans les requêtes avec vues groupées
F131-02 Cœur Tables multiples supportées dans les requêtes avec vues groupées
F131-03 Cœur Fonctions ensemblistes supportées dans les requêtes avec vues groupées
F131-04 Cœur Sous-requêtes avec clauses GROUP BY et HAVING et vues groupées
F131-05 Cœur SELECT de ligne unique avec clauses GROUP BY et HAVING et vues groupées
F171 Multiples schémas par utilisateur
F191 Gestion évoluée de l'intégrité Suppressions référentielles
F201 Cœur Fonction CAST
F221 Cœur Valeurs par défaut explicites
F222 Instruction INSERT : clause DEFAULT VALUES
F231 Table des privilèges
F231-01 Vue TABLE_PRIVILEGES
F231-02 Vue COLUMN_PRIVILEGES
F231-03 Vue USAGE_PRIVILEGES
F251 Support des domaines
F261 Cœur Expression CASE
F261-01 Cœur CASE simple
F261-02 Cœur CASE recherché
F261-03 Cœur NULLIF
F261-04 Cœur COALESCE
F271 Libellés de caractère composé
F281 Améliorations du LIKE
F302 Opérateur de table INTERSECT
F302-01 Opérateur de table INTERSECT DISTINCT
F302-02 Opérateur de table INTERSECT ALL
F304 Opérateur de table EXCEPT ALL
F311-01 Cœur CREATE SCHEMA
F311-02 Cœur CREATE TABLE pour tables de base persistentes
F311-03 Cœur CREATE VIEW
F311-05 Cœur Instruction GRANT
F321 Autorisation utilisateur
F361 Support de sous-programme
F381 Manipulation de schéma étendue
F381-01 Instruction ALTER TABLE : clause ALTER COLUMN
F381-02 Instruction ALTER TABLE : clause ADD CONSTRAINT
F381-03 Instruction ALTER TABLE : clause DROP CONSTRAINT
F391 Identificateurs longs
F401 Table jointe étendue
F401-01 NATURAL JOIN
F401-02 FULL OUTER JOIN
F401-04 CROSS JOIN
F411 Fonctionnalités date-heure étendues Indication de fuseau horaire Des différences dans l'interprétation des libellés
F421 Caractères nationaux
F431 Curseurs parcourables en lecture seule
F431-01 FETCH avec NEXT explicite
F431-02 FETCH FIRST
F431-03 FETCH LAST
F431-04 FETCH PRIOR
F431-05 FETCH ABSOLUTE
F431-06 FETCH RELATIVE
F441 Support étendu des fonctions ensemblistes
F471 Cœur Valeurs scalaires de sous-requêtes
F481 Cœur Prédicat NULL étendu
F491 Gestion étendue de l'intégrité Gestion de contrainte
F501 Cœur Vues de fonctionnalités et de conformité
F501-01 Cœur Vue SQL_FEATURES
F501-02 Cœur Vue SQL_SIZING
F501-03 Cœur Vue SQL_LANGUAGES
F502 Tables de documentation étendue
F502-01 Vue SQL_SIZING_PROFILES
F502-02 Vue SQL_IMPLEMENTATION_INFO
F502-03 Vue SQL_PACKAGES
F531 Tables temporaires
F555 Fonctionnalités date-heure étendues Précision étendue des secondes
F561 Expressions en valeurs pures
F571 Tests des valeurs de vérité
F591 Tables dérivées
F611 Types indicateur de données
F651 Qualificateurs de nom de catalogue
F672 Contraintes de vérification a posteriori
F701 Gestion étendue de l'intégrité Actualisations référentielles
F711 ALTER domaine
F761 Gestion de session
F771 Gestion de Connection
F781 Opérations auto-référençantes
F791 Curseurs insensibles
F801 Fonctions ensemblistes pures
S071 Support étendu des objets Chemins SQL dans la résolution de nom des fonctions et des types
S111 Support étendu des objets ONLY dans les expression de requête
S211 Support étendu des objets Fonctions de transtypage utilisateur
T031 Type de données BOOLEAN
T071 Type de données BIGINT
T141 Prédicat SIMILAR
T151 Prédicat DISTINCT
T171 Clause LIKE dans la définition d'une table
T191 Gestion étendue de l'intégrité RESTRICT référentiel
T201 Gestion étendue de l'intégrité Types de données comparables pour les contraintes référentielles
T211-01 Gestion étendue de l'intégrité, base active Déclencheurs activés sur UPDATE, INSERT et DELETE d'une table de base
T211-02 Gestion étendue de l'intégrité, base active Déclencheurs BEFORE
T211-03 Gestion étendue de l'intégrité, base active Déclencheurs AFTER
T211-04 Gestion étendue de l'intégrité, base active Déclencheurs FOR EACH ROW
T211-07 Gestion étendue de l'intégrité, base active Privilège TRIGGER
T212 Gestion étendue de l'intégrité Fonctionnalité étendue des déclencheurs
T231 Curseurs SENSITIVE
T241 Instruction START TRANSACTION
T271 Points de retournement
T312 Fonction OVERLAY
T321-01 Cœur Fonctions utlisateur sans surcharge
T321-03 Cœur Invocation d'une fonction
T321-06 Cœur Vue ROUTINES
T321-07 Cœur Vue PARAMETERS
T322 PSM Surcharge de fonctions et précédures appelées en SQL
T323 Sécurité explicite des routines externes
T351 Commentaires SQL « bracket » (commentaires /*...*/)
T441 Fonctions ABS et MOD
T461 Prédicat BETWEEN symétrique
T501 Prédicat EXISTS étendu
T551 Mots-clés optionnels pour la syntaxe par défaut
T581 Fonction de sous-chaîne d'expression rationnelle
T591 Contraintes UNIQUE sur colonnes éventuellement NULL

AltStyle によって変換されたページ (->オリジナル) /