SQL compliance

Last updated

SQL compliance means adhering to rules laid for SQL. Some standards and protocols related to SQL are mentioned in this.

Contents

FunctionDescription Firebird IBM Db2 Oracle Database Microsoft SQL MonetDB MySQL PostgreSQL SQLite Apache Ignite Mimer SQL NexusDB
E011Numeric data typesPartialYesYesUnknownYesUnknownYesUnknownPartialYesYes
E011-01INTEGER and SMALLINT data types (including all spellings)YesYesYesUnknownYesYesYesUnknownYesYesYes
E011-02REAL, DOUBLE PRECISION, and FLOAT data typesYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E011-03DECIMAL and NUMERIC data typesPartialYesYesUnknownYesUnknownYesUnknownPartialYesYes
E011-04Arithmetic operatorsYesYesYesUnknownYesUnknownYesUnknownPartialYesYes
E011-05Numeric comparisonYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E011-06Implicit casting among the numeric data typesYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E021Character string typesYesYesPartialPartialPartialUnknownPartialUnknownPartialYesYes
E021-01CHARACTER data type (including all its spellings)YesYesYesUnknownYesUnknownYesUnknownPartialYesYes
E021-02CHARACTER VARYING data type (including all its spellings)YesYesPartialUnknownYesUnknownYesUnknownPartialYesYes
E021-03Character literalsYesYesPartialUnknownYesUnknownYesUnknownYesYesYes
E021-04CHARACTER_LENGTH functionYesYesNoNoYesYesPartial [note 1] NoYesYesYes
E021-05OCTET_LENGTH functionYesYesNoNoYesYesYesNo [note 2] YesYesYes
E021-06SUBSTRING functionYesYesNoYesYesYesYesNoYesYesYes
E021-07Character concatenationYesYesYesNoYesNoYesYesYesYesYes
E021-08UPPER and LOWER functionsYesYesYesYesYesYesYesYesYesYesYes
E021-09TRIM functionYesYesYesNo [note 3] [1] YesYesYesNoYesYesYes
E021-10Implicit casting among the fixed-length and variable-length character string typesYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E021-11POSITION functionYesYesNo [note 4] No [note 5] [2] No [note 6] YesYesNoYesYesYes
E021-12Character comparisonYesYesPartialUnknownYesUnknownYesUnknownYesYesYes
E031IdentifiersYesYesPartialUnknownYesUnknownYesUnknownYesYesYes
E031-01Delimited identifiersYesYesYesYesYesUnknownYesYesYesYesYes
E031-02Lower case identifiersYesYesUnknownUnknownYesUnknownYesUnknownYesYesYes
E031-03Trailing underscoreYesYesYesYesYesYesYesYesYesYesYes
E051Basic query specificationPartialYesPartialUnknownYesPartialYesUnknownPartialYesYes
E051-01SELECT DISTINCTYesYesYesYesYesYesYesYesYesYesYes
E051-02GROUP BY clauseYesYesYesYesYesYesYesYesPartialYesYes
E051-04GROUP BY can contain columns not in <select-list>YesYesYesUnknownYesNoYesUnknownYesYesYes
E051-05Select list items can be renamedYesYesYesYesYesYesYesUnknownYesYesYes
E051-06HAVING clauseYesYesYesYesYesYesYesUnknownYesYesYes
E051-07Qualified * in select listYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E051-08Correlation names in the FROM clauseYesYesPartialUnknownYesUnknownYesUnknownYesYesYes
E051-09Rename columns in the FROM clauseNoYesUnknownUnknownYesUnknownYesUnknownNoYesYes
E061Basic predicates and search conditionsYesPartialPartialUnknownYesUnknownYesUnknownPartialYesYes
E061-01Comparison predicateYesYesPartialUnknownYesUnknownYesUnknownYesYesYes
E061-02BETWEEN predicateYesYesPartialYesYesYesYesUnknownYesYesYes
E061-03IN predicate with list of valuesYesYesPartialYesYesYesYesUnknownYesYesYes
E061-04LIKE predicateYesYesPartialYesYesYesYesUnknownPartialYesYes
E061-05LIKE predicate: ESCAPE clauseYesYesPartialUnknownYesUnknownYesUnknownPartialYesYes
E061-06NULL predicateYesYesPartialUnknownYesUnknownYesUnknownYesYesYes
E061-07Quantified comparison predicateYesYesPartialUnknownYesUnknownYesUnknownPartialYesYes
E061-08EXISTS predicateYesYesPartialYesYesYesYesUnknownYesYesYes
E061-09Subqueries in comparison predicateYesYesPartialUnknownYesUnknownYesUnknownYesYesYes
E061-11Subqueries in IN predicateYesYesPartialYesYesYesYesUnknownYesYesYes
E061-12Subqueries in quantified comparison predicateYesYesPartialUnknownYesUnknownYesUnknownNoYesYes
E061-13Correlated subqueriesYesYesPartialYesYesUnknownYesUnknownYesYesYes
E061-14Search conditionYesPartial [note 7] PartialUnknownYesUnknownYesUnknownYesYesYes
E071Basic query expressionsPartialYesPartialUnknownYesUnknownYesUnknownYesYesYes
E071-01UNION DISTINCT table operatorYesYes [note 8] YesUnknownYesUnknownYesUnknownYesYesYes
E071-02UNION ALL table operatorYesYesYesYesYesYesYesUnknownYesYesYes
E071-03EXCEPT DISTINCT table operatorNoYes [note 8] No [note 9] UnknownYesUnknownYesUnknownYesYesYes
E071-05Columns combined via table operators need not have exactly the same data typeYesYesYesYesYesUnknownYesUnknownYesYesYes
E071-06Table operators in subqueriesYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E081Basic PrivilegesYesYesPartialUnknownPartialUnknownYesUnknownUnknownYesNo
E081-01SELECT privilege at the table levelYesYesYesUnknownYesUnknownYesUnknownUnknownYesNo
E081-02DELETE privilegeYesYesYesUnknownYesUnknownYesUnknownUnknownYesNo
E081-03INSERT privilege at the table levelYesYesYesUnknownYesUnknownYesUnknownUnknownYesNo
E081-04UPDATE privilege at the table levelYesYesYesUnknownYesUnknownYesUnknownUnknownYesNo
E081-05UPDATE privilege at the column levelYesYesYesUnknownYesUnknownYesUnknownUnknownYesNo
E081-06REFERENCES privilege at the table levelYesYesYesUnknownYesUnknownYesUnknownUnknownYesNo
E081-07REFERENCES privilege at the column levelYesYesYesUnknownYesUnknownYesUnknownUnknownYesNo
E081-08WITH GRANT OPTIONYesYesYesUnknownYesUnknownYesUnknownUnknownYesNo
E081-09USAGE privilegeYesYesNoUnknownNoUnknownYesUnknownUnknownYesNo
E081-10EXECUTE privilegeYesYesYesUnknownYesUnknownYesUnknownUnknownYesNo
E091Set functionsYesYesYesUnknownYesUnknownYesUnknownPartialYesYes
E091-01AVGYesYesYesYesYesYesYesYesYesYesYes
E091-02COUNTYesYesYesYesYesYesYesYesYesYesYes
E091-03MAXYesYesYesYesYesYesYesYesYesYesYes
E091-04MINYesYesYesYesYesYesYesYesYesYesYes
E091-05SUMYesYesYesYesYesYesYesYesYesYesYes
E091-06ALL quantifierYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E091-07DISTINCT quantifierYesYesYesYesYesYesYesUnknownYesYesYes
E101Basic data manipulationYesYesYesUnknownYesUnknownYesPartialPartialYesYes
E101-01INSERT statementYesYesYesYesYesYesYesUnknownPartialYesYes
E101-03Searched UPDATE statementYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E101-04Searched DELETE statementYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E111Single row SELECT statementYesYesYesUnknownYesUnknownYesUnknownUnknownYesYes
E121Basic cursor supportPartialYesPartialUnknownNoUnknownYesPartialNoYesYes
E121-01DECLARE CURSORYesYesPartialUnknownNoUnknownYesNoNoYesYes
E121-02ORDER BY columns need not be in select listYesYesYesYesYesYesYesYes [note 10] NoYesYes
E121-03Value expressions in ORDER BY clauseYesYesYesYesYesYesYesUnknownNoYesYes
E121-04OPEN statementYesYesYesUnknownNoUnknownYesUnknownNoYesYes
E121-06Positioned UPDATE statementYesYesYesUnknownNoUnknownYesUnknownNoYesNo
E121-07Positioned DELETE statementYesYesYesUnknownNoUnknownYesUnknownNoYesNo
E121-08CLOSE statementYesYesYesUnknownNoUnknownYesUnknownNoYesYes
E121-10FETCH statement: implicit NEXTYesYesPartialUnknownNoUnknownYesUnknownNoYesYes
E121-17WITH HOLD cursorsNoYesUnknownUnknownNoUnknownYesUnknownNoYesNo
E131Null value support (nulls in lieu of values)YesYesUnknownYesYesYesYesUnknownYesYesYes
E141Basic integrity constraintsPartialYesYesUnknownYesUnknownYesPartialPartialYesYes
E141-01NOT NULL constraintsYesYesYesYesYesYesYesYesYesYesYes
E141-02UNIQUE constraints of NOT NULL columnsYesYesYesUnknownYesUnknownYesYesNoYesYes
E141-03PRIMARY KEY constraintsYesYesYesYesYesYesYesYes [note 11] PartialYesYes
E141-04Basic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update actionYesYesYesUnknownYesUnknownYesUnknownNoYesYes
E141-06CHECK constraintsYesYesYesUnknownYesUnknownYesUnknownNoYesYes
E141-07Column defaultsYesYesYesYesYesYesYesUnknownNoYesYes
E141-08NOT NULL inferred on PRIMARY KEYYesYesYesUnknownYesUnknownYesPartial [note 12] PartialYesYes
E141-10Names in a foreign key can be specified in any orderNoYesYesUnknownNoUnknownYesUnknownNoYesYes
E151Transaction supportPartialPartialYesYesYesUnknownYesPartialNoYesYes
E151-01COMMIT statementYesYesYesYesYesUnknownYesYesNoYesYes
E151-02ROLLBACK statementYesYesYesYesYesUnknownYesYesNoYesYes
E152Basic SET TRANSACTION statementPartialYesYesUnknownYesUnknownYesNoNoYesPartial
E152-01SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clauseNoPartial [note 13] YesUnknownYesUnknownYesUnknownNoYesPartial
E152-02SET TRANSACTION statement: READ ONLY and READ WRITE clausesYesNoYesUnknownYesUnknownYesUnknownNoYesPartial
E*OtherPartialPartialPartialUnknownYesUnknownPartialUnknownUnknownYesPartial
E153Updatable queries with subqueriesYesYesYesUnknownYesUnknownYesUnknownYesYesYes
E161SQL comments using leading double minusYesYesYesYesYesYesYesYesYesYesYes
E171SQLSTATE supportPartialYesYesUnknownYesUnknownYesUnknownPartialYesNo
E182Host language binding (previously "Module Language")NoPartial [note 14] UnknownUnknownYesUnknownNoUnknownNoYes
F021Basic information schemaNoPartialNoYesYesYes [note 15] YesNoNoYes
F021-01COLUMNS viewNoPartial [note 16] NoYesYesYes [note 17] YesNo [note 18] NoYes
F021-02TABLES viewNoPartial [note 16] NoYesYesYes [note 17] YesNo [note 18] NoYes
F021-03VIEWS viewNoPartial [note 16] NoYesYesYes [note 17] YesNo [note 18] NoYes
F021-04TABLE_CONSTRAINTS viewNoPartial [note 16] NoYesYesYesYesNoNoYes
F021-05REFERENTIAL_CONSTRAINTS viewNoPartial [note 16] NoYesYesYesYesNoNoYes
F021-06CHECK_CONSTRAINTS viewNoPartial [note 16] NoYesYesYesYesNoNoYes
F031Basic schema manipulationPartialPartialPartialUnknownPartialUnknownYesPartialPartialYes
F031-01CREATE TABLE statement to create persistent base tablesYesYesYesYesYesYesYesUnknownYesYes
F031-02CREATE VIEW statementYesYesYesYesYesUnknownYesYesNoYes
F031-03GRANT statementYesYesYesUnknownYesUnknownYesNoNoYes
F031-04ALTER TABLE statement: ADD COLUMN clauseYesYesUnknownUnknownYesYesYesUnknownYesYes
F031-13DROP TABLE statement: RESTRICT clausePartialYesNoUnknownYesUnknownYesUnknownNoYes
F031-16DROP VIEW statement: RESTRICT clauseUnknownYesNoUnknownYesUnknownYesUnknownNoYes
F031-19REVOKE statement: RESTRICT clausePartialNoNoUnknownNoUnknownYesUnknownNoYes
F041Basic joined tableYesYesYesUnknownYesUnknownYesPartialYesYes
F041-01Inner join (but not necessarily the INNER keyword)YesYesYesYesYesYesYesYesYesYes
F041-02INNER keywordYesYesYesYesYesYesYesYesYesYes
F041-03LEFT OUTER JOINYesYesYesYesYesYesYesYesYesYes
F041-04RIGHT OUTER JOINYesYesYesYesYesYesYesNoYesYes
F041-05Outer joins can be nestedYesYesYesUnknownYesUnknownYesUnknownYesYes
F041-07The inner table in a left or right outer join can also be used in an inner joinYesYesYesUnknownYesUnknownYesUnknownYesYes
F041-08All comparison operators are supported (rather than just =)YesYesYesUnknownYesUnknownYesUnknownYesYes
F051Basic date and timePartialPartialYesUnknownYesUnknownYesPartialPartialYes
F051-01DATE data type (including support of DATE literal)YesYesYesNoYesYesYesNoPartialYes
F051-02TIME data type (including support of TIME literal) with fractional seconds precision of at least 0YesYesNoUnknownYesUnknownYesUnknownPartialYes
F051-03TIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6YesYesYesUnknownYesUnknownYesUnknownPartialYes
F051-04Comparison predicate on DATE, TIME, and TIMESTAMP data typesYesYesYesUnknownYesUnknownYesUnknownYesYes
F051-05Explicit CAST between datetime types and character string typesYesYesYesUnknownYesUnknownYesPartialYesYes
F051-06CURRENT_DATEYesYesYesUnknownYesYesYesYesYesYes
F051-07LOCALTIMEPartialNoNoUnknownYesYesYesNoYesYes
F051-08LOCALTIMESTAMPPartialNoYesUnknownYesYesYesNoYesYes
F081UNION and EXCEPT in viewsPartialYesUnknownYesYesUnknownYesYesNoYes
F131Grouped operationsYesUnknownYesUnknownYesUnknownYesUnknownNoYes
F131-01WHERE, GROUP BY, and HAVING clauses supported in queries with grouped viewsYesUnknownYesUnknownYesUnknownYesUnknownNoYes
F131-02Multiple tables supported in queries with grouped viewsYesUnknownYesUnknownYesUnknownYesUnknownNoYes
F131-03Set functions supported in queries with grouped viewsYesUnknownYesUnknownYesUnknownYesUnknownNoYes
F131-04Subqueries with GROUP BY and HAVING clauses and grouped viewsYesUnknownYesUnknownYesUnknownYesUnknownNoYes
F131-05Single row SELECT with GROUP BY and HAVING clauses and grouped viewsYesUnknownYesUnknownYesUnknownYesUnknownNoYes
F*OtherPartialUnknownPartialUnknownYesUnknownPartialUnknownPartialYes
F181Multiple module supportNoUnknownYesUnknownYesUnknownNoUnknownNoYes
F201CAST functionYesUnknownYesUnknownYesYesYesYesYesYes
F221Explicit defaultsNoUnknownUnknownUnknownYesUnknownYesUnknownYesYes
F261CASE expressionYesUnknownYesYesYesYesYesUnknownYesYes
F261-01Simple CASEYesUnknownYesUnknownYesUnknownYesUnknownYesYes
F261-02Searched CASEYesUnknownYesUnknownYesUnknownYesUnknownYesYes
F261-03NULLIFYesUnknownYesUnknownYesUnknownYesUnknownYesYes
F261-04COALESCEYesUnknownYesYesYesYesYesUnknownYesYes
F311Schema definition statementNoUnknownYesUnknownPartialUnknownYesPartialNoYes
F311-01CREATE SCHEMANoUnknownYesUnknownYesUnknownYesNoNoYes
F311-02CREATE TABLE for persistent base tablesNoUnknownYesYesYesYesYesUnknownNoYes
F311-03CREATE VIEWNoUnknownYesYesYesYesYesYesNoYes
F311-04CREATE VIEW: WITH CHECK OPTIONNoUnknownYesUnknownNoUnknownYesUnknownNoYes
F311-05GRANT statementNoUnknownYesUnknownYesUnknownYesNoNoYes
F471Scalar subquery valuesYesUnknownYesUnknownYesUnknownYesYesYesYes
F481Expanded NULL predicateYesUnknownYesUnknownYesUnknownYesUnknownYesYes
F501Features and conformance viewsUnknownUnknownNoNoNoUnknownPartialUnknownNoYes
F501-01SQL_FEATURES viewNoNoNoNoNoNoYesNoNoYes
F501-02SQL_SIZING viewUnknownUnknownNoNoNoUnknownYesNoNoYes
F501-03SQL_LANGUAGES viewUnknownUnknownNoNoNoUnknownYesNoNoYes
F812Basic flaggingNoUnknownSQL-92UnknownNoUnknownNoUnknownNoYes
S011Distinct data typesNoUnknownUnknownUnknownNoUnknownNoUnknownNoYes
S011-01USER_DEFINED_TYPES viewUnknownUnknownUnknownUnknownNoUnknownNoUnknownNoYes
T321Basic SQL-invoked routinesPartialUnknownPartialUnknownPartialUnknownPartialUnknownNoYes
T321-01User-defined functions with no overloadingYesUnknownUnknownYesYesYesYesUnknownNoYes
T321-02User-defined stored procedures with no overloadingYesUnknownUnknownYesYesUnknownYesUnknownNoYes
T321-03Function invocationYesUnknownYesYesYesYesYesUnknownNoYes
T321-04CALL statementPartialUnknownYesUnknownYesUnknownYesNoNoYes
T321-05RETURN statementPartialUnknownPartial [note 19] UnknownYesUnknownNoNoNoYes
T321-06ROUTINES viewUnknownUnknownNo [note 20] UnknownYesUnknownYesUnknownNoYes
T321-07PARAMETERS viewUnknownUnknownNo [note 21] UnknownYesUnknownYesUnknownNoYes
T631IN predicate with one list elementYesUnknownYesUnknownYesUnknownYesUnknownNoYes

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. There is the charindex function for equivalent functionality.
  7. Lacks support for [IS [NOT] TRUE|FALSE|UNKNOWN]
  8. 1 2 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. "MySQL :: MySQL 5.7 Reference Manual :: 24 INFORMATION_SCHEMA Tables".
  16. 1 2 3 4 5 6 Included in SYSIBM schema
  17. 1 2 3 Also includes MySQL-specific extension columns
  18. 1 2 3 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.