Compliance to SQL Standard
This article lists the mandatory and optional features of the SQL standard that are supported by Exasol.
SQL:2023 mandatory features
The following table lists all mandatory features in the SQL standard ISO/IEC 9075:2023 that are fully and partially supported in Exasol.
Feature | Support in Exasol | |
---|---|---|
FULL | PARTIAL | |
E011 Numeric data types | ||
E011-01 INTEGER and SMALLINT data types | ||
E011-02 REAL, DOUBLE PRECISION, and FLOAT data types | ||
E011-03 DECIMAL and NUMERIC data types | ||
E011-04 Arithmetic operators | ||
E011-05 Numeric comparison | ||
E011-06 Implicit casting among numeric data types | ||
E021 Character string types | ||
E021-01 CHARACTER data type | ||
E021-02 CHARACTER VARYING data type | ||
E021-03 Character literals | ||
E021-04 CHARACTER_LENGTH function | ||
E021-05 OCTET_LENGTH function | ||
E021-06 SUBSTRING function | ||
E021-07 Character concatenation | ||
E021-08 UPPER and LOWER function | ||
E021-09 TRIM function | ||
E021-10 Implicit casting among fixed-length and variable-length character string types | ||
E021-11 POSITION function | ||
E021-12 Character comparison | ||
E031 Identifiers | ||
E031-01 Delimited identifiers | ||
E031-02 lower-case identifiers | ||
E031-03 Trailing underscore | ||
E051 Basic query specification | ||
E051-01 SELECT DISTINCT | ||
E051-02 GROUP BY clause | ||
E051-04 GROUP BY can contain columns not in <select list>. | ||
E051-05 Select list items can be renamed | ||
E051-06 HAVING clause | ||
E051-07 Qualified * in select list | ||
E051-08 Correlation names in the FROM clause | ||
E051-09 Rename columns in the FROM clause | ||
E061 Basic predicates and search conditions | ||
E061-01 Comparison predicate | ||
E061-02 BETWEEN predicate | ||
E061-03 IN predicate with list of values | ||
E061-04 LIKE predicate | ||
E061-05 LIKE predicate: ESCAPE clause | ||
E061-06 NULL predicate | ||
E061-07 Quantified comparison predicate | ||
E061-08 EXISTS predicate | ||
E061-09 Subqueries in comparison predicate | ||
E061-11 Subqueries in IN predicate | ||
E061-12 Subqueries in quantified comparison predicate | ||
E061-13 Correlated Subqueries | ||
E061-14 Search condition | ||
E071 Basic query expressions | ||
E071-01 UNION DISTINCT table operator | ||
E071-02 UNION ALL table operator | ||
E071-03 EXCEPT DISTINCT table operator | ||
E071-05 Columns combined via table operators need not have exactly the same data type. | ||
E071-06 Table operators in subqueries | ||
E081 Basic privileges | ||
E081-01 SELECT privilege at the table level | ||
E081-02 DELETE privilege | ||
E081-03 INSERT privilege at the table level | ||
E081-04 UPDATE privilege at the table level | ||
E081-05 UPDATE privilege at the column level | ||
E081-06 REFERENCES privilege at the table level | ||
E081-07 REFERENCES privilege at the column level | ||
E081-08 WITH GRANT OPTION | ||
E081-09 USAGE privilege | ||
E081-10 EXECUTE privilege | ||
E091 Set functions | ||
E091-01 AVG | ||
E091-02 COUNT | ||
E091-03 MAX | ||
E091-04 MIN | ||
E091-05 SUM | ||
E091-06 ALL quantifier | ||
E091-07 DISTINCT quantifier | ||
E101 Basic data manipulation | ||
E101-01 INSERT statement | ||
E101-03 Searched UPDATE statement | ||
E101-04 Searched DELETE statement | ||
E111 Single row SELECT statement | ||
E121 Basic cursor support | ||
E121-01 DECLARE CURSOR | ||
E121-02 ORDER BY columns need not be in select list | ||
E121-03 Value expressions in ORDER BY clause | ||
E121-04 OPEN statement | ||
E121-06 Positioned UPDATE statement | ||
E121-07 Positioned DELETE statement | ||
E121-08 CLOSE statement | ||
E121-10 FETCH statement: implicit NEXT | ||
E121-17 WITH HOLD cursors | ||
E131 Null value support (nulls in lieu of values) | ||
E141 Basic integrity constraints | ||
E141-01 NOT NULL constraint | ||
E141-02 UNIQUE constraints of NOT NULL columns | ||
E141-03 PRIMARY KEY constraint | ||
E141-04 Basic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update action | ||
E141-06 CHECK constraint | ||
E141-07 Column defaults | ||
E141-08 NOT NULL inferred on PRIMARY KEY | ||
E141-10 Names in a foreign key can be specified in any order. | ||
E151 Transaction support | ||
E151-01 COMMIT statement | ||
E151-02 ROLLBACK statement | ||
E152 Basic SET TRANSACTION statement | ||
E152-01 SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clause | ||
E152-02 SET TRANSACTION statement: READ ONLY and READ WRITE clauses | ||
E153 Updatable queries with subqueries | ||
E161 SQL comments using leading double minus | ||
E171 SQLSTATE support | ||
E182 Module language | ||
F031 Basic schema manipulation | ||
F031-01 CREATE TABLE statement to create persistent base tables | ||
F031-02 CREATE VIEW statement | ||
F031-03 GRANT statement | ||
F031-04 ALTER TABLE statement: ADD COLUMN clause | ||
F031-13 DROP TABLE statement: RESTRICT clause | ||
F031-16 DROP VIEW statement: RESTRICT clause | ||
F031-19 REVOKE statement: RESTRICT clause | ||
F041 Basic joined table | ||
F041-01 Inner join (but not necessarily the INNER keyword) | ||
F041-02 INNER keyword | ||
F041-03 LEFT OUTER JOIN | ||
F041-04 RIGHT OUTER JOIN | ||
F041-05 Outer joins can be nested | ||
F041-07 The inner table in a left or right outer join can also be used in an inner join. | ||
F041-08 All comparison operators are supported (rather than just =). | ||
F051 Basic date and time | ||
F051-01 DATE data type (including support of DATE literal) | ||
F051-02 TIME data type (including the support of TIME literal) with fractional seconds precision of at least 0. | ||
F051-03 TIMESTAMP data type (including the support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6. | ||
F051-04 Comparison predicate on DATE, TIME, and TIMESTAMP data types | ||
F051-05 Explicit CAST between datetime types and character string types | ||
F051-06 CURRENT_DATE | ||
F051-07 LOCALTIME | ||
F051-08 LOCALTIMESTAMP | ||
F081 UNION and EXCEPT in views | ||
F131 Grouped operations | ||
F131-01 WHERE, GROUP BY, and HAVING clauses supported in queries with grouped views | ||
F131-02 Multiple tables supported in queries with grouped views | ||
F131-03 Set functions supported in queries with grouped views | ||
F131-04 Subqueries with GROUP BY and HAVING clauses and grouped views | ||
F131-05 Single row SELECT with GROUP BY and HAVING clauses and grouped views | ||
F181 Multiple module support | ||
F201 CAST function | ||
F221 Explicit defaults | ||
F261 CASE expression | ||
F261-01 Simple CASE | ||
F261-02 Searched CASE | ||
F261-03 NULLIF | ||
F261-04 COALESCE | ||
F311 Schema definition statement | ||
F311-01 CREATE SCHEMA | ||
F311-02 CREATE TABLE for persistent base tables (within CREATE SCHEMA) | ||
F311-03 CREATE VIEW (within CREATE SCHEMA) | ||
F311-04 CREATE VIEW: WITH CHECK OPTION (within CREATE SCHEMA) | ||
F311-05 GRANT STATEMENT (within CREATE SCHEMA) | ||
F471 Scalar subquery values | ||
F481 Expanded NULL predicate | ||
S011 Distinct data types | ||
T321 Basic SQL-invoked routines | ||
T321-01 User-defined functions with no overloading | ||
T321-02 User-defined stored procedures with no overloading | ||
T321-03 Function invocation | ||
T321-04 CALL statement | ||
T321-05 RETURN statement | ||
T631 IN predicate with one list element |
SQL:2023 optional features
The following table lists the optional features in the SQL standard ISO/IEC 9075:2023 that are supported in Exasol.
Feature ID | Feature |
---|---|
F033 | ALTER TABLE statement: DROP COLUMN clause |
F052 | Intervals and datetime arithmetic |
F171 | Multiple schemas per user |
F200 | TRUNCATE TABLE statement |
F222 | INSERT statement: DEFAULT VALUES clause |
F303 | INTERSECT DISTINCT table operator |
F312 | MERGE statement |
F321 | User authorization |
F381 | Extended schema manipulation |
F387 | ALTER TABLE statement: ALTER COLUMN clause |
F388 | ALTER TABLE statement: ADD/DROP CONSTRAINT clause |
F391 | Long identifiers |
F406 | FULL OUTER JOIN |
F407 | CROSS JOIN |
F555 | Enhanced seconds precision |
F641 | Row and table constructors |
F851 | ORDER BY in subqueries |
F852 | Top-level ORDER BY in views |
T031 | BOOLEAN data type |
T121 | WITH (excluding RECURSIVE) in query expression |
T171 | LIKE clause in table definition |
T172 | AS subquery clause in table definition |
T173 | Extended LIKE clause in table definition |
T174 | Identity columns |
T331 | Basic roles |
T351 | Bracketed comments (/* ... */ comments) |
T431 | Extended grouping capabilities |
T432 | Nested and concatenated GROUPING SETS |
T433 | Multiargument GROUPING function |
T434 | GROUP BY DISTINCT |
T441 | ABS and MOD functions |
T461 | Symmetric BETWEEN predicate |
T551 | Optional key words for default syntax |
T614 | NTILE function |
T615 | LEAD and LAG functions |
T616 | Null treatment option for LEAD and LAG functions |
T617 | FIRST_VALUE and LAST_VALUE functions |
T618 | NTH_VALUE function |
T620 | WINDOW clause: GROUPS option |
T621 | Enhanced numeric functions |
T622 | Trigonometric functions |
T623 | General logarithm functions |
T624 | Common logarithm functions |
T625 | LISTAGG |
T627 | Window framed COUNT DISTINCT |