Documentazione di PostgreSQL 9.0 > Appendici > SQL Conformance
PrecedenteParole chiave SQLUnsupported FeaturesSuccessivo

D. SQL Conformance

This section attempts to outline to what extent PostgreSQL™ conforms to the current SQL standard. The following information is not a full statement of conformance, but it presents the main topics in as much detail as is both reasonable and useful for users.

The formal name of the SQL standard is ISO/IEC 9075 «Database Language SQL». A revised version of the standard is released from time to time; the most recent update appearing in 2008. The 2008 version is referred to as ISO/IEC 9075:2008, or simply as SQL:2008. The versions prior to that were SQL:2003, SQL:1999, and SQL-92. Each version replaces the previous one, so claims of conformance to earlier versions have no official merit. PostgreSQL™ development aims for conformance with the latest official version of the standard where such conformance does not contradict traditional features or common sense. The PostgreSQL project is not represented in the ISO/IEC 9075 Working Group during the preparation of the SQL standard releases, but even so, many of the features required by the SQL standard are supported, though sometimes with slightly differing syntax or function. Further moves towards conformance can be expected over time.

SQL-92 defined three feature sets for conformance: Entry, Intermediate, and Full. Most database management systems claiming SQL standard conformance were conforming at only the Entry level, since the entire set of features in the Intermediate and Full levels was either too voluminous or in conflict with legacy behaviors.

Starting with SQL:1999, the SQL standard defines a large set of individual features rather than the ineffectively broad three levels found in SQL-92. A large subset of these features represents the «Core» features, which every conforming SQL implementation must supply. The rest of the features are purely optional. Some optional features are grouped together to form «packages», which SQL implementations can claim conformance to, thus claiming conformance to particular groups of features.

The SQL:2008 and SQL:2003 standard versions are also split into a number of parts. Each is known by a shorthand name. Note that these parts are not consecutively numbered.

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

The PostgreSQL™ core covers parts 1, 2, 9, 11, and 14. Part 3 is covered by the ODBC driver, and part 13 is covered by the PL/Java plug-in, but exact conformance is currently not being verified for these components. There are currently no implementations of parts 4 and 10 for PostgreSQL™.

PostgreSQL supports most of the major features of SQL:2008. Out of 179 mandatory features required for full Core conformance, PostgreSQL conforms to at least 160. In addition, there is a long list of supported optional features. It might be worth noting that at the time of writing, no current version of any database management system claims full conformance to Core SQL:2008.

In the following two sections, we provide a list of those features that PostgreSQL™ supports, followed by a list of the features defined in SQL:2008 which are not yet supported in PostgreSQL™. Both of these lists are approximate: There might be minor details that are nonconforming for a feature that is listed as supported, and large parts of an unsupported feature might in fact be implemented. The main body of the documentation always contains the most accurate information about what does and does not work.

[Nota]

Nota

Feature codes containing a hyphen are subfeatures. Therefore, if a particular subfeature is not supported, the main feature is listed as unsupported even if some other subfeatures are supported.

D.1. Supported Features

IdentifierPackageDescriptionComment
B012 C incorporato 
B021 SQL diretto 
E011CoreTipi di dato numerico 
E011-01CoreTipi di dato INTEGER e SMALLINT 
E011-02CoreTipi di dato REAL, DOUBLE PRECISION e FLOAT 
E011-03CoreTipi di dato DECIMAL e NUMERIC 
E011-04CoreOperatori aritmetici 
E011-05CoreConfronto numerico 
E011-06CoreCasting implicito tra i tipi di dato numerico 
E021CoreTipi di dato carattere 
E021-01CoreTipo di dato CHARACTER 
E021-02CoreTipo di dato CHARACTER VARYING 
E021-03CoreCaratteri letterali 
E021-04CoreFunzione CHARACTER_LENGTHSpunta gli spazi terminali da valori CHARACTER prima del conteggio
E021-05CoreFunzione OCTET_LENGTH 
E021-06CoreFunzione SUBSTRING 
E021-07CoreConcatenazione carattere 
E021-08CoreFunzioni UPPER e LOWER 
E021-09CoreFunzione TRIM 
E021-10CoreCasting implicito tra i tipi di dato stringa di caratteri 
E021-11CoreFunzione POSITION 
E021-12CoreConfronto carattere 
E031CoreIdentificatori 
E031-01CoreIdentificatori delimitati 
E031-02CoreIdentificatori minuscolo 
E031-03CoreSottolineatura terminale 
E051CoreSpecificazione di query di base 
E051-01CoreSELECT DISTINCT 
E051-02CoreProposizione GROUP BY 
E051-04CoreGROUP BY può contenere colonne che non sono in <select list> 
E051-05CoreLe voci dellì'elenco select possono essere rinominate 
E051-06CoreProposizione HAVING 
E051-07CoreUn * qualificato nell'elenco di select 
E051-08CoreCorrelazione nomi nella proposizione FROM 
E051-09CoreRinomina colonne nella proposizione FROM 
E061CorePredicati di base e condizioni di ricerca 
E061-01CorePredicato di confronto 
E061-02CorePredicato BETWEEN 
E061-03CorePredicato IN con elenco di valori 
E061-04CorePredicato LIKE 
E061-05CorePredicato LIKE proposizione ESCAPE 
E061-06CorePredicato NULL 
E061-07CorePredicato di confronto quantificato 
E061-08CorePredicato EXISTS 
E061-09CoreSub-query in predicato di confronto 
E061-11CoreSub-query nel predicato IN 
E061-12CoreSub-query nel predicato di confronto comparativo 
E061-13CoreSub-query correlate 
E061-14CoreCondizione di ricerca 
E071CoreEspressione query di base 
E071-01CoreOperatore tabella UNION DISTINCT 
E071-02CoreOperatore tabella UNION ALL 
E071-03CoreOperatore tabella EXCEPT DISTINCT 
E071-05CoreColonne combinate tramite operatori tabella non necessitano esattamente dello stesso "data type" (tipo di dato) 
E071-06CoreOperatori tabella nelle sub-query 
E081-01CorePrivilegio SELECT 
E081-02CorePrivilegio DELETE 
E081-03CorePrivilegio INSERT a livello di tabella 
E081-04CorePrivilegio UPDATE a livello di tabella 
E081-05CorePrivilegio UPDATE a livello di di colonna 
E081-06CorePrivilegio REFERENCES a livello di tabella 
E081-07CorePrivilegio REFERENCES a livello di colonna 
E081-08CoreWITH GRANT OPTION 
E081-10CorePrivilegio EXECUTE 
E091CoreImposta funzioni 
E091-01CoreAVG 
E091-02CoreCOUNT 
E091-03CoreMAX 
E091-04CoreMIN 
E091-05CoreSUM 
E091-06CoreQuantificatore ALL 
E091-07CoreQuantificatore DISTINCT 
E101CoreManipolazione dato di base 
E101-01CoreDichiarazione INSERT 
E101-03CoreDichiarazione UPDATE cercata 
E101-04CoreDichiarazione DELETE cercata 
E111CoreDichiarazione Single row SELECT 
E121CoreSupporto cursore di base 
E121-01CoreDECLARE CURSOR 
E121-02CoreORDER BY colonne necessita di trovarsi nell'elenco select 
E121-03CoreValore espressioni nella proposizione ORDER BY 
E121-04CoreDichiarazione OPEN 
E121-06CoreDichiarazione Positioned UPDATE 
E121-07CoreDichiarazione Positioned DELETE 
E121-08CoreDichiarazione CLOSE 
E121-10CoreDichiarazione FETCH richiede implicitamente NEXT 
E121-17CoreCursori WITH HOLD 
E131CoreSupporto valore nullo (null in luogo dei valori) 
E141CoreVincoli di integrità di base 
E141-01CoreVincoli NOT NULL 
E141-02CoreVincoli UNIQUE di colonne NOT NULL 
E141-03CoreVincoli PRIMARY KEY 
E141-04CoreVincoli di base FOREIGN KEY con NO ACTION come predefinito sia per l'azione di cancellazione referenziale sia per quella di aggiornamento referenziale 
E141-06CoreVincoli CHECK 
E141-07CoreValori predefiniti colonna 
E141-08CoreNOT NULL riferito a PRIMARY KEY 
E141-10CoreI nomi in una "foreign key" (chiave esterna) possono essere specificati in ordine qualsiasi 
E151CoreSupporto transazione 
E151-01CoreDichiarazione COMMIT 
E151-02CoreDichiarazione ROLLBACK 
E152CoreDichiarazione di base SET TRANSACTION 
E152-01CoreDichiarazione SET TRANSACTION: proposizione ISOLATION LEVEL SERIALIZABLE 
E152-02CoreDichiarazione SET TRANSACTION: proposizioni READ ONLY e READ WRITE 
E161CoreCommenti SQL che terminano con un doppio meno 
E171CoreSupporto SQLSTATE 
F021CoreSchema informazione di base 
F021-01CoreVista COLUMNS 
F021-02CoreVista TABLES 
F021-03CoreVista VIEWS 
F021-04CoreVista TABLE_CONSTRAINTS 
F021-05CoreVista REFERENTIAL_CONSTRAINTS 
F021-06CoreVista CHECK_CONSTRAINTS 
F031CoreManipolazione schema di base 
F031-01CoreDichiarazione CREATE TABLE per creareuna base di tabelle persistente 
F031-02CoreDichiarazione CREATE VIEW 
F031-03CoreDichiarazione GRANT 
F031-04CoreDichiarazione ALTER TABLE: proposizione ADD COLUMN 
F031-13CoreDichiarazione DROP TABLE: proposizione RESTRICT 
F031-16CoreDichiarazione DROP VIEW: proposizione RESTRICT 
F031-19CoreDichiarazione REVOKE: proposizione RESTRICT 
F032 Ambiente drop CASCADE 
F033 Dichiarazione ALTER TABLE: proposizione DROP COLUMN 
F034 Dichiarazione Extended REVOKE 
F034-01 Dichiarazione REVOKE realizzata da soggetto diverso dal proprietario di un oggetto schema 
F034-02 Dichiarazione REVOKE: proposizione GRANT OPTION FOR 
F034-03 Dichiarazione REVOKE per revocare un privilegio che è garantito con l'opzione WITH GRANT OPTION 
F041CoreTabella joined di base 
F041-01CoreInner join (ma non necessariamente la parola chiave INNER) 
F041-02CoreParola chiave INNER 
F041-03CoreLEFT OUTER JOIN 
F041-04CoreRIGHT OUTER JOIN 
F041-05CoreJoin esterni possono essere nidificati 
F041-07CoreLa "inner table" in un "outer join" sinistro o destro può anche essere utilizzata in un "inner join" 
F041-08CoreTutti gli operatori di confronto sono supportati (anziché solo "=") 
F051CoreData e ora di base 
F051-01CoreTipo dato DATE (compreso il supporto di DATE letterale) 
F051-02CoreTipo dato TIME (compreso il supporto di TIME letterale) con precisione della frazione dei secondi di almeno 0 
F051-03CoreTipo di dato TIMESTAMP (compreso il supporto di TIMESTAMP letterale) con precisione della frazione di secondi compresa tra 0 e 6 
F051-04CorePredicato comparativo di tipi di dato DATE, TIME, e TIMESTAMP 
F051-05CoreCAST esplicito fra tipi di data e orario e tipi di stringa di carattere 
F051-06CoreCURRENT_DATE 
F051-07CoreLOCALTIME 
F051-08CoreLOCALTIMESTAMP 
F052Enhanced datetime facilitiesIntervalli e aritmetica di data e orario 
F053 Predicato OVERLAPS 
F081CoreUNION e EXCEPT nelle viste 
F111 Livelli di isolamento diversi da SERIALIZABLE 
F111-01 Livelli di isolamento READ UNCOMMITTED 
F111-02 Livelli di isolamento READ COMMITTED 
F111-03 Livelli di isolamento REPEATABLE READ 
F131CoreOperazioni raggruppate 
F131-01CoreProposizioni WHERE, GROUP BY, e HAVING supportate nelle query con viste raggruppate 
F131-02CoreTabelle multiple supportate nelle query con viste raggruppate 
F131-03CoreImposta funzioni supportate nelle query con viste raggruppate 
F131-04CoreSub-query con le proposizioni GROUP BY e HAVING e viste raggruppate 
F131-05CoreSingle row SELECT con le proposizioni GROUP BY e HAVING e viste raggruppate 
F171 Schemi multipli per utente 
F191Enhanced integrity managementAzioni di cancellazione referenziale 
F200 Dichiarazione TRUNCATE TABLE 
F201CoreFunzione CAST 
F221CoreValori predefiniti espliciti 
F222 Dichiarazione INSERT: proposizione DEFAULT VALUES 
F231 Tabelle Privilege 
F231-01 Vista TABLE_PRIVILEGES 
F231-02 Vista COLUMN_PRIVILEGES 
F231-03 Vista USAGE_PRIVILEGES 
F251 Supporto dominio 
F261CoreEspressione CASE 
F261-01CoreCASE Semplice 
F261-02CoreCASE ricercato 
F261-03CoreNULLIF 
F261-04CoreCOALESCE 
F271 Caratteri composti letterali 
F281 Miglioramenti LIKE 
F302 Operatore tabella INTERSECT 
F302-01 Operatore tabella INTERSECT DISTINCT 
F302-02 Operatore tabella INTERSECT ALL 
F304 Operatore tabella EXCEPT ALL 
F311-01CoreCREATE SCHEMA 
F311-02CoreCREATE TABLE per tabelle di base persistenti 
F311-03CoreCREATE VIEW 
F311-05CoreDichiarazione GRANT 
F321 Autorizzazione utente 
F361 Supporto sotto-programma 
F381 Manipolazione estesa schema 
F381-01 Dichiarazione ALTER TABLE: proposizione ALTER COLUMN 
F381-02 Dichiarazione ALTER TABLE: proposizione ADD CONSTRAINT 
F381-03 Dichiarazione ALTER TABLE: proposizione DROP CONSTRAINT 
F382 Tipo di dato Alter column 
F391 Identificatori lunghi 
F392 Caratteri di escape unicode negli identificatori 
F393 Caratteri di escape unicode nei letterali 
F401 Tabelle joined estese 
F401-01 NATURAL JOIN 
F401-02 FULL OUTER JOIN 
F401-04 CROSS JOIN 
F402 Join Named column joins per LOBs, array e multiset 
F411Enhanced datetime facilitiesSpecificazioni di fuso orariodifferenze riguardanti interpretazioni letterali
F421 Carattere nazionale 
F431 Cursori scorrevoli read-only (sola lettura) 
F431-01 FETCH con NEXT esplicito 
F431-02 FETCH FIRST 
F431-03 FETCH LAST 
F431-04 FETCH PRIOR 
F431-05 FETCH ABSOLUTE 
F431-06 FETCH RELATIVE 
F441 Supporto funzione Extended set 
F442 Riferimenti Mixed column nelle funzioni set 
F471CoreValori scalri sub-query 
F481CorePredicato NULL Expanded 
F491Enhanced integrity managementGestione Constraint 
F501CoreViste caratteristiche e conformità 
F501-01CoreVista SQL_FEATURES 
F501-02CoreVista SQL_SIZING 
F501-03CoreVista SQL_LANGUAGES 
F502 Tabella documentazione avanzata 
F502-01 Vista SQL_SIZING_PROFILES 
F502-02 Vista SQL_IMPLEMENTATION_INFO 
F502-03 Vista SQL_PACKAGES 
F531 Tabelle temporanee 
F555Enhanced datetime facilitiesPrecisione avanzata secondi 
F561 Valore espressioni Full 
F571 Test valore esatto 
F591 Tabelle derivate 
F611 Tipi di dato indicatore 
F651 Qualificatori nome catalogo 
F661 Tabelle semplici 
F672 Vincoli verifica retrospettiva 
F701Enhanced integrity managementAzioni di aggiornamento referenziale 
F711 ALTER domain 
F731 Privilegi INSERT colonna 
F761 Gestione sessione 
F762 CURRENT_CATALOG 
F763 CURRENT_SCHEMA 
F771 Gestione connessione 
F781 Operazioni autoreferenziali 
F791 Cursori Insensitive 
F801 Funzione insieme Full 
F850 <order by clause> in <query expression> di primo livello 
F851 <order by clause> nelle sub-query 
F852 <order by clause> di primo livello nelle viste 
F855 <order by clause> annidato in <query expression> 
F856 <fetch first clause> annidato in <query expression> 
F857 <fetch first clause> di primo livello in <query expression> 
F858 <fetch first clause> in sub-query 
F859 <fetch first clause> di primo livello nelle viste 
F860 <fetch first row count> in <fetch first clause> 
F861 <result offset clause> di primo livello in <query expression> 
F862 <result offset clause> nelle sub-query 
F863 <result offset clause> annidato in <query expression> 
F864 <result offset clause> di primo livello nelle viste 
F865 <offset row count> in <result offset clause> 
S071Enhanced object supportPercorsi SQL nella risoluzione di funzione e nome tipo 
S092 Array di tipi definiti dall'utente 
S095 Costruttori array tramite by query 
S096 Limiti array opzionali 
S098 ARRAY_AGG 
S111Enhanced object supportONLY in espressioni query 
S201 Routine richiamate da SQL sugli array 
S201-01 Parametri array 
S201-02 Array come tipo conseguente di funzioni 
S211Enhanced object supportFunzioni cast definite dall'utente 
T031 Tipo di dato BOOLEAN 
T071 Tipo di dato BiginT 
T121 WITH (escludendo RECURSIVE) in espressione query 
T122 WITH (escludendo RECURSIVE) in sub-query 
T131 Recursive query 
T132 Recursive query in sub-query 
T141 Predicato SIMILAR 
T151 Predicato DISTINCT 
T152 Predicato DISTINCT con negazione 
T171 Proposizione LIKE nella definizione di tabella 
T172 Proposizione sub-query AS nella definizione di tabella 
T173 Proposizione LIKE estesa nella definizione di tabella 
T191Enhanced integrity managementAzione referenziale RESTRICT 
T201Enhanced integrity managementTipi di dato confrontabili per constraint referenziali 
T211-01Active database, Enhanced integrity managementUPDATE, INSERT, o DELETE attivati da trigger di una tabella base 
T211-02Active database, Enhanced integrity managementTrigger BEFORE 
T211-03Active database, Enhanced integrity managementTrigger AFTER 
T211-04Active database, Enhanced integrity managementTrigger FOR EACH ROW 
T211-05Active database, Enhanced integrity managementCapacità di specificare una condizione di ricerca che può risultare vera prima che sia invocato il trigger 
T211-07Active database, Enhanced integrity managementPrivilegio TRIGGER 
T212Enhanced integrity managementCapacità trigger avanzato 
T231 Cursori sensibili 
T241 Dichiarazione START TRANSACTION 
T271 Punti di salvataggios 
T281 Privilegio SELECT con granularità colonna 
T312 Funzione OVERLAY 
T321-01CoreFunzioni definite dall'utente senza sovraccarico 
T321-03CoreInvocazione funzione 
T321-06CoreVista ROUTINES 
T321-07CoreVista parameterS 
T322PSMSovraccarico di funzioni e procedure richiamate da SQL 
T323 Sicurezza esplicita per routine esterne 
T351 Commenti SQL tra parentesi (commenti /*...*/) 
T441 Funzioni ABS e MOD 
T461 Predicato BETWEEN simmetrico 
T501 Predicato EXISTS avanzato 
T551 Parole chiave opzionali per sintassi predefinita 
T581 Funzione substring espressione regolare 
T591 Vincoli UNIQUE di possibili colonne nulle 
T614 Funzione NTILE 
T615 Funzioni LEAD e LAG 
T617 Funzione FIRST_VALUE e LAST_VALUE 
T621 Funzioni numeriche avanzate 
T631CorePredicato IN con un elemento elenco 
T651 Dichiarazione SQL-schema in routine SQL 
T655 Routine dipendenti ciclicamente 
X010 Tipo XML 
X011 Array di tipo XML 
X016 Valori XML persistenti 
X020 XMLConcat 
X031 XMLElement 
X032 XMLForest 
X034 XMLAgg 
X035 Opzione XMLAgg: ORDER BY 
X036 Commento XML 
X037 XMLPI 
X040 Mappatura tabella di base 
X041 Mappatura tabella di base: null assenti 
X042 Mappatura tabella di base: null come nil 
X043 Mappatura tabella di base: tabella come foresta 
X044 Mappatura tabella di base: tabella come elemento 
X045 Mappatura tabella di base: con namespace obiettivo 
X046 Mappatura tabella di base: mappatura dati 
X047 Mappatura tabella di base: mappatura metadati 
X048 Mappatura tabella di base: codifica base64 di stringhe binarie 
X049 Mappatura tabella di base: codifica esadecimale di stringhe binarie 
X050 Mappatura avanzata tabella 
X051 Mappatura avanzata tabella: null assenti 
X052 Mappatura avanzata tabella: null come nil 
X053 Mappatura avanzata tabella: tabella come foresta 
X054 Mappatura avanzata tabella: tabella come elemento 
X055 Mappatura avanzata tabella: namespace obiettivo 
X056 Mappatura avanzata tabella: mappatura dati 
X057 Mappatura avanzata tabella: mappatura metadati 
X058 Mappatura avanzata tabella: codifica base64 di stringhe binarie 
X059 Mappatura avanzata tabella: codifica esadecimale di stringhe binarie 
X060 XMLParse: stringa input carattere e opzione CONTENT 
X061 XMLParse: stringa input carattere e opzione DOCUMENT 
X070 XMLSerialize: stringa serializzazione carattere e opzione CONTENT 
X071 XMLSerialize: stringa serializzazione carattere e opzione DOCUMENT 
X072 XMLSerialize: stringa serializzazione carattere 
X090 Predicato XML document 
X120 Parametri XML in routine SQL 
X121 Parametri XML in routine esterne 

Documentazione di PostgreSQL 9.0 > Appendici > SQL Conformance
PrecedenteParole chiave SQLUnsupported FeaturesSuccessivo