Command Prompt, Inc.
SQL Key Words

Appendix C. SQL Key Words

Table C-1 lists all tokens that are key words in the SQL standard and in PostgreSQL 8.1.3. 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 WordPostgreSQLSQL:2003SQL:1999SQL-92
A non-reserved  
ABORTnon-reserved   
ABS reservednon-reserved 
ABSOLUTEnon-reservednon-reservedreservedreserved
ACCESSnon-reserved   
ACTIONnon-reservednon-reservedreservedreserved
ADA non-reservednon-reservednon-reserved
ADDnon-reservednon-reservedreservedreserved
ADMINnon-reservednon-reservedreserved 
AFTERnon-reservednon-reservedreserved 
AGGREGATEnon-reserved reserved 
ALIAS  reserved 
ALLreservedreservedreservedreserved
ALLOCATE reservedreservedreserved
ALSOnon-reserved   
ALTERnon-reservedreservedreservedreserved
ALWAYS non-reserved  
ANALYSEreserved   
ANALYZEreserved   
ANDreservedreservedreservedreserved
ANYreservedreservedreservedreserved
ARE reservedreservedreserved
ARRAYreservedreservedreserved 
ASreservedreservedreservedreserved
ASCreservednon-reservedreservedreserved
ASENSITIVE reservednon-reserved 
ASSERTIONnon-reservednon-reservedreservedreserved
ASSIGNMENTnon-reservednon-reservednon-reserved 
ASYMMETRICreservedreservednon-reserved 
ATnon-reservedreservedreservedreserved
ATOMIC reservednon-reserved 
ATTRIBUTE non-reserved  
ATTRIBUTES non-reserved  
AUTHORIZATIONreserved (can be function)reservedreservedreserved
AVG reservednon-reservedreserved
BACKWARDnon-reserved   
BEFOREnon-reservednon-reservedreserved 
BEGINnon-reservedreservedreservedreserved
BERNOULLI non-reserved  
BETWEENreserved (can be function)reservednon-reservedreserved
BIGINTnon-reserved (cannot be function or type)reserved  
BINARYreserved (can be function)reservedreserved 
BITnon-reserved (cannot be function or type) reservedreserved
BITVAR  non-reserved 
BIT_LENGTH  non-reservedreserved
BLOB reservedreserved 
BOOLEANnon-reserved (cannot be function or type)reservedreserved 
BOTHreservedreservedreservedreserved
BREADTH non-reservedreserved 
BYnon-reservedreservedreservedreserved
C non-reservednon-reservednon-reserved
CACHEnon-reserved   
CALL reservedreserved 
CALLEDnon-reservedreservednon-reserved 
CARDINALITY reservednon-reserved 
CASCADEnon-reservednon-reservedreservedreserved
CASCADED reservedreservedreserved
CASEreservedreservedreservedreserved
CASTreservedreservedreservedreserved
CATALOG non-reservedreservedreserved
CATALOG_NAME non-reservednon-reservednon-reserved
CEIL reserved  
CEILING reserved  
CHAINnon-reservednon-reservednon-reserved 
CHARnon-reserved (cannot be function or type)reservedreservedreserved
CHARACTERnon-reserved (cannot be function or type)reservedreservedreserved
CHARACTERISTICSnon-reservednon-reserved  
CHARACTERS non-reserved  
CHARACTER_LENGTH reservednon-reservedreserved
CHARACTER_SET_CATALOG non-reservednon-reservednon-reserved
CHARACTER_SET_NAME non-reservednon-reservednon-reserved
CHARACTER_SET_SCHEMA non-reservednon-reservednon-reserved
CHAR_LENGTH reservednon-reservedreserved
CHECKreservedreservedreservedreserved
CHECKED  non-reserved 
CHECKPOINTnon-reserved   
CLASSnon-reserved reserved 
CLASS_ORIGIN non-reservednon-reservednon-reserved
CLOB reservedreserved 
CLOSEnon-reservedreservedreservedreserved
CLUSTERnon-reserved   
COALESCEnon-reserved (cannot be function or type)reservednon-reservedreserved
COBOL non-reservednon-reservednon-reserved
COLLATEreservedreservedreservedreserved
COLLATION non-reservedreservedreserved
COLLATION_CATALOG non-reservednon-reservednon-reserved
COLLATION_NAME non-reservednon-reservednon-reserved
COLLATION_SCHEMA non-reservednon-reservednon-reserved
COLLECT reserved  
COLUMNreservedreservedreservedreserved
COLUMN_NAME non-reservednon-reservednon-reserved
COMMAND_FUNCTION non-reservednon-reservednon-reserved
COMMAND_FUNCTION_CODE non-reservednon-reserved 
COMMENTnon-reserved   
COMMITnon-reservedreservedreservedreserved
COMMITTEDnon-reservednon-reservednon-reservednon-reserved
COMPLETION  reserved 
CONDITION reserved  
CONDITION_NUMBER non-reservednon-reservednon-reserved
CONNECT reservedreservedreserved
CONNECTIONnon-reservednon-reservedreservedreserved
CONNECTION_NAME non-reservednon-reservednon-reserved
CONSTRAINTreservedreservedreservedreserved
CONSTRAINTSnon-reservednon-reservedreservedreserved
CONSTRAINT_CATALOG non-reservednon-reservednon-reserved
CONSTRAINT_NAME non-reservednon-reservednon-reserved
CONSTRAINT_SCHEMA non-reservednon-reservednon-reserved
CONSTRUCTOR non-reservedreserved 
CONTAINS non-reservednon-reserved 
CONTINUE non-reservedreservedreserved
CONVERSIONnon-reserved   
CONVERTnon-reserved (cannot be function or type)reservednon-reservedreserved
COPYnon-reserved   
CORR reserved  
CORRESPONDING reservedreservedreserved
COUNT reservednon-reservedreserved
COVAR_POP reserved  
COVAR_SAMP reserved  
CREATEreservedreservedreservedreserved
CREATEDBnon-reserved   
CREATEROLEnon-reserved   
CREATEUSERnon-reserved   
CROSSreserved (can be function)reservedreservedreserved
CSVnon-reserved   
CUBE reservedreserved 
CUME_DIST reserved  
CURRENT reservedreservedreserved
CURRENT_DATEreservedreservedreservedreserved
CURRENT_DEFAULT_TRANSFORM_GROUP reserved  
CURRENT_PATH reservedreserved 
CURRENT_ROLEreservedreservedreserved 
CURRENT_TIMEreservedreservedreservedreserved
CURRENT_TIMESTAMPreservedreservedreservedreserved
CURRENT_TRANSFORM_GROUP_FOR_TYPE reserved  
CURRENT_USERreservedreservedreservedreserved
CURSORnon-reservedreservedreservedreserved
CURSOR_NAME non-reservednon-reservednon-reserved
CYCLEnon-reservedreservedreserved 
DATA non-reservedreservednon-reserved
DATABASEnon-reserved   
DATE reservedreservedreserved
DATETIME_INTERVAL_CODE non-reservednon-reservednon-reserved
DATETIME_INTERVAL_PRECISION non-reservednon-reservednon-reserved
DAYnon-reservedreservedreservedreserved
DEALLOCATEnon-reservedreservedreservedreserved
DECnon-reserved (cannot be function or type)reservedreservedreserved
DECIMALnon-reserved (cannot be function or type)reservedreservedreserved
DECLAREnon-reservedreservedreservedreserved
DEFAULTreservedreservedreservedreserved
DEFAULTSnon-reservednon-reserved  
DEFERRABLEreservednon-reservedreservedreserved
DEFERREDnon-reservednon-reservedreservedreserved
DEFINED non-reservednon-reserved 
DEFINERnon-reservednon-reservednon-reserved 
DEGREE non-reserved  
DELETEnon-reservedreservedreservedreserved
DELIMITERnon-reserved   
DELIMITERSnon-reserved   
DENSE_RANK reserved  
DEPTH non-reservedreserved 
DEREF reservedreserved 
DERIVED non-reserved  
DESCreservednon-reservedreservedreserved
DESCRIBE reservedreservedreserved
DESCRIPTOR non-reservedreservedreserved
DESTROY  reserved 
DESTRUCTOR  reserved 
DETERMINISTIC reservedreserved 
DIAGNOSTICS non-reservedreservedreserved
DICTIONARY  reserved 
DISABLEnon-reserved   
DISCONNECT reservedreservedreserved
DISPATCH non-reservednon-reserved 
DISTINCTreservedreservedreservedreserved
DOreserved   
DOMAINnon-reservednon-reservedreservedreserved
DOUBLEnon-reservedreservedreservedreserved
DROPnon-reservedreservedreservedreserved
DYNAMIC reservedreserved 
DYNAMIC_FUNCTION non-reservednon-reservednon-reserved
DYNAMIC_FUNCTION_CODE non-reservednon-reserved 
EACHnon-reservedreservedreserved 
ELEMENT reserved  
ELSEreservedreservedreservedreserved
ENABLEnon-reserved   
ENCODINGnon-reserved   
ENCRYPTEDnon-reserved   
ENDreservedreservedreservedreserved
END-EXEC reservedreservedreserved
EQUALS non-reservedreserved 
ESCAPEnon-reservedreservedreservedreserved
EVERY reservedreserved 
EXCEPTreservedreservedreservedreserved
EXCEPTION non-reservedreservedreserved
EXCLUDE non-reserved  
EXCLUDINGnon-reservednon-reserved  
EXCLUSIVEnon-reserved   
EXEC reservedreservedreserved
EXECUTEnon-reservedreservedreservedreserved
EXISTING  non-reserved 
EXISTSnon-reserved (cannot be function or type)reservednon-reservedreserved
EXP reserved  
EXPLAINnon-reserved   
EXTERNALnon-reservedreservedreservedreserved
EXTRACTnon-reserved (cannot be function or type)reservednon-reservedreserved
FALSEreservedreservedreservedreserved
FETCHnon-reservedreservedreservedreserved
FILTER reserved  
FINAL non-reservednon-reserved 
FIRSTnon-reservednon-reservedreservedreserved
FLOATnon-reserved (cannot be function or type)reservedreservedreserved
FLOOR reserved  
FOLLOWING non-reserved  
FORreservedreservedreservedreserved
FORCEnon-reserved   
FOREIGNreservedreservedreservedreserved
FORTRAN non-reservednon-reservednon-reserved
FORWARDnon-reserved   
FOUND non-reservedreservedreserved
FREE reservedreserved 
FREEZEreserved (can be function)   
FROMreservedreservedreservedreserved
FULLreserved (can be function)reservedreservedreserved
FUNCTIONnon-reservedreservedreserved 
FUSION reserved  
G non-reservednon-reserved 
GENERAL non-reservedreserved 
GENERATED non-reservednon-reserved 
GET reservedreservedreserved
GLOBALnon-reservedreservedreservedreserved
GO non-reservedreservedreserved
GOTO non-reservedreservedreserved
GRANTreservedreservedreservedreserved
GRANTEDnon-reservednon-reservednon-reserved 
GREATESTnon-reserved (cannot be function or type)   
GROUPreservedreservedreservedreserved
GROUPING reservedreserved 
HANDLERnon-reserved   
HAVINGreservedreservedreservedreserved
HEADERnon-reserved   
HIERARCHY non-reservednon-reserved 
HOLDnon-reservedreservednon-reserved 
HOST  reserved 
HOURnon-reservedreservedreservedreserved
IDENTITY reservedreservedreserved
IGNORE  reserved 
ILIKEreserved (can be function)   
IMMEDIATEnon-reservednon-reservedreservedreserved
IMMUTABLEnon-reserved   
IMPLEMENTATION non-reservednon-reserved 
IMPLICITnon-reserved   
INreservedreservedreservedreserved
INCLUDINGnon-reservednon-reserved  
INCREMENTnon-reservednon-reserved  
INDEXnon-reserved   
INDICATOR reservedreservedreserved
INFIX  non-reserved 
INHERITnon-reserved   
INHERITSnon-reserved   
INITIALIZE  reserved 
INITIALLYreservednon-reservedreservedreserved
INNERreserved (can be function)reservedreservedreserved
INOUTnon-reserved (cannot be function or type)reservedreserved 
INPUTnon-reservednon-reservedreservedreserved
INSENSITIVEnon-reservedreservednon-reservedreserved
INSERTnon-reservedreservedreservedreserved
INSTANCE non-reservednon-reserved 
INSTANTIABLE non-reservednon-reserved 
INSTEADnon-reserved   
INTnon-reserved (cannot be function or type)reservedreservedreserved
INTEGERnon-reserved (cannot be function or type)reservedreservedreserved
INTERSECTreservedreservedreservedreserved
INTERSECTION reserved  
INTERVALnon-reserved (cannot be function or type)reservedreservedreserved
INTOreservedreservedreservedreserved
INVOKERnon-reservednon-reservednon-reserved 
ISreserved (can be function)reservedreservedreserved
ISNULLreserved (can be function)   
ISOLATIONnon-reservednon-reservedreservedreserved
ITERATE  reserved 
JOINreserved (can be function)reservedreservedreserved
K non-reservednon-reserved 
KEYnon-reservednon-reservedreservedreserved
KEY_MEMBER non-reservednon-reserved 
KEY_TYPE non-reservednon-reserved 
LANCOMPILERnon-reserved   
LANGUAGEnon-reservedreservedreservedreserved
LARGEnon-reservedreservedreserved 
LASTnon-reservednon-reservedreservedreserved
LATERAL reservedreserved 
LEADINGreservedreservedreservedreserved
LEASTnon-reserved (cannot be function or type)   
LEFTreserved (can be function)reservedreservedreserved
LENGTH non-reservednon-reservednon-reserved
LESS  reserved 
LEVELnon-reservednon-reservedreservedreserved
LIKEreserved (can be function)reservedreservedreserved
LIMITreserved reserved 
LISTENnon-reserved   
LN reserved  
LOADnon-reserved   
LOCALnon-reservedreservedreservedreserved
LOCALTIMEreservedreservedreserved 
LOCALTIMESTAMPreservedreservedreserved 
LOCATIONnon-reserved   
LOCATOR non-reservedreserved 
LOCKnon-reserved   
LOGINnon-reserved   
LOWER reservednon-reservedreserved
M non-reservednon-reserved 
MAP non-reservedreserved 
MATCHnon-reservedreservedreservedreserved
MATCHED non-reserved  
MAX reservednon-reservedreserved
MAXVALUEnon-reservednon-reserved  
MEMBER reserved  
MERGE reserved  
MESSAGE_LENGTH non-reservednon-reservednon-reserved
MESSAGE_OCTET_LENGTH non-reservednon-reservednon-reserved
MESSAGE_TEXT non-reservednon-reservednon-reserved
METHOD reservednon-reserved 
MIN reservednon-reservedreserved
MINUTEnon-reservedreservedreservedreserved
MINVALUEnon-reservednon-reserved  
MOD reservednon-reserved 
MODEnon-reserved   
MODIFIES reservedreserved 
MODIFY  reserved 
MODULE reservedreservedreserved
MONTHnon-reservedreservedreservedreserved
MORE non-reservednon-reservednon-reserved
MOVEnon-reserved   
MULTISET reserved  
MUMPS non-reservednon-reservednon-reserved
NAME non-reservednon-reservednon-reserved
NAMESnon-reservednon-reservedreservedreserved
NATIONALnon-reserved (cannot be function or type)reservedreservedreserved
NATURALreserved (can be function)reservedreservedreserved
NCHARnon-reserved (cannot be function or type)reservedreservedreserved
NCLOB reservedreserved 
NESTING non-reserved  
NEWreservedreservedreserved 
NEXTnon-reservednon-reservedreservedreserved
NOnon-reservedreservedreservedreserved
NOCREATEDBnon-reserved   
NOCREATEROLEnon-reserved   
NOCREATEUSERnon-reserved   
NOINHERITnon-reserved   
NOLOGINnon-reserved   
NONEnon-reserved (cannot be function or type)reservedreserved 
NORMALIZE reserved  
NORMALIZED non-reserved  
NOSUPERUSERnon-reserved   
NOTreservedreservedreservedreserved
NOTHINGnon-reserved   
NOTIFYnon-reserved   
NOTNULLreserved (can be function)   
NOWAITnon-reserved   
NULLreservedreservedreservedreserved
NULLABLE non-reservednon-reservednon-reserved
NULLIFnon-reserved (cannot be function or type)reservednon-reservedreserved
NULLS non-reserved  
NUMBER non-reservednon-reservednon-reserved
NUMERICnon-reserved (cannot be function or type)reservedreservedreserved
OBJECTnon-reservednon-reservedreserved 
OCTETS non-reserved  
OCTET_LENGTH reservednon-reservedreserved
OFnon-reservedreservedreservedreserved
OFFreserved reserved 
OFFSETreserved   
OIDSnon-reserved   
OLDreservedreservedreserved 
ONreservedreservedreservedreserved
ONLYreservedreservedreservedreserved
OPEN reservedreservedreserved
OPERATION  reserved 
OPERATORnon-reserved   
OPTIONnon-reservednon-reservedreservedreserved
OPTIONS non-reservednon-reserved 
ORreservedreservedreservedreserved
ORDERreservedreservedreservedreserved
ORDERING non-reserved  
ORDINALITY non-reservedreserved 
OTHERS non-reserved  
OUTnon-reserved (cannot be function or type)reservedreserved 
OUTERreserved (can be function)reservedreservedreserved
OUTPUT non-reservedreservedreserved
OVER reserved  
OVERLAPSreserved (can be function)reservednon-reservedreserved
OVERLAYnon-reserved (cannot be function or type)reservednon-reserved 
OVERRIDING non-reservednon-reserved 
OWNERnon-reserved   
PAD non-reservedreservedreserved
PARAMETER reservedreserved 
PARAMETERS  reserved 
PARAMETER_MODE non-reservednon-reserved 
PARAMETER_NAME non-reservednon-reserved 
PARAMETER_ORDINAL_POSITION non-reservednon-reserved 
PARAMETER_SPECIFIC_CATALOG non-reservednon-reserved 
PARAMETER_SPECIFIC_NAME non-reservednon-reserved 
PARAMETER_SPECIFIC_SCHEMA non-reservednon-reserved 
PARTIALnon-reservednon-reservedreservedreserved
PARTITION reserved  
PASCAL non-reservednon-reservednon-reserved
PASSWORDnon-reserved   
PATH non-reservedreserved 
PERCENTILE_CONT reserved  
PERCENTILE_DISC reserved  
PERCENT_RANK reserved  
PLACINGreservednon-reserved  
PLI non-reservednon-reservednon-reserved
POSITIONnon-reserved (cannot be function or type)reservednon-reservedreserved
POSTFIX  reserved 
POWER reserved  
PRECEDING non-reserved  
PRECISIONnon-reserved (cannot be function or type)reservedreservedreserved
PREFIX  reserved 
PREORDER  reserved 
PREPAREnon-reservedreservedreservedreserved
PREPAREDnon-reserved   
PRESERVEnon-reservednon-reservedreservedreserved
PRIMARYreservedreservedreservedreserved
PRIORnon-reservednon-reservedreservedreserved
PRIVILEGESnon-reservednon-reservedreservedreserved
PROCEDURALnon-reserved   
PROCEDUREnon-reservedreservedreservedreserved
PUBLIC non-reservedreservedreserved
QUOTEnon-reserved   
RANGE reserved  
RANK reserved  
READnon-reservednon-reservedreservedreserved
READS reservedreserved 
REALnon-reserved (cannot be function or type)reservedreservedreserved
RECHECKnon-reserved   
RECURSIVE reservedreserved 
REF reservedreserved 
REFERENCESreservedreservedreservedreserved
REFERENCING reservedreserved 
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  
REINDEXnon-reserved   
RELATIVEnon-reservednon-reservedreservedreserved
RELEASEnon-reservedreserved  
RENAMEnon-reserved   
REPEATABLEnon-reservednon-reservednon-reservednon-reserved
REPLACEnon-reserved   
RESETnon-reserved   
RESTARTnon-reservednon-reserved  
RESTRICTnon-reservednon-reservedreservedreserved
RESULT reservedreserved 
RETURN reservedreserved