Supported Versions: Current (18) / 17 / 16 / 15 / 14
Development Versions: devel
Unsupported versions: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

Appendix C. SQL Key Words

Table C-1 lists all tokens that are key words in the SQL standard and in PostgreSQL 8.1.23. Background information can be found in Section 4.1.1.

SQL distinguishes between reserved and non-reserved key words. According to the standard, reserved key words are the only real key words; they are never allowed as identifiers. Non-reserved key words only have a special meaning in particular contexts and can be used as identifiers in other contexts. Most non-reserved key words are actually the names of built-in tables and functions specified by SQL. The concept of non-reserved key words essentially only exists to declare that some predefined meaning is attached to a word in some contexts.

In the PostgreSQL parser life is a bit more complicated. There are several different classes of tokens ranging from those that can never be used as an identifier to those that have absolutely no special status in the parser as compared to an ordinary identifier. (The latter is usually the case for functions specified by SQL.) Even reserved key words are not completely reserved in PostgreSQL, but can be used as column labels (for example, SELECT 55 AS CHECK, even though CHECK is a reserved key word).

In Table C-1 in the column for PostgreSQL we classify as "non-reserved" those key words that are explicitly known to the parser but are allowed in most or all contexts where an identifier is expected. Some key words that are otherwise non-reserved cannot be used as function or data type names and are marked accordingly. (Most of these words represent built-in functions or data types with special syntax. The function or type is still available but it cannot be redefined by the user.) Labeled "reserved" are those tokens that are only allowed as "AS" column label names (and perhaps in very few other contexts). Some reserved key words are allowable as names for functions; this is also shown in the table.

As a general rule, if you get spurious parser errors for commands that contain any of the listed key words as an identifier you should try to quote the identifier to see if the problem goes away.

It is important to understand before studying Table C-1 that the fact that a key word is not reserved in PostgreSQL does not mean that the feature related to the word is not implemented. Conversely, the presence of a key word does not indicate the existence of a feature.

Table C-1. SQL Key Words

Key Word PostgreSQL SQL:2003 SQL:1999 SQL-92
A   non-reserved  
ABORT non-reserved  
ABS   reserved non-reserved  
ABSOLUTE non-reserved reserved
ACCESS non-reserved  
ACTION non-reserved reserved
ADA   non-reserved
ADD non-reserved reserved
ADMIN non-reserved reserved  
AFTER non-reserved reserved  
AGGREGATE non-reserved   reserved  
ALIAS   reserved  
ALL reserved
ALLOCATE   reserved
ALSO non-reserved  
ALTER non-reserved reserved
ALWAYS   non-reserved  
ANALYSE reserved  
ANALYZE reserved  
AND reserved
ANY reserved
ARE   reserved
ARRAY reserved  
AS reserved
ASC reserved non-reserved reserved
ASENSITIVE   reserved non-reserved  
ASSERTION non-reserved reserved
ASSIGNMENT non-reserved  
ASYMMETRIC reserved non-reserved  
AT non-reserved reserved
ATOMIC   reserved non-reserved  
ATTRIBUTE   non-reserved  
ATTRIBUTES   non-reserved  
AUTHORIZATION reserved (can be function) reserved
AVG   reserved non-reserved reserved
BACKWARD non-reserved  
BEFORE non-reserved reserved  
BEGIN non-reserved reserved
BERNOULLI   non-reserved  
BETWEEN reserved (can be function) reserved non-reserved reserved
BIGINT non-reserved (cannot be function or type) reserved  
BINARY reserved (can be function) reserved  
BIT non-reserved (cannot be function or type)   reserved
BITVAR   non-reserved  
BIT_LENGTH   non-reserved reserved
BLOB   reserved  
BOOLEAN non-reserved (cannot be function or type) reserved  
BOTH reserved
BREADTH   non-reserved reserved  
BY non-reserved reserved
C   non-reserved
CACHE non-reserved  
CALL   reserved  
CALLED non-reserved reserved non-reserved  
CARDINALITY   reserved non-reserved  
CASCADE non-reserved reserved
CASCADED   reserved
CASE reserved
CAST reserved
CATALOG   non-reserved reserved
CATALOG_NAME   non-reserved
CEIL   reserved  
CEILING   reserved  
CHAIN non-reserved  
CHAR non-reserved (cannot be function or type) reserved
CHARACTER non-reserved (cannot be function or type) reserved
CHARACTERISTICS non-reserved  
CHARACTERS   non-reserved  
CHARACTER_LENGTH   reserved non-reserved reserved
CHARACTER_SET_CATALOG   non-reserved
CHARACTER_SET_NAME   non-reserved
CHARACTER_SET_SCHEMA   non-reserved
CHAR_LENGTH   reserved non-reserved reserved
CHECK reserved
CHECKED   non-reserved  
CHECKPOINT non-reserved  
CLASS non-reserved   reserved  
CLASS_ORIGIN   non-reserved
CLOB   reserved  
CLOSE non-reserved reserved
CLUSTER non-reserved  
COALESCE non-reserved (cannot be function or type) reserved non-reserved reserved
COBOL   non-reserved
COLLATE reserved
COLLATION   non-reserved reserved
COLLATION_CATALOG   non-reserved
COLLATION_NAME   non-reserved
COLLATION_SCHEMA   non-reserved
COLLECT   reserved  
COLUMN reserved
COLUMN_NAME   non-reserved
COMMAND_FUNCTION   non-reserved
COMMAND_FUNCTION_CODE   non-reserved  
COMMENT non-reserved  
COMMIT non-reserved reserved
COMMITTED non-reserved
COMPLETION   reserved  
CONDITION   reserved  
CONDITION_NUMBER   non-reserved
CONNECT   reserved
CONNECTION non-reserved reserved
CONNECTION_NAME   non-reserved
CONSTRAINT reserved
CONSTRAINTS non-reserved reserved
CONSTRAINT_CATALOG   non-reserved
CONSTRAINT_NAME   non-reserved
CONSTRAINT_SCHEMA   non-reserved
CONSTRUCTOR   non-reserved reserved  
CONTAINS   non-reserved  
CONTINUE   non-reserved reserved
CONVERSION non-reserved  
CONVERT non-reserved (cannot be function or type) reserved non-reserved reserved
COPY non-reserved  
CORR   reserved  
CORRESPONDING   reserved
COUNT   reserved non-reserved reserved
COVAR_POP   reserved  
COVAR_SAMP   reserved  
CREATE reserved
CREATEDB non-reserved  
CREATEROLE non-reserved  
CREATEUSER non-reserved  
CROSS reserved (can be function) reserved
CSV non-reserved  
CUBE   reserved  
CUME_DIST   reserved  
CURRENT   reserved
CURRENT_DATE reserved
CURRENT_DEFAULT_TRANSFORM_GROUP   reserved  
CURRENT_PATH   reserved  
CURRENT_ROLE reserved  
CURRENT_TIME reserved
CURRENT_TIMESTAMP reserved
CURRENT_TRANSFORM_GROUP_FOR_TYPE   reserved  
CURRENT_USER reserved
CURSOR non-reserved reserved
CURSOR_NAME   non-reserved
CYCLE non-reserved reserved  
DATA   non-reserved reserved non-reserved
DATABASE non-reserved  
DATE   reserved
DATETIME_INTERVAL_CODE   non-reserved
DATETIME_INTERVAL_PRECISION   non-reserved
DAY non-reserved reserved
DEALLOCATE non-reserved reserved
DEC non-reserved (cannot be function or type) reserved
DECIMAL non-reserved (cannot be function or type) reserved
DECLARE non-reserved reserved
DEFAULT reserved
DEFAULTS non-reserved  
DEFERRABLE reserved non-reserved reserved
DEFERRED non-reserved reserved
DEFINED   non-reserved  
DEFINER non-reserved  
DEGREE   non-reserved  
DELETE non-reserved reserved
DELIMITER non-reserved  
DELIMITERS non-reserved  
DENSE_RANK   reserved  
DEPTH   non-reserved reserved  
DEREF   reserved  
DERIVED   non-reserved  
DESC reserved non-reserved reserved
DESCRIBE   reserved
DESCRIPTOR   non-reserved reserved
DESTROY   reserved  
DESTRUCTOR   reserved  
DETERMINISTIC   reserved  
DIAGNOSTICS   non-reserved reserved
DICTIONARY   reserved  
DISABLE non-reserved  
DISCONNECT   reserved
DISPATCH   non-reserved  
DISTINCT reserved
DO reserved  
DOMAIN non-reserved reserved
DOUBLE non-reserved reserved
DROP non-reserved reserved
DYNAMIC   reserved  
DYNAMIC_FUNCTION   non-reserved
DYNAMIC_FUNCTION_CODE   non-reserved  
EACH non-reserved reserved  
ELEMENT   reserved  
ELSE reserved
ENABLE non-reserved  
ENCODING non-reserved  
ENCRYPTED non-reserved  
END reserved
END-EXEC   reserved
EQUALS   non-reserved reserved  
ESCAPE non-reserved reserved
EVERY   reserved  
EXCEPT reserved
EXCEPTION   non-reserved reserved
EXCLUDE   non-reserved  
EXCLUDING non-reserved  
EXCLUSIVE non-reserved  
EXEC   reserved
EXECUTE non-reserved reserved
EXISTING   non-reserved  
EXISTS non-reserved (cannot be function or type) reserved non-reserved reserved
EXP   reserved  
EXPLAIN non-reserved  
EXTERNAL non-reserved reserved
EXTRACT non-reserved (cannot be function or type) reserved non-reserved reserved
FALSE reserved
FETCH non-reserved reserved
FILTER   reserved  
FINAL   non-reserved  
FIRST non-reserved reserved
FLOAT non-reserved (cannot be function or type) reserved
FLOOR   reserved  
FOLLOWING   non-reserved  
FOR reserved
FORCE non-reserved  
FOREIGN reserved
FORTRAN   non-reserved
FORWARD non-reserved  
FOUND   non-reserved reserved
FREE   reserved  
FREEZE reserved (can be function)  
FROM reserved
FULL reserved (can be function) reserved
FUNCTION non-reserved reserved  
FUSION   reserved  
G   non-reserved  
GENERAL   non-reserved reserved  
GENERATED   non-reserved  
GET   reserved
GLOBAL non-reserved reserved
GO   non-reserved reserved
GOTO   non-reserved reserved
GRANT reserved
GRANTED non-reserved  
GREATEST non-reserved (cannot be function or type)  
GROUP reserved
GROUPING   reserved  
HANDLER non-reserved  
HAVING reserved
HEADER non-reserved  
HIERARCHY   non-reserved  
HOLD non-reserved reserved non-reserved  
HOST   reserved  
HOUR non-reserved reserved
IDENTITY   reserved
IGNORE   reserved  
ILIKE reserved (can be function)  
IMMEDIATE non-reserved reserved
IMMUTABLE non-reserved  
IMPLEMENTATION   non-reserved  
IMPLICIT non-reserved  
IN reserved
INCLUDING non-reserved  
INCREMENT non-reserved  
INDEX non-reserved  
INDICATOR   reserved
INFIX   non-reserved  
INHERIT non-reserved  
INHERITS non-reserved  
INITIALIZE   reserved  
INITIALLY reserved non-reserved reserved
INNER reserved (can be function) reserved
INOUT non-reserved (cannot be function or type) reserved  
INPUT non-reserved reserved
INSENSITIVE non-reserved reserved non-reserved reserved
INSERT non-reserved reserved
INSTANCE   non-reserved  
INSTANTIABLE   non-reserved  
INSTEAD non-reserved  
INT non-reserved (cannot be function or type) reserved
INTEGER non-reserved (cannot be function or type) reserved
INTERSECT reserved
INTERSECTION   reserved  
INTERVAL non-reserved (cannot be function or type) reserved
INTO reserved
INVOKER non-reserved  
IS reserved (can be function) reserved
ISNULL reserved (can be function)  
ISOLATION non-reserved reserved
ITERATE   reserved  
JOIN reserved (can be function) reserved
K   non-reserved  
KEY non-reserved reserved
KEY_MEMBER   non-reserved  
KEY_TYPE   non-reserved  
LANCOMPILER non-reserved  
LANGUAGE non-reserved reserved
LARGE non-reserved reserved  
LAST non-reserved reserved
LATERAL   reserved  
LEADING reserved
LEAST non-reserved (cannot be function or type)  
LEFT reserved (can be function) reserved
LENGTH   non-reserved
LESS   reserved  
LEVEL non-reserved reserved
LIKE reserved (can be function) reserved
LIMIT reserved   reserved  
LISTEN non-reserved  
LN   reserved  
LOAD non-reserved  
LOCAL non-reserved reserved
LOCALTIME reserved  
LOCALTIMESTAMP reserved  
LOCATION non-reserved  
LOCATOR   non-reserved reserved  
LOCK non-reserved  
LOGIN non-reserved  
LOWER   reserved non-reserved reserved
M   non-reserved  
MAP   non-reserved reserved  
MATCH non-reserved reserved
MATCHED   non-reserved  
MAX   reserved non-reserved reserved
MAXVALUE non-reserved  
MEMBER   reserved  
MERGE   reserved  
MESSAGE_LENGTH   non-reserved
MESSAGE_OCTET_LENGTH   non-reserved
MESSAGE_TEXT   non-reserved
METHOD   reserved non-reserved  
MIN   reserved non-reserved reserved
MINUTE non-reserved reserved
MINVALUE non-reserved  
MOD   reserved non-reserved  
MODE non-reserved  
MODIFIES   reserved  
MODIFY   reserved  
MODULE   reserved
MONTH non-reserved reserved
MORE   non-reserved
MOVE non-reserved  
MULTISET   reserved  
MUMPS   non-reserved
NAME   non-reserved
NAMES non-reserved reserved
NATIONAL non-reserved (cannot be function or type) reserved
NATURAL reserved (can be function) reserved
NCHAR non-reserved (cannot be function or type) reserved
NCLOB   reserved  
NESTING   non-reserved  
NEW reserved  
NEXT non-reserved reserved
NO non-reserved reserved
NOCREATEDB non-reserved  
NOCREATEROLE non-reserved  
NOCREATEUSER non-reserved  
NOINHERIT non-reserved  
NOLOGIN non-reserved  
NONE non-reserved (cannot be function or type) reserved  
NORMALIZE   reserved  
NORMALIZED   non-reserved  
NOSUPERUSER non-reserved  
NOT reserved
NOTHING non-reserved  
NOTIFY non-reserved  
NOTNULL reserved (can be function)  
NOWAIT non-reserved  
NULL reserved
NULLABLE   non-reserved
NULLIF non-reserved (cannot be function or type) reserved non-reserved reserved
NULLS   non-reserved  
NUMBER   non-reserved
NUMERIC non-reserved (cannot be function or type) reserved
OBJECT non-reserved reserved  
OCTETS   non-reserved  
OCTET_LENGTH   reserved non-reserved reserved
OF non-reserved reserved
OFF reserved   reserved  
OFFSET reserved  
OIDS non-reserved  
OLD reserved  
ON reserved
ONLY reserved
OPEN   reserved
OPERATION   reserved  
OPERATOR non-reserved  
OPTION non-reserved reserved
OPTIONS   non-reserved  
OR reserved
ORDER reserved
ORDERING   non-reserved  
ORDINALITY   non-reserved reserved  
OTHERS   non-reserved  
OUT non-reserved (cannot be function or type) reserved  
OUTER reserved (can be function) reserved
OUTPUT   non-reserved reserved
OVER   reserved  
OVERLAPS reserved (can be function) reserved non-reserved reserved
OVERLAY non-reserved (cannot be function or type) reserved non-reserved  
OVERRIDING   non-reserved  
OWNER non-reserved  
PAD   non-reserved reserved
PARAMETER   reserved  
PARAMETERS   reserved  
PARAMETER_MODE   non-reserved  
PARAMETER_NAME   non-reserved  
PARAMETER_ORDINAL_POSITION   non-reserved  
PARAMETER_SPECIFIC_CATALOG   non-reserved  
PARAMETER_SPECIFIC_NAME   non-reserved  
PARAMETER_SPECIFIC_SCHEMA   non-reserved  
PARTIAL non-reserved reserved
PARTITION   reserved  
PASCAL   non-reserved
PASSWORD non-reserved  
PATH   non-reserved reserved  
PERCENTILE_CONT   reserved  
PERCENTILE_DISC   reserved  
PERCENT_RANK   reserved  
PLACING reserved non-reserved  
PLI   non-reserved
POSITION non-reserved (cannot be function or type) reserved non-reserved reserved
POSTFIX   reserved  
POWER   reserved  
PRECEDING   non-reserved  
PRECISION non-reserved (cannot be function or type) reserved
PREFIX   reserved  
PREORDER   reserved  
PREPARE non-reserved reserved
PREPARED non-reserved  
PRESERVE non-reserved reserved
PRIMARY reserved
PRIOR non-reserved reserved
PRIVILEGES non-reserved reserved
PROCEDURAL non-reserved  
PROCEDURE non-reserved reserved
PUBLIC   non-reserved reserved
QUOTE non-reserved  
RANGE   reserved  
RANK   reserved  
READ non-reserved reserved
READS   reserved  
REAL non-reserved (cannot be function or type) reserved
RECHECK non-reserved  
RECURSIVE   reserved  
REF   reserved  
REFERENCES reserved
REFERENCING   reserved  
REGR_AVGX   reserved  
REGR_AVGY   reserved  
REGR_COUNT   reserved  
REGR_INTERCEPT   reserved  
REGR_R2   reserved  
REGR_SLOPE   reserved  
REGR_SXX   reserved  
REGR_SXY   reserved  
REGR_SYY   reserved  
REINDEX non-reserved  
RELATIVE non-reserved reserved
RELEASE non-reserved reserved  
RENAME non-reserved  
REPEATABLE non-reserved
REPLACE non-reserved  
RESET non-reserved  
RESTART non-reserved  
RESTRICT non-reserved reserved
RESULT   reserved  
RETURN   reserved  
RETURNED_CARDINALITY   non-reserved  
RETURNED_LENGTH   non-reserved
RETURNED_OCTET_LENGTH   non-reserved
RETURNED_SQLSTATE   non-reserved
RETURNS non-reserved reserved  
REVOKE non-reserved reserved
RIGHT reserved (can be function) reserved
ROLE non-reserved reserved  
ROLLBACK non-reserved reserved
ROLLUP   reserved  
ROUTINE   non-reserved reserved  
ROUTINE_CATALOG   non-reserved  
ROUTINE_NAME   non-reserved  
ROUTINE_SCHEMA   non-reserved  
ROW non-reserved (cannot be function or type) reserved  
ROWS non-reserved reserved
ROW_COUNT   non-reserved
ROW_NUMBER   reserved  
RULE non-reserved  
SAVEPOINT non-reserved reserved  
SCALE   non-reserved
SCHEMA non-reserved reserved
SCHEMA_NAME   non-reserved
SCOPE   reserved  
SCOPE_CATALOG   non-reserved  
SCOPE_NAME   non-reserved  
SCOPE_SCHEMA   non-reserved  
SCROLL non-reserved reserved
SEARCH   reserved  
SECOND non-reserved reserved
SECTION   non-reserved reserved
SECURITY non-reserved  
SELECT reserved
SELF   non-reserved  
SENSITIVE   reserved non-reserved  
SEQUENCE non-reserved reserved  
SERIALIZABLE non-reserved
SERVER_NAME   non-reserved
SESSION non-reserved reserved
SESSION_USER reserved
SET non-reserved reserved
SETOF non-reserved (cannot be function or type)  
SETS   non-reserved reserved  
SHARE non-reserved  
SHOW non-reserved  
SIMILAR reserved (can be function) reserved non-reserved  
SIMPLE non-reserved  
SIZE   non-reserved reserved
SMALLINT non-reserved (cannot be function or type) reserved
SOME reserved
SOURCE   non-reserved  
SPACE   non-reserved reserved
SPECIFIC   reserved  
SPECIFICTYPE   reserved  
SPECIFIC_NAME   non-reserved  
SQL   reserved
SQLCODE   reserved
SQLERROR   reserved
SQLEXCEPTION   reserved  
SQLSTATE   reserved
SQLWARNING   reserved  
SQRT   reserved  
STABLE non-reserved  
START non-reserved reserved  
STATE   non-reserved reserved  
STATEMENT non-reserved reserved  
STATIC   reserved  
STATISTICS non-reserved  
STDDEV_POP   reserved  
STDDEV_SAMP   reserved  
STDIN non-reserved  
STDOUT non-reserved  
STORAGE non-reserved  
STRICT non-reserved  
STRUCTURE   non-reserved reserved  
STYLE   non-reserved  
SUBCLASS_ORIGIN   non-reserved
SUBLIST   non-reserved  
SUBMULTISET   reserved  
SUBSTRING non-reserved (cannot be function or type) reserved non-reserved reserved
SUM   reserved non-reserved reserved
SUPERUSER non-reserved  
SYMMETRIC reserved non-reserved  
SYSID non-reserved  
SYSTEM non-reserved reserved non-reserved  
SYSTEM_USER   reserved
TABLE reserved
TABLESAMPLE   reserved  
TABLESPACE non-reserved  
TABLE_NAME   non-reserved
TEMP non-reserved  
TEMPLATE non-reserved  
TEMPORARY non-reserved reserved
TERMINATE   reserved  
THAN   reserved  
THEN reserved
TIES   non-reserved  
TIME non-reserved (cannot be function or type) reserved
TIMESTAMP non-reserved (cannot be function or type) reserved
TIMEZONE_HOUR   reserved
TIMEZONE_MINUTE   reserved
TO reserved
TOAST non-reserved  
TOP_LEVEL_COUNT   non-reserved  
TRAILING reserved
TRANSACTION non-reserved reserved
TRANSACTIONS_COMMITTED   non-reserved  
TRANSACTIONS_ROLLED_BACK   non-reserved  
TRANSACTION_ACTIVE   non-reserved  
TRANSFORM   non-reserved  
TRANSFORMS   non-reserved  
TRANSLATE   reserved non-reserved reserved
TRANSLATION   reserved
TREAT non-reserved (cannot be function or type) reserved  
TRIGGER non-reserved reserved  
TRIGGER_CATALOG   non-reserved  
TRIGGER_NAME   non-reserved  
TRIGGER_SCHEMA   non-reserved  
TRIM non-reserved (cannot be function or type) reserved non-reserved reserved
TRUE reserved
TRUNCATE non-reserved  
TRUSTED non-reserved  
TYPE non-reserved
UESCAPE   reserved  
UNBOUNDED   non-reserved  
UNCOMMITTED non-reserved
UNDER   non-reserved reserved  
UNENCRYPTED non-reserved  
UNION reserved
UNIQUE reserved
UNKNOWN non-reserved reserved
UNLISTEN non-reserved  
UNNAMED   non-reserved
UNNEST   reserved  
UNTIL non-reserved  
UPDATE non-reserved reserved
UPPER   reserved non-reserved reserved
USAGE   non-reserved reserved
USER reserved
USER_DEFINED_TYPE_CATALOG   non-reserved  
USER_DEFINED_TYPE_CODE   non-reserved  
USER_DEFINED_TYPE_NAME   non-reserved  
USER_DEFINED_TYPE_SCHEMA   non-reserved  
USING reserved
VACUUM non-reserved  
VALID non-reserved  
VALIDATOR non-reserved  
VALUE   reserved
VALUES non-reserved reserved
VARCHAR non-reserved (cannot be function or type) reserved
VARIABLE   reserved  
VARYING non-reserved reserved
VAR_POP   reserved  
VAR_SAMP   reserved  
VERBOSE reserved (can be function)  
VIEW non-reserved reserved
VOLATILE non-reserved  
WHEN reserved
WHENEVER   reserved
WHERE reserved
WIDTH_BUCKET   reserved  
WINDOW   reserved  
WITH non-reserved reserved
WITHIN   reserved  
WITHOUT non-reserved reserved  
WORK non-reserved reserved
WRITE non-reserved reserved
YEAR non-reserved   reserved
ZONE non-reserved reserved

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant