SQL compliance

FunctionDescriptionFirebirdIBM DB2Oracle DatabaseMicrosoft SQLMySQLPostgreSQLSQLiteApache Ignite
E011Numeric data typesPartialYesYesUnknownUnknownYesUnknownPartial
E011-01INTEGER and SMALLINT data types (including all spellings)YesYesYesUnknownUnknownYesUnknownYes
E011-02REAL, DOUBLE PRECISION, and FLOAT data typesYesYesYesUnknownUnknownYesUnknownYes
E011-03DECIMAL and NUMERIC data typesPartialYesYesUnknownUnknownYesUnknownPartial
E011-04Arithmetic operatorsYesYesYesUnknownUnknownYesUnknownPartial
E011-05Numeric comparisonYesYesYesUnknownUnknownYesUnknownYes
E011-06Implicit casting among the numeric data typesYesYesYesUnknownUnknownYesUnknownYes
E021Character string typesYesYesPartialPartialUnknownPartialUnknownPartial
E021-01CHARACTER data type (including all its spellings)YesYesYesUnknownUnknownYesUnknownPartial
E021-02CHARACTER VARYING data type (including all its spellings)YesYesPartialUnknownUnknownYesUnknownPartial
E021-03Character literalsYesYesPartialUnknownUnknownYesUnknownYes
E021-04CHARACTER_LENGTH functionYesYes[note 1]NoUnknownYesPartial[note 2]NoYes
E021-05OCTET_LENGTH functionYesYesNoUnknownYesYesNo[note 3]Yes
E021-06SUBSTRING functionYesYesNoYesYesYesNoYes
E021-07Character concatenationYesYesYesUnknownUnknownYesUnknownYes
E021-08UPPER and LOWER functionsYesYesYesYesYesYesYesYes
E021-09TRIM functionYesYesYesNo[note 4][1]YesYesYesYes
E021-10Implicit casting among the fixed-length and variable-length character string typesYesYesYesUnknownUnknownYesUnknownYes
E021-11POSITION functionYesYesNo[note 5]No[note 6][2]YesYesNoYes
E021-12Character comparisonYesYesPartialUnknownUnknownYesUnknownYes
E031IdentifiersYesYesPartialUnknownUnknownYesUnknownYes
E031-01Delimited identifiersYesYesUnknownUnknownUnknownYesUnknownYes
E031-02Lower case identifiersYesYesUnknownUnknownUnknownYesUnknownYes
E031-03Trailing underscoreYesYesUnknownUnknownUnknownYesUnknownYes
E051Basic query specificationPartialYesPartialUnknownPartialYesUnknownPartial
E051-01SELECT DISTINCTYesYesYesYesYesYesYesYes
E051-02GROUP BY clauseYesYesYesYesYesYesYesPartial
E051-04GROUP BY can contain columns not in <select-list>YesYesYesUnknownNoYesUnknownYes
E051-05Select list items can be renamedYesYesYesYesYesYesUnknownYes
E051-06HAVING clauseYesYesYesYesYesYesUnknownYes
E051-07Qualified * in select listYesYesYesUnknownUnknownYesUnknownYes
E051-08Correlation names in the FROM clauseYesYesPartialUnknownUnknownYesUnknownYes
E051-09Rename columns in the FROM clauseNoYesUnknownUnknownUnknownYesUnknownNo
E061Basic predicates and search conditionsYesPartialPartialUnknownUnknownYesUnknownPartial
E061-01Comparison predicateYesYesPartialUnknownUnknownYesUnknownYes
E061-02BETWEEN predicateYesYesPartialYesYesYesUnknownYes
E061-03IN predicate with list of valuesYesYesPartialYesYesYesUnknownYes
E061-04LIKE predicateYesYesPartialYesYesYesUnknownPartial
E061-05LIKE predicate: ESCAPE clauseYesYesPartialUnknownUnknownYesUnknownPartial
E061-06NULL predicateYesYesPartialUnknownUnknownYesUnknownYes
E061-07Quantified comparison predicateYesYesPartialUnknownUnknownYesUnknownPartial
E061-08EXISTS predicateYesYesPartialYesYesYesUnknownYes
E061-09Subqueries in comparison predicateYesYesPartialUnknownUnknownYesUnknownYes
E061-11Subqueries in IN predicateYesYesPartialYesYesYesUnknownYes
E061-12Subqueries in quantified comparison predicateYesYesPartialUnknownUnknownYesUnknownNo
E061-13Correlated subqueriesYesYesPartialYesUnknownYesUnknownYes
E061-14Search conditionYesPartial[note 7]PartialUnknownUnknownYesUnknownYes
E071Basic query expressionsPartialYesPartialUnknownUnknownYesUnknownYes
E071-01UNION DISTINCT table operatorYesYes[note 8]YesUnknownUnknownYesUnknownYes
E071-02UNION ALL table operatorYesYesYesYesYesYesUnknownYes
E071-03EXCEPT DISTINCT table operatorNoYes[note 8]No[note 9]UnknownUnknownYesUnknownYes
E071-05Columns combined via table operators need not have exactly the same data typeYesYesYesYesUnknownYesUnknownYes
E071-06Table operators in subqueriesYesYesYesUnknownUnknownYesUnknownYes
E081Basic PrivilegesYesYesPartialUnknownUnknownYesUnknownUnknown
E081-01SELECT privilege at the table levelYesYesYesUnknownUnknownYesUnknownUnknown
E081-02DELETE privilegeYesYesYesUnknownUnknownYesUnknownUnknown
E081-03INSERT privilege at the table levelYesYesYesUnknownUnknownYesUnknownUnknown
E081-04UPDATE privilege at the table levelYesYesYesUnknownUnknownYesUnknownUnknown
E081-05UPDATE privilege at the column levelYesYesYesUnknownUnknownYesUnknownUnknown
E081-06REFERENCES privilege at the table levelYesYesYesUnknownUnknownYesUnknownUnknown
E081-07REFERENCES privilege at the column levelYesYesYesUnknownUnknownYesUnknownUnknown
E081-08WITH GRANT OPTIONYesYesYesUnknownUnknownYesUnknownUnknown
E081-09USAGE privilegeYesYesNoUnknownUnknownYesUnknownUnknown
E081-10EXECUTE privilegeYesYesYesUnknownUnknownYesUnknownUnknown
E091Set functionsYesYesYesUnknownUnknownYesUnknownPartial
E091-01AVGYesYesYesYesYesYesYesYes
E091-02COUNTYesYesYesYesYesYesYesYes
E091-03MAXYesYesYesYesYesYesYesYes
E091-04MINYesYesYesYesYesYesYesYes
E091-05SUMYesYesYesYesYesYesYesYes
E091-06ALL quantifierYesYesYesUnknownUnknownYesUnknownYes
E091-07DISTINCT quantifierYesYesYesYesYesYesUnknownYes
E101Basic data manipulationYesYesYesUnknownUnknownYesPartialPartial
E101-01INSERT statementYesYesYesYesYesYesUnknownPartial
E101-03Searched UPDATE statementYesYesYesUnknownUnknownYesUnknownYes
E101-04Searched DELETE statementYesYesYesUnknownUnknownYesUnknownYes
E111Single row SELECT statementYesYesYesUnknownUnknownYesUnknownUnknown
E121Basic cursor supportPartialYesPartialUnknownUnknownYesPartialNo
E121-01DECLARE CURSORYesYesPartialUnknownUnknownYesNoNo
E121-02ORDER BY columns need not be in select listYesYesYesYesYesYesYes[note 10]No
E121-03Value expressions in ORDER BY clauseYesYesYesYesYesYesUnknownNo
E121-04OPEN statementYesYesYesUnknownUnknownYesUnknownNo
E121-06Positioned UPDATE statementYesYesYesUnknownUnknownYesUnknownNo
E121-07Positioned DELETE statementYesYesYesUnknownUnknownYesUnknownNo
E121-08CLOSE statementYesYesYesUnknownUnknownYesUnknownNo
E121-10FETCH statement: implicit NEXTYesYesPartialUnknownUnknownYesUnknownNo
E121-17WITH HOLD cursorsNoYesUnknownUnknownUnknownYesUnknownNo
E131Null value support (nulls in lieu of values)YesYesUnknownYesYesYesUnknownYes
E141Basic integrity constraintsPartialYesYesUnknownUnknownYesPartialPartial
E141-01NOT NULL constraintsYesYesYesYesYesYesYesYes
E141-02UNIQUE constraints of NOT NULL columnsYesYesYesUnknownUnknownYesYesNo
E141-03PRIMARY KEY constraintsYesYesYesYesYesYesYes[note 11]Partial
E141-04Basic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update actionYesYesYesUnknownUnknownYesUnknownNo
E141-06CHECK constraintsYesYesYesUnknownUnknownYesUnknownNo
E141-07Column defaultsYesYesYesYesYesYesUnknownNo
E141-08NOT NULL inferred on PRIMARY KEYYesYesYesUnknownUnknownYesPartial[note 12]Partial
E141-10Names in a foreign key can be specified in any orderNoYesYesUnknownUnknownYesUnknownNo
E151Transaction supportPartialPartialYesYesUnknownYesPartialNo
E151-01COMMIT statementYesYesYesYesUnknownYesYesNo
E151-02ROLLBACK statementYesYesYesYesUnknownYesYesNo
E152Basic SET TRANSACTION statementPartialYesYesUnknownUnknownYesNoNo
E152-01SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clauseNoPartial[note 13]YesUnknownUnknownYesUnknownNo
E152-02SET TRANSACTION statement: READ ONLY and READ WRITE clausesYesNoYesUnknownUnknownYesUnknownNo
E*OtherPartialPartialPartialUnknownUnknownPartialUnknownUnknown
E153Updatable queries with subqueriesYesYesYesUnknownUnknownYesUnknownYes
E161SQL comments using leading double minusYesYesYesYesYesYesYesYes
E171SQLSTATE supportPartialYesYesUnknownUnknownYesUnknownPartial
E182Host language binding (previously "Module Language")NoPartial[note 14]UnknownUnknownUnknownNoUnknownNo
F021Basic information schemaNoPartialNoYesYes[note 15]YesNoNo
F021-01COLUMNS viewNoPartial[note 16]NoYesYes[note 17]YesNo[note 18]No
F021-02TABLES viewNoPartial[note 16]NoYesYes[note 17]YesNo[note 18]No
F021-03VIEWS viewNoPartial[note 16]NoYesYes[note 17]YesNo[note 18]No
F021-04TABLE_CONSTRAINTS viewNoPartial[note 16]NoYesYesYesNoNo
F021-05REFERENTIAL_CONSTRAINTS viewNoPartial[note 16]NoYesYesYesNoNo
F021-06CHECK_CONSTRAINTS viewNoPartial[note 16]NoYesYesYesNoNo
F031Basic schema manipulationPartialPartialPartialUnknownUnknownYesPartialPartial
F031-01CREATE TABLE statement to create persistent base tablesYesYesYesYesYesYesUnknownYes
F031-02CREATE VIEW statementYesYesYesYesUnknownYesYesNo
F031-03GRANT statementYesYesYesUnknownUnknownYesNoNo
F031-04ALTER TABLE statement: ADD COLUMN clauseYesYesUnknownUnknownYesYesUnknownYes
F031-13DROP TABLE statement: RESTRICT clausePartialYesNoUnknownUnknownYesUnknownNo
F031-16DROP VIEW statement: RESTRICT clauseUnknownYesNoUnknownUnknownYesUnknownNo
F031-19REVOKE statement: RESTRICT clausePartialNoNoUnknownUnknownYesUnknownNo
F041Basic joined tableYesYesYesUnknownUnknownYesPartialYes
F041-01Inner join (but not necessarily the INNER keyword)YesYesYesYesYesYesYesYes
F041-02INNER keywordYesYesYesYesYesYesYesYes
F041-03LEFT OUTER JOINYesYesYesYesYesYesYesYes
F041-04RIGHT OUTER JOINYesYesYesYesYesYesNoYes
F041-05Outer joins can be nestedYesYesYesUnknownUnknownYesUnknownYes
F041-07The inner table in a left or right outer join can also be used in an inner joinYesYesYesUnknownUnknownYesUnknownYes
F041-08All comparison operators are supported (rather than just =)YesYesYesUnknownUnknownYesUnknownYes
F051Basic date and timePartialPartialYesUnknownUnknownYesPartialPartial
F051-01DATE data type (including support of DATE literal)YesYesYesUnknownYesYesUnknownPartial
F051-02TIME data type (including support of TIME literal) with fractional seconds precision of at least 0YesYesNoUnknownUnknownYesUnknownPartial
F051-03TIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6YesYesYesUnknownUnknownYesUnknownPartial
F051-04Comparison predicate on DATE, TIME, and TIMESTAMP data typesYesYesYesUnknownUnknownYesUnknownYes
F051-05Explicit CAST between datetime types and character string typesYesYesYesUnknownUnknownYesPartialYes
F051-06CURRENT_DATEYesYesYesUnknownYesYesYesYes
F051-07LOCALTIMEPartialNoNoUnknownYesYesNoYes
F051-08LOCALTIMESTAMPPartialNoYesUnknownYesYesNoYes
F081UNION and EXCEPT in viewsPartialYesUnknownYesUnknownYesYesNo
F131Grouped operationsYesUnknownYesUnknownUnknownYesUnknownNo
F131-01WHERE, GROUP BY, and HAVING clauses supported in queries with grouped viewsYesUnknownYesUnknownUnknownYesUnknownNo
F131-02Multiple tables supported in queries with grouped viewsYesUnknownYesUnknownUnknownYesUnknownNo
F131-03Set functions supported in queries with grouped viewsYesUnknownYesUnknownUnknownYesUnknownNo
F131-04Subqueries with GROUP BY and HAVING clauses and grouped viewsYesUnknownYesUnknownUnknownYesUnknownNo
F131-05Single row SELECT with GROUP BY and HAVING clauses and grouped viewsYesUnknownYesUnknownUnknownYesUnknownNo
F*OtherPartialUnknownPartialUnknownUnknownPartialUnknownPartial
F181Multiple module supportNoUnknownYesUnknownUnknownNoUnknownNo
F201CAST functionYesUnknownYesUnknownYesYesYesYes
F221Explicit defaultsNoUnknownUnknownUnknownUnknownYesUnknownYes
F261CASE expressionYesUnknownYesYesYesYesUnknownYes
F261-01Simple CASEYesUnknownYesUnknownUnknownYesUnknownYes
F261-02Searched CASEYesUnknownYesUnknownUnknownYesUnknownYes
F261-03NULLIFYesUnknownYesUnknownUnknownYesUnknownYes
F261-04COALESCEYesUnknownYesYesYesYesUnknownYes
F311Schema definition statementNoUnknownYesUnknownUnknownYesPartialNo
F311-01CREATE SCHEMANoUnknownYesUnknownUnknownYesNoNo
F311-02CREATE TABLE for persistent base tablesNoUnknownYesYesYesYesUnknownNo
F311-03CREATE VIEWNoUnknownYesYesYesYesYesNo
F311-04CREATE VIEW: WITH CHECK OPTIONNoUnknownYesUnknownUnknownYesUnknownNo
F311-05GRANT statementNoUnknownYesUnknownUnknownYesNoNo
F471Scalar subquery valuesYesUnknownYesUnknownUnknownYesYesYes
F481Expanded NULL predicateYesUnknownYesUnknownUnknownYesUnknownYes
F501Features and conformance viewsUnknownUnknownNoNoUnknownYesUnknownNo
F501-01SQL_FEATURES viewNoNoNoNoNoYesNoNo
F501-02SQL_SIZING viewUnknownUnknownNoNoUnknownYesNoNo
F501-03SQL_LANGUAGES viewUnknownUnknownNoNoUnknownYesNoNo
F812Basic flaggingNoUnknownSQL-92UnknownUnknownNoUnknownNo
S011Distinct data typesNoUnknownUnknownUnknownUnknownNoUnknownNo
S011-01USER_DEFINED_TYPES viewUnknownUnknownUnknownUnknownUnknownNoUnknownNo
T321Basic SQL-invoked routinesPartialUnknownPartialUnknownUnknownPartialUnknownNo
T321-01User-defined functions with no overloadingYesUnknownUnknownYesYesYesUnknownNo
T321-02User-defined stored procedures with no overloadingYesUnknownUnknownYesUnknownYesUnknownNo
T321-03Function invocationYesUnknownYesYesYesYesUnknownNo
T321-04CALL statementPartialUnknownYesUnknownUnknownYesNoNo
T321-05RETURN statementPartialUnknownPartial[note 19]UnknownUnknownNoNoNo
T321-06ROUTINES viewUnknownUnknownNo[note 20]UnknownUnknownYesUnknownNo
T321-07PARAMETERS viewUnknownUnknownNo[note 21]UnknownUnknownYesUnknownNo
T631IN predicate with one list elementYesUnknownYesUnknownUnknownYesUnknownNo

Footnotes

  1. Without USING keyword (but with unit argument); LENGTH function has optional unit argument
  2. Trims trailing spaces from CHARACTER values before counting
  3. There is no built-in function by this name, although the number of octets in a string can be determined by using LENGTH(CAST(X AS BLOB)).
  4. There are LTRIM and RTRIM functions for equivalent functionality.
  5. There is INSTR.
  6. There is the CHARINDEX function for equivalent functionality.
  7. Lacks support for [IS [NOT] TRUE|FALSE|UNKNOWN]
  8. Without DISTINCT keyword
  9. Use MINUS instead of EXCEPT DISTINCT
  10. Except compound queries.
  11. Only WITHOUT ROWID tables have real primary keys other than the rowid (INTEGER PRIMARY KEY)
  12. Only for WITHOUT ROWID tables.
  13. SET [CURRENT] ISOLATION used instead of SET TRANSACTION
  14. Supports embedded language features but not the specific MODULE syntax
  15. https://dev.mysql.com/doc/refman/5.7/en/information-schema.html
  16. Included in SYSIBM schema
  17. Also includes MySQL-specific extension columns
  18. You can use PRAGMA for obtaining this information, and can create an information schema based on this, but it is not build in.
  19. Oracle supports the following subfeature in PL/SQL but not in Oracle SQL.
  20. Use the ALL PROCEDURES metadata view.
  21. Use the ALL_ARGUMENTS and ALL_METHOD_PARAMS metadata views.

See also

References

  1. "[MS-TSQLISO02]: E021-09, TRIM function". docs.microsoft.com. Retrieved 22 April 2020.
  2. "[MS-TSQLISO02]: E021-11, POSITION function". docs.microsoft.com. Retrieved 22 April 2020.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.