SQL compliance

FunctionDescriptionFirebirdIBM DB2Oracle DatabaseMicrosoft SQLMySQLPostgreSQLSQLiteApache IgniteMimer SQL
E011Numeric data typesPartialYesYesUn­knownUn­knownYesUn­knownPartialYes
E011-01INTEGER and SMALLINT data types (including all spellings)YesYesYesUn­knownYesYesUn­knownYesYes
E011-02REAL, DOUBLE PRECISION, and FLOAT data typesYesYesYesUn­knownUn­knownYesUn­knownYesYes
E011-03DECIMAL and NUMERIC data typesPartialYesYesUn­knownUn­knownYesUn­knownPartialYes
E011-04Arithmetic operatorsYesYesYesUn­knownUn­knownYesUn­knownPartialYes
E011-05Numeric comparisonYesYesYesUn­knownUn­knownYesUn­knownYesYes
E011-06Implicit casting among the numeric data typesYesYesYesUn­knownUn­knownYesUn­knownYesYes
E021Character string typesYesYesPartialPartialUn­knownPartialUn­knownPartialYes
E021-01CHARACTER data type (including all its spellings)YesYesYesUn­knownUn­knownYesUn­knownPartialYes
E021-02CHARACTER VARYING data type (including all its spellings)YesYesPartialUn­knownUn­knownYesUn­knownPartialYes
E021-03Character literalsYesYesPartialUn­knownUn­knownYesUn­knownYesYes
E021-04CHARACTER_LENGTH functionYesYesNoUn­knownYesPartial[note 1]NoYesYes
E021-05OCTET_LENGTH functionYesYesNoUn­knownYesYesNo[note 2]YesYes
E021-06SUBSTRING functionYesYesNoYesYesYesNoYesYes
E021-07Character concatenationYesYesYesUn­knownUn­knownYesUn­knownYesYes
E021-08UPPER and LOWER functionsYesYesYesYesYesYesYesYesYes
E021-09TRIM functionYesYesYesNo[note 3][1]YesYesYesYesYes
E021-10Implicit casting among the fixed-length and variable-length character string typesYesYesYesUn­knownUn­knownYesUn­knownYesYes
E021-11POSITION functionYesYesNo[note 4]No[note 5][2]YesYesNoYesYes
E021-12Character comparisonYesYesPartialUn­knownUn­knownYesUn­knownYesYes
E031IdentifiersYesYesPartialUn­knownUn­knownYesUn­knownYesYes
E031-01Delimited identifiersYesYesUn­knownUn­knownUn­knownYesUn­knownYesYes
E031-02Lower case identifiersYesYesUn­knownUn­knownUn­knownYesUn­knownYesYes
E031-03Trailing underscoreYesYesUn­knownUn­knownUn­knownYesUn­knownYesYes
E051Basic query specificationPartialYesPartialUn­knownPartialYesUn­knownPartialYes
E051-01SELECT DISTINCTYesYesYesYesYesYesYesYesYes
E051-02GROUP BY clauseYesYesYesYesYesYesYesPartialYes
E051-04GROUP BY can contain columns not in <select-list>YesYesYesUn­knownNoYesUn­knownYesYes
E051-05Select list items can be renamedYesYesYesYesYesYesUn­knownYesYes
E051-06HAVING clauseYesYesYesYesYesYesUn­knownYesYes
E051-07Qualified * in select listYesYesYesUn­knownUn­knownYesUn­knownYesYes
E051-08Correlation names in the FROM clauseYesYesPartialUn­knownUn­knownYesUn­knownYesYes
E051-09Rename columns in the FROM clauseNoYesUn­knownUn­knownUn­knownYesUn­knownNoYes
E061Basic predicates and search conditionsYesPartialPartialUn­knownUn­knownYesUn­knownPartialYes
E061-01Comparison predicateYesYesPartialUn­knownUn­knownYesUn­knownYesYes
E061-02BETWEEN predicateYesYesPartialYesYesYesUn­knownYesYes
E061-03IN predicate with list of valuesYesYesPartialYesYesYesUn­knownYesYes
E061-04LIKE predicateYesYesPartialYesYesYesUn­knownPartialYes
E061-05LIKE predicate: ESCAPE clauseYesYesPartialUn­knownUn­knownYesUn­knownPartialYes
E061-06NULL predicateYesYesPartialUn­knownUn­knownYesUn­knownYesYes
E061-07Quantified comparison predicateYesYesPartialUn­knownUn­knownYesUn­knownPartialYes
E061-08EXISTS predicateYesYesPartialYesYesYesUn­knownYesYes
E061-09Subqueries in comparison predicateYesYesPartialUn­knownUn­knownYesUn­knownYesYes
E061-11Subqueries in IN predicateYesYesPartialYesYesYesUn­knownYesYes
E061-12Subqueries in quantified comparison predicateYesYesPartialUn­knownUn­knownYesUn­knownNoYes
E061-13Correlated subqueriesYesYesPartialYesUn­knownYesUn­knownYesYes
E061-14Search conditionYesPartial[note 6]PartialUn­knownUn­knownYesUn­knownYesYes
E071Basic query expressionsPartialYesPartialUn­knownUn­knownYesUn­knownYesYes
E071-01UNION DISTINCT table operatorYesYes[note 7]YesUn­knownUn­knownYesUn­knownYesYes
E071-02UNION ALL table operatorYesYesYesYesYesYesUn­knownYesYes
E071-03EXCEPT DISTINCT table operatorNoYes[note 7]No[note 8]Un­knownUn­knownYesUn­knownYesYes
E071-05Columns combined via table operators need not have exactly the same data typeYesYesYesYesUn­knownYesUn­knownYesYes
E071-06Table operators in subqueriesYesYesYesUn­knownUn­knownYesUn­knownYesYes
E081Basic PrivilegesYesYesPartialUn­knownUn­knownYesUn­knownUn­knownYes
E081-01SELECT privilege at the table levelYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E081-02DELETE privilegeYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E081-03INSERT privilege at the table levelYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E081-04UPDATE privilege at the table levelYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E081-05UPDATE privilege at the column levelYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E081-06REFERENCES privilege at the table levelYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E081-07REFERENCES privilege at the column levelYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E081-08WITH GRANT OPTIONYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E081-09USAGE privilegeYesYesNoUn­knownUn­knownYesUn­knownUn­knownYes
E081-10EXECUTE privilegeYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E091Set functionsYesYesYesUn­knownUn­knownYesUn­knownPartialYes
E091-01AVGYesYesYesYesYesYesYesYesYes
E091-02COUNTYesYesYesYesYesYesYesYesYes
E091-03MAXYesYesYesYesYesYesYesYesYes
E091-04MINYesYesYesYesYesYesYesYesYes
E091-05SUMYesYesYesYesYesYesYesYesYes
E091-06ALL quantifierYesYesYesUn­knownUn­knownYesUn­knownYesYes
E091-07DISTINCT quantifierYesYesYesYesYesYesUn­knownYesYes
E101Basic data manipulationYesYesYesUn­knownUn­knownYesPartialPartialYes
E101-01INSERT statementYesYesYesYesYesYesUn­knownPartialYes
E101-03Searched UPDATE statementYesYesYesUn­knownUn­knownYesUn­knownYesYes
E101-04Searched DELETE statementYesYesYesUn­knownUn­knownYesUn­knownYesYes
E111Single row SELECT statementYesYesYesUn­knownUn­knownYesUn­knownUn­knownYes
E121Basic cursor supportPartialYesPartialUn­knownUn­knownYesPartialNoYes
E121-01DECLARE CURSORYesYesPartialUn­knownUn­knownYesNoNoYes
E121-02ORDER BY columns need not be in select listYesYesYesYesYesYesYes[note 9]NoYes
E121-03Value expressions in ORDER BY clauseYesYesYesYesYesYesUn­knownNoYes
E121-04OPEN statementYesYesYesUn­knownUn­knownYesUn­knownNoYes
E121-06Positioned UPDATE statementYesYesYesUn­knownUn­knownYesUn­knownNoYes
E121-07Positioned DELETE statementYesYesYesUn­knownUn­knownYesUn­knownNoYes
E121-08CLOSE statementYesYesYesUn­knownUn­knownYesUn­knownNoYes
E121-10FETCH statement: implicit NEXTYesYesPartialUn­knownUn­knownYesUn­knownNoYes
E121-17WITH HOLD cursorsNoYesUn­knownUn­knownUn­knownYesUn­knownNoYes
E131Null value support (nulls in lieu of values)YesYesUn­knownYesYesYesUn­knownYesYes
E141Basic integrity constraintsPartialYesYesUn­knownUn­knownYesPartialPartialYes
E141-01NOT NULL constraintsYesYesYesYesYesYesYesYesYes
E141-02UNIQUE constraints of NOT NULL columnsYesYesYesUn­knownUn­knownYesYesNoYes
E141-03PRIMARY KEY constraintsYesYesYesYesYesYesYes[note 10]PartialYes
E141-04Basic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update actionYesYesYesUn­knownUn­knownYesUn­knownNoYes
E141-06CHECK constraintsYesYesYesUn­knownUn­knownYesUn­knownNoYes
E141-07Column defaultsYesYesYesYesYesYesUn­knownNoYes
E141-08NOT NULL inferred on PRIMARY KEYYesYesYesUn­knownUn­knownYesPartial[note 11]PartialYes
E141-10Names in a foreign key can be specified in any orderNoYesYesUn­knownUn­knownYesUn­knownNoYes
E151Transaction supportPartialPartialYesYesUn­knownYesPartialNoYes
E151-01COMMIT statementYesYesYesYesUn­knownYesYesNoYes
E151-02ROLLBACK statementYesYesYesYesUn­knownYesYesNoYes
E152Basic SET TRANSACTION statementPartialYesYesUn­knownUn­knownYesNoNoYes
E152-01SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clauseNoPartial[note 12]YesUn­knownUn­knownYesUn­knownNoYes
E152-02SET TRANSACTION statement: READ ONLY and READ WRITE clausesYesNoYesUn­knownUn­knownYesUn­knownNoYes
E*OtherPartialPartialPartialUn­knownUn­knownPartialUn­knownUn­knownYes
E153Updatable queries with subqueriesYesYesYesUn­knownUn­knownYesUn­knownYesYes
E161SQL comments using leading double minusYesYesYesYesYesYesYesYesYes
E171SQLSTATE supportPartialYesYesUn­knownUn­knownYesUn­knownPartialYes
E182Host language binding (previously "Module Language")NoPartial[note 13]Un­knownUn­knownUn­knownNoUn­knownNoYes
F021Basic information schemaNoPartialNoYesYes[note 14]YesNoNoYes
F021-01COLUMNS viewNoPartial[note 15]NoYesYes[note 16]YesNo[note 17]NoYes
F021-02TABLES viewNoPartial[note 15]NoYesYes[note 16]YesNo[note 17]NoYes
F021-03VIEWS viewNoPartial[note 15]NoYesYes[note 16]YesNo[note 17]NoYes
F021-04TABLE_CONSTRAINTS viewNoPartial[note 15]NoYesYesYesNoNoYes
F021-05REFERENTIAL_CONSTRAINTS viewNoPartial[note 15]NoYesYesYesNoNoYes
F021-06CHECK_CONSTRAINTS viewNoPartial[note 15]NoYesYesYesNoNoYes
F031Basic schema manipulationPartialPartialPartialUn­knownUn­knownYesPartialPartialYes
F031-01CREATE TABLE statement to create persistent base tablesYesYesYesYesYesYesUn­knownYesYes
F031-02CREATE VIEW statementYesYesYesYesUn­knownYesYesNoYes
F031-03GRANT statementYesYesYesUn­knownUn­knownYesNoNoYes
F031-04ALTER TABLE statement: ADD COLUMN clauseYesYesUn­knownUn­knownYesYesUn­knownYesYes
F031-13DROP TABLE statement: RESTRICT clausePartialYesNoUn­knownUn­knownYesUn­knownNoYes
F031-16DROP VIEW statement: RESTRICT clauseUn­knownYesNoUn­knownUn­knownYesUn­knownNoYes
F031-19REVOKE statement: RESTRICT clausePartialNoNoUn­knownUn­knownYesUn­knownNoYes
F041Basic joined tableYesYesYesUn­knownUn­knownYesPartialYesYes
F041-01Inner join (but not necessarily the INNER keyword)YesYesYesYesYesYesYesYesYes
F041-02INNER keywordYesYesYesYesYesYesYesYesYes
F041-03LEFT OUTER JOINYesYesYesYesYesYesYesYesYes
F041-04RIGHT OUTER JOINYesYesYesYesYesYesNoYesYes
F041-05Outer joins can be nestedYesYesYesUn­knownUn­knownYesUn­knownYesYes
F041-07The inner table in a left or right outer join can also be used in an inner joinYesYesYesUn­knownUn­knownYesUn­knownYesYes
F041-08All comparison operators are supported (rather than just =)YesYesYesUn­knownUn­knownYesUn­knownYesYes
F051Basic date and timePartialPartialYesUn­knownUn­knownYesPartialPartialYes
F051-01DATE data type (including support of DATE literal)YesYesYesUn­knownYesYesUn­knownPartialYes
F051-02TIME data type (including support of TIME literal) with fractional seconds precision of at least 0YesYesNoUn­knownUn­knownYesUn­knownPartialYes
F051-03TIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6YesYesYesUn­knownUn­knownYesUn­knownPartialYes
F051-04Comparison predicate on DATE, TIME, and TIMESTAMP data typesYesYesYesUn­knownUn­knownYesUn­knownYesYes
F051-05Explicit CAST between datetime types and character string typesYesYesYesUn­knownUn­knownYesPartialYesYes
F051-06CURRENT_DATEYesYesYesUn­knownYesYesYesYesYes
F051-07LOCALTIMEPartialNoNoUn­knownYesYesNoYesYes
F051-08LOCALTIMESTAMPPartialNoYesUn­knownYesYesNoYesYes
F081UNION and EXCEPT in viewsPartialYesUn­knownYesUn­knownYesYesNoYes
F131Grouped operationsYesUn­knownYesUn­knownUn­knownYesUn­knownNoYes
F131-01WHERE, GROUP BY, and HAVING clauses supported in queries with grouped viewsYesUn­knownYesUn­knownUn­knownYesUn­knownNoYes
F131-02Multiple tables supported in queries with grouped viewsYesUn­knownYesUn­knownUn­knownYesUn­knownNoYes
F131-03Set functions supported in queries with grouped viewsYesUn­knownYesUn­knownUn­knownYesUn­knownNoYes
F131-04Subqueries with GROUP BY and HAVING clauses and grouped viewsYesUn­knownYesUn­knownUn­knownYesUn­knownNoYes
F131-05Single row SELECT with GROUP BY and HAVING clauses and grouped viewsYesUn­knownYesUn­knownUn­knownYesUn­knownNoYes
F*OtherPartialUn­knownPartialUn­knownUn­knownPartialUn­knownPartialYes
F181Multiple module supportNoUn­knownYesUn­knownUn­knownNoUn­knownNoYes
F201CAST functionYesUn­knownYesUn­knownYesYesYesYesYes
F221Explicit defaultsNoUn­knownUn­knownUn­knownUn­knownYesUn­knownYesYes
F261CASE expressionYesUn­knownYesYesYesYesUn­knownYesYes
F261-01Simple CASEYesUn­knownYesUn­knownUn­knownYesUn­knownYesYes
F261-02Searched CASEYesUn­knownYesUn­knownUn­knownYesUn­knownYesYes
F261-03NULLIFYesUn­knownYesUn­knownUn­knownYesUn­knownYesYes
F261-04COALESCEYesUn­knownYesYesYesYesUn­knownYesYes
F311Schema definition statementNoUn­knownYesUn­knownUn­knownYesPartialNoYes
F311-01CREATE SCHEMANoUn­knownYesUn­knownUn­knownYesNoNoYes
F311-02CREATE TABLE for persistent base tablesNoUn­knownYesYesYesYesUn­knownNoYes
F311-03CREATE VIEWNoUn­knownYesYesYesYesYesNoYes
F311-04CREATE VIEW: WITH CHECK OPTIONNoUn­knownYesUn­knownUn­knownYesUn­knownNoYes
F311-05GRANT statementNoUn­knownYesUn­knownUn­knownYesNoNoYes
F471Scalar subquery valuesYesUn­knownYesUn­knownUn­knownYesYesYesYes
F481Expanded NULL predicateYesUn­knownYesUn­knownUn­knownYesUn­knownYesYes
F501Features and conformance viewsUn­knownUn­knownNoNoUn­knownYesUn­knownNoYes
F501-01SQL_FEATURES viewNoNoNoNoNoYesNoNoYes
F501-02SQL_SIZING viewUn­knownUn­knownNoNoUn­knownYesNoNoYes
F501-03SQL_LANGUAGES viewUn­knownUn­knownNoNoUn­knownYesNoNoYes
F812Basic flaggingNoUn­knownSQL-92Un­knownUn­knownNoUn­knownNoYes
S011Distinct data typesNoUn­knownUn­knownUn­knownUn­knownNoUn­knownNoYes
S011-01USER_DEFINED_TYPES viewUn­knownUn­knownUn­knownUn­knownUn­knownNoUn­knownNoYes
T321Basic SQL-invoked routinesPartialUn­knownPartialUn­knownUn­knownPartialUn­knownNoYes
T321-01User-defined functions with no overloadingYesUn­knownUn­knownYesYesYesUn­knownNoYes
T321-02User-defined stored procedures with no overloadingYesUn­knownUn­knownYesUn­knownYesUn­knownNoYes
T321-03Function invocationYesUn­knownYesYesYesYesUn­knownNoYes
T321-04CALL statementPartialUn­knownYesUn­knownUn­knownYesNoNoYes
T321-05RETURN statementPartialUn­knownPartial[note 18]Un­knownUn­knownNoNoNoYes
T321-06ROUTINES viewUn­knownUn­knownNo[note 19]Un­knownUn­knownYesUn­knownNoYes
T321-07PARAMETERS viewUn­knownUn­knownNo[note 20]Un­knownUn­knownYesUn­knownNoYes
T631IN predicate with one list elementYesUn­knownYesUn­knownUn­knownYesUn­knownNoYes

Footnotes

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