Table of Contents
According to the SQL Standard, the SQL Language reserved keywords cannot be used as identifiers (names of database objects such as columns and tables) without quoting.
HyperSQL has two modes of operation, which are selected with the
    SET DATABASE SQL NAMES { TRUE | FALSE } to allow or
    disallow the keywords as identifiers. The default mode is FALSE and allows
    the use of most keywords as identifiers. Even in this mode, keywords
    cannot be used as USER or ROLE identifiers. When the mode is TRUE, none of
    the keywords listed below can be used as unquoted identifiers.
All keywords can be used with double quotes as identifiers. For example
  CREATE TABLE "ALL" ("AND" INT, "WHEN" INT)
  SELECT "AND" FROM "ALL" WHERE "WHEN" = 2022
ABS • ABSENT • ACOS • ALL • ALLOCATE • ALTER • AND • ANY
    • ANY_VALUE • ARE • ARRAY • ARRAY_AGG • ARRAY_MAX_CARDINALITY • AS •
    ASENSITIVE • ASIN • ASYMMETRIC • AT • ATAN • ATOMIC • AUTHORIZATION •
    AVG
BEGIN • BEGIN_FRAME • BEGIN_PARTITION • BETWEEN • BIGINT
    • BINARY • BIT_LENGTH • BLOB • BOOLEAN • BOTH • BY
CALL • CALLED • CARDINALITY • CASCADED • CASE • CAST •
    CEIL • CEILING • CHAR • CHARACTER • CHARACTER_LENGTH • CHAR_LENGTH • CHECK
    • CLOB • CLOSE • COALESCE • COLLATE • COLLECT • COLUMN • COMMIT •
    COMPARABLE • CONDIITON • CONNECT • CONSTRAINT • CONTAINS • CONVERT • CORR
    • CORRESPONDING • COS • COSH • COUNT • COVAR_POP • COVAR_SAMP • CREATE •
    CROSS • CUBE • CUME_DIST • CURRENT • CURRENT_CATALOG • CURRENT_DATE •
    CURRENT_DEFAULT_TRANSFORM_GROUP • CURRENT_PATH • CURRENT_ROLE •
    CURRENT_ROW • CURRENT_SCHEMA • CURRENT_TIME • CURRENT_TIMESTAMP •
    CURRENT_TRANSFORM_GROUP_FOR_TYPE • CURRENT_USER • CURSOR •
    CYCLE
DATE • DAY • DEALLOCATE • DEC • DECIMAL • DECLARE •
    DEFAULT • DELETE • DENSE_RANK • DEREF • DESCRIBE • DETERMINISTIC •
    DISCONNECT • DISTINCT • DO • DOUBLE • DROP • DYNAMIC
EACH • ELEMENT • ELSE • ELSEIF • EMPTY • END • END_EXEC
    • END_FRAME • END_PARTITION • EQUALS • ESCAPE • EVERY • EXCEPT • EXEC •
    EXECUTE • EXISTS • EXIT • EXP • EXTERNAL • EXTRACT
FALSE • FETCH • FILTER • FIRST_VALUE • FLOAT • FLOOR •
    FOR • FOREIGN • FRAME_ROW • FREE • FROM • FULL • FUNCTION •
    FUSION
GET • GLOBAL • GRANT • GROUP • GROUPING •
    GROUPS
HANDLER • HAVING • HOLD • HOUR
IDENTITY • IF • IMPORT • IN • INDICATOR • INITIAL •
    INNER • INOUT • INSENSITIVE • INSERT • INT • INTEGER • INTERSECT •
    INTERSECTION • INTERVAL • INTO • IS • ITERATE
JOIN • JSON • JSON_ARRAY • JSON_ARRAYAGG • JSON_EXISTS •
    JSON_OBJECT • JSON_OBJECTAGG • JSON_QUERY • JSON_TABLE •
    JSON_VALUE
LAG • LANGUAGE • LARGE • LAST_VALUE • LATERAL • LEAD •
    LEADING • LEAST • LEAVE • LEFT • LIKE • LIKE_REGX • LISTAGG • LN • LOCAL •
    LOCALTIME • LOCALTIMESTAMP • LOG • LOG10 • LOOP • LOWER • LPAD •
    LTRIM
MATCH • MAX • MAX_CARDINALITY • MEMBER • MERGE • METHOD
    • MIN • MINUTE • MOD • MODIFIES • MODULE • MONTH •
    MULTISET
NATIONAL • NATURAL • NCHAR • NCLOB • NEW • NO • NONE •
    NORMALIZE • NOT • NTH_VALUE • NTILE • NULL • NULLIF •
    NUMERIC
OCCURRENCES_REGEX • OCTET_LENGTH • OF • OFFSET • OLD •
    OMIT • ON • ONLY • OPEN • OR • ORDER • OUT • OUTER • OVER • OVERLAPS •
    OVERLAY
PARAMETER • PARTITION • PERCENTILE_CONT •
    PERCENTILE_DISC • PERCENT_RANK • PERIOD • POSITION • POSITION_REGEX •
    POWER • PRECEDES • PRECISION • PREPARE • PRIMARY •
    PROCEDURE
RANGE • RANK • READS • REAL • RECURSIVE • REF •
    REFERENCES • REFERENCING • REGR_AVGX • REGR_AVGY • REGR_COUNT •
    REGR_INTERCEPT • REGR_R2 • REGR_SLOPE • REGR_SXX • REGR_SXY • REGR_SYY •
    RELEASE • REPEAT • RESIGNAL • RESULT • RETURN • RETURNS • REVOKE • RIGHT •
    ROLLBACK • ROLLUP • ROW • ROWS • ROW_NUMBER • RPAD •
    RTRIM
SAVEPOINT • SCOPE • SCROLL • SEARCH • SECOND • SELECT •
    SENSITIVE • SESSION_USER • SET • SIGNAL • SIMILAR • SIN • SINH • SMALLINT
    • SOME • SPECIFIC • SPECIFICTYPE • SQL • SQLEXCEPTION • SQLSTATE •
    SQLWARNING • SQRT • STACKED • START • STATIC • STDDEV_POP • STDDEV_SAMP •
    SUBMULTISET • SUBSTRING • SUBSTRING_REGEX • SUCCEEDS • SUM • SYMMETRIC •
    SYSTEM • SYSTEM_TIME • SYSTEM_USER
TABLE • TABLESAMPLE • TAN • TANH • THEN • TIME •
    TIMESTAMP • TIMEZONE_HOUR • TIMEZONE_MINUTE • TO • TRAILING • TRANSLATE •
    TRANSLATE_REGEX • TRANSLATION • TREAT • TRIGGER • TRIM • TRIM_ARRAY • TRUE
    • TRUNCATE
UESCAPE • UNDO • UNION • UNIQUE • UNKNOWN • UNNEST •
    UNTIL • UPDATE • UPPER • USER • USING
VALUE • VALUES • VALUE_OF • VARBINARY • VARCHAR •
    VARYING • VAR_POP • VAR_SAMP • VERSIONING
WHEN • WHENEVER • WHERE • WHILE • WIDTH_BUCKET • WINDOW
    • WITH • WITHIN • WITHOUT
YEAR
When the default SET DATABASE SQL NAMES FALSE
    mode is used, only a subset of SQL Standard keywords cannot be used as
    HyperSQL identifiers. The keywords are as follows:
ALL • AND • ANY • ARRAY • AS • AT
BETWEEN • BOTH • BY
CALL • CASE • CAST • COALESCE • CONVERT • CORRESPONDING
    • COUNT • CREATE • CROSS • CUBE
DEFAULT • DISTINCT • DO • DROP
ELSE • EVERY • EXCEPT • EXISTS
FETCH • FOR • FROM • FULL
GRANT • GROUP • GROUPING
HAVING
IN • INNER • INTERSECT • INTO • IS
JOIN
LEADING • LEFT • LIKE
MAX • MIN
NATURAL • NOT • NULLIF
ON • OR • ORDER • OUTER
PRIMARY
REFERENCES • RIGHT • ROLLUP
SELECT • SET • SOME • STDDEV_POP • STDDEV_SAMP •
    SUM
TABLE • THEN • TO • TRAILING •
    TRIGGER
UNION • UNIQUE • USING
VALUES • VAR_POP • VAR_SAMP
WHEN • WHERE • WITH
HyperSQL supports SQL Standard functions that are called without
    parentheses. These functions include CURRENT_DATE,
    LOCALTIMESTAMP, TIMEZONE_HOUR,
    USER, etc. When the default SET DATABASE SQL
    NAMES FALSE mode is used, keywords that are names of SQL
    functions can be used as column names without double quotes in CREATE
    TABLE statements . But when the identifier is a column name and is
    referenced in SELECT or other statements, the keywords must be double
    quoted. Otherwise the result of the SQL function is returned instead of
    the column value.
HyperSQL also supports non-standard functions
    SYSTIMESTAMP, CURDATE,
    CURTIME, TODAY,
    SYSDATE and NOW which can be called
    with or without parentheses ( e.g. NOW() or
    NOW ). These names can be used as column names, but the
    names must be double quoted in SELECT and other statements.
$Revision: 6787 $