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 |