With a limited vocabulary, SQL is a relatively efficient language (compared with many other programming languages); the SQL99 standard defines about 300 keywords out of which vendors have thus far implemented only a small subset.
Oracle 9i lists over 100 keywords, IBM DB2 UDB has over 290 keywords, and Microsoft SQL Server 2000 reserves over 170 keywords. Most of the vendor-reserved keywords are found in the SQL99 standard, but many more exist. None of these reserved words should be used as a variable identifier as such use would affect portability of your SQL code. On some systems, doing so will generate an error (SQLSTATE 42939).
Asterisks appear after the vendor-supported keywords whenever they also are part of SQL standard.
Note |
In addition to keywords listed here, each vendor also has a list of keywords reserved for future use. These lists are constantly updated. Refer to the particular RDBMS documentation. |
SQL99 standard reserved keywords:
ABSOLUTE |
CASE |
CURRENT_TIMESTAMP |
ACTION |
CAST |
CURRENT_USER |
ADD |
CATALOG |
CURSOR |
ADMIN |
CHAR |
CYCLE |
AFTER |
CHARACTER |
DATA |
AGGREGATE |
CHECK |
DATALINK |
ALIAS |
CLASS |
DATE |
ALL |
CLOB |
DAY |
ALLOCATE |
CLOSE |
DEALLOCATE |
ALTER |
COLLATE |
DEC |
AND |
COLLATION |
DECIMAL |
ANY |
COLUMN |
DECLARE |
ARE |
COMMIT |
DEFAULT |
ARRAY |
COMPLETION |
DEFERRABLE |
AS |
CONDITION |
DELETE |
ASC |
CONNECT |
DEPTH |
ASSERTION |
CONNECTION |
DEREF |
AT |
CONSTRAINT |
DESC |
AUTHORIZATION |
CONSTRAINTS |
DESCRIPTOR |
BEFORE |
CONSTRUCTOR |
DIAGNOSTICS |
BEGIN |
CONTAINS |
DICTIONARY |
BINARY |
CONTINUE |
DISCONNECT |
BIT |
CORRESPONDING |
DO |
BLOB |
CREATE |
DOMAIN |
BOOLEAN |
CROSS |
DOUBLE |
BOTH |
CUBE |
DROP |
BREADTH |
CURRENT |
END-EXEC |
BY |
CURRENT_DATE |
EQUALS |
CALL |
CURRENT_PATH |
ESCAPE |
CASCADE |
CURRENT_ROLE |
EXCEPT |
CASCADED |
CURRENT_TIME |
EXCEPTION |
EXECUTE |
INPUT |
MODIFIES |
EXIT |
INSERT |
MODIFY |
EXPAND |
INT |
MODULE |
EXPANDING |
INTEGER |
MONTH |
FALSE |
INTERSECT |
NAMES |
FIRST |
INTERVAL |
NATIONAL |
FLOAT |
INTO |
NATURAL |
FOR |
IS |
NCHAR |
FOREIGN |
ISOLATION |
NCLOB |
FREE |
ITERATE |
NEW |
FROM |
JOIN |
NEXT |
FUNCTION |
KEY |
NO |
GENERAL |
LANGUAGE |
NONE |
GET |
LARGE |
NORMALIZE |
GLOBAL |
LAST |
NOT |
GOTO |
LATERAL |
NULL |
GROUP |
LEADING |
NUMERIC |
GROUPING |
LEAVE |
OBJECT |
HANDLER |
LEFT |
OF |
HASH |
LESS |
OFF |
HOUR |
LEVEL |
OLD |
IDENTITY |
LIKE |
ON |
IF |
LIMIT |
ONLY |
IGNORE |
LOCAL |
OPEN |
IMMEDIATE |
LOCALTIME |
OPERATION |
IN |
LOCALTIME-STAMP |
OPTION |
INDICATOR |
LOCATOR |
OR |
INITIALIZE |
LOOP |
ORDER |
INITIALLY |
MATCH |
ORDINALITY |
INNER |
MEETS |
OUT |
INOUT |
MINUTE |
OUTER |
EXECUTE |
INPUT |
MODIFIES |
EXIT |
INSERT |
MODIFY |
EXPAND |
INT |
MODULE |
EXPANDING |
INTEGER |
MONTH |
FALSE |
INTERSECT |
NAMES |
FIRST |
INTERVAL |
NATIONAL |
FLOAT |
INTO |
NATURAL |
FOR |
IS |
NCHAR |
FOREIGN |
ISOLATION |
NCLOB |
FREE |
ITERATE |
NEW |
FROM |
JOIN |
NEXT |
FUNCTION |
KEY |
NO |
GENERAL |
LANGUAGE |
NONE |
GET |
LARGE |
NORMALIZE |
GLOBAL |
LAST |
NOT |
GOTO |
LATERAL |
NULL |
GROUP |
LEADING |
NUMERIC |
GROUPING |
LEAVE |
OBJECT |
HANDLER |
LEFT |
OF |
HASH |
LESS |
OFF |
HOUR |
LEVEL |
OLD |
IDENTITY |
LIKE |
ON |
IF |
LIMIT |
ONLY |
IGNORE |
LOCAL |
OPEN |
IMMEDIATE |
LOCALTIME |
OPERATION |
IN |
LOCALTIME-STAMP |
OPTION |
INDICATOR |
LOCATOR |
OR |
INITIALIZE |
LOOP |
ORDER |
INITIALLY |
MATCH |
ORDINALITY |
INNER |
MEETS |
OUT |
INOUT |
MINUTE |
OUTER |
USAGE |
VARYING |
WITH |
USER |
VIEW |
WRITE |
USING |
WHEN |
YEAR |
VALUE |
WHENEVER |
ZONE |
VALUES |
WHERE | |
VARIABLE |
WHILE |
Oracle 9i SQL reserved keywords:
ACCESS |
DELETE * |
INTO * |
ADD * |
DESC * |
IS * |
ALL * |
DISTINCT * |
LEVEL * |
ALTER * |
DROP * |
LIKE * |
AND * |
ELSE * |
LOCK |
ANY * |
EXCLUSIVE |
LONG |
AS * |
EXISTS |
MAXEXTENTS |
ASC * |
FILE |
MINUS |
AUDIT |
FLOAT * |
MLSLABEL |
BETWEEN * |
FOR * |
MODE |
BY * |
FROM * |
MODIFY * |
CHAR * |
GRANT * |
NOAUDIT |
CHECK * |
GROUP * |
NOCOMPRESS |
CLUSTER |
HAVING * |
NOT * |
COLUMN * |
IDENTIFIED |
NOWAIT |
COMMENT |
IMMEDIATE * |
NULL * |
COMPRESS |
IN * |
NUMBER |
CONNECT * |
INCREMENT |
OF * |
CREATE * |
INDEX |
OFFLINE |
CURRENT * |
INITIAL |
ON * |
DATE * |
INSERT * |
ONLINE |
DECIMAL * |
INTEGER * |
OPTION * |
DEFAULT * |
INTERSECT * |
OR* |
ORDER * |
SESSION * |
UNION * |
PCTFREE |
SET * |
UNIQUE * |
PRIOR * |
SHARE |
UPDATE * |
PRIVILEGES * |
SIZE * |
USER * |
PUBLIC * |
SMALLINT * |
VALIDATE |
RAW * |
START * |
VALUES * |
RENAME |
SUCCESSFUL |
VARCHAR * |
RESOURCE |
SYNONYM |
VARCHAR2 |
REVOKE * |
SYSDATE |
VIEW * |
ROW * |
TABLE * |
WHENEVER * |
ROWID |
THEN * |
WHERE * |
ROWNUM |
TO * |
WITH * |
ROWS * |
TRIGGER * | |
SELECT * |
UID |
IBM DB2 UDB 8.1 reserved keywords:
ACQUIRE |
AUX |
CAST * |
ADD * |
AUXILIARY |
CCSID |
AFTER * |
AVG |
CHAR * |
ALIAS * |
BD2GENERAL |
CHARACTER * |
ALL * |
BEFORE * |
CHECK * |
ALLOCATE * |
BEGIN * |
CLOSE * |
ALLOW |
BETWEEN |
CLUSTER |
ALTER * |
BINARY * |
COLLECTION |
AND * |
BUFFERPOOL |
COLLID |
ANY * |
BY * |
COLUMN * |
AS * |
CALL * |
COMMENT |
ASC * |
CALLED |
COMMIT * |
ASUTIME |
CAPTURE |
CONCAT |
AUDIT |
CASCADED * |
CONDITION * |
AUTHORISATION * |
CASE * |
CONNECT * |
CONNECTION * |
DESCRIPTOR * |
FOREIGN * |
CONSTRAINT * |
DETERMINISTIC |
FREE * |
CONTAINS * |
DISALLOW |
FROM * |
CONTINUE * |
DISCONNECT * |
FULL |
COUNT |
DISTINCT |
FUNCTION * |
COUNT_BIG |
DO * |
GENERAL * |
CREATE * |
DOUBLE * |
GENERATED |
CROSS * |
DROP * |
GO |
CURRENT * |
DSSIZE |
GOTO * |
CURRENT_DATE * |
DYNAMIC |
GRANT |
CURRENT_LC_PATH |
EDITPROC |
GRAPHIC |
CURRENT_PATH |
ELSE |
GROUP * |
CURRENT_SERVER |
ELSEIF |
HANDLER * |
CURRENT_TIME * |
END |
HAVING |
CURRENT_TIMESTAMP * |
END-EXEC |
HOUR * |
CURRENT_TIMEZONE |
ERASE |
HOURS |
CURRENT_USER * |
ESCAPE * |
IDENTIFIED |
CURSOR * |
EXCEPT * |
IF * |
DATA * |
EXCEPTION * |
IMMEDIATE * |
DATABASE |
EXCLUSIVE |
IN * |
DATE * |
EXECUTE * |
INDEX |
DAY * |
EXISTS |
INDICATOR * |
DAYS |
EXIT * |
INNER * |
DB2SQL |
EXPLAIN |
INOUT * |
DBA |
EXTERNAL |
INSENSITIVE |
DBINFO |
FENCED |
INSERT * |
DBSPACE |
FETCH |
INTEGRITY |
DECLARE |
FIELDPROC |
INTERSECT * |
DEFAULT * |
FILE |
INTO * |
DELETE * |
FINAL |
IS * |
DESC * |
FOR * |
ISOBID |
ISOLATION * |
NHEADER |
POSITION |
JAVA |
NO * |
PRECISION |
JOIN * |
NODENAME |
PREPARE * |
KEY * |
NODENUMBER |
PRIMARY * |
LABEL |
NOT * |
PRIQTY |
LANGUAGE * |
NULL * |
PRIVATE |
LC_TYPE |
NULLS |
PRIVILEGES * |
LEAVE * |
NUMPARTS |
PROCEDURE * |
LEFT * |
OBID |
PROGRAM |
LIKE * |
OF * |
PSID |
LINKTYPE |
ON * |
PUBLIC * |
LOCAL * |
ONLY |
QUERYNO |
LOCALE |
OPEN * |
READ * |
LOCATOR * |
OPTIMIZATION |
READS * |
LOCATORS |
OPTIMIZE |
RECOVERY |
LOCK |
OPTION * |
REFERENCES * |
LOCKSIZE |
OR * |
RELEASE |
LONG |
ORDER * |
RENAME |
LOOP * |
OUT * |
REPEAT * |
MAX |
OUTER * |
RESET |
MICROSECOND |
PACKAGE |
RESOURCE |
MICROSECONDS |
PAGE |
RESTRICT * |
MIN |
PAGES |
RESULT * |
MINUTE * |
PARAMETER |
RETURN * |
MINUTES |
PART |
RETURNS * |
MODE |
PARTITION |
REVOKE * |
MODIFIES * |
PATH |
RIGHT * |
MONTH * |
PCTINDEX |
ROLLBACK * |
MONTHS |
PCTREE |
ROW * |
NAME |
PIECESIZE |
ROWS * |
NAMED |
PLAN |
RRN |
RUN |
STOGROUP |
UPDATE * |
SCHEDULE |
STORES |
USAGE * |
SCHEMA * |
STORPOOL |
USER * |
SCRATCHPAD |
STYLE |
USING * |
SECOND * |
SUBPAGES |
VALIDPROC |
SECONDS |
SUBSTRING |
VALUES * |
SECQTY |
SUM * |
VARIABLE * |
SECURITY |
SYNONYM |
VARIANT |
SELECT * |
TABLE * |
VCAT |
SET * |
TABLESPACE |
VIEW * |
SHARE |
THEN * |
VOLUMES |
SIMPLE |
TO * |
WHEN * |
SOME |
TRANSACTION * |
WHERE * |
SOURCE |
TRIGGER * |
WHILE * |
SPECIFIC * |
TRIM |
WITH * |
SQL * |
TYPE |
WLM |
STANDARD |
UNDO * |
WORK |
STATIC |
UNION * |
WRITE * |
STATISTICS |
UNIQUE * |
YEAR * |
STAY |
UNTIL * |
YEARS |
Microsoft SQL Server 2000 reserved keywords:
ADD * |
BEGIN * |
CHECKPOINT |
ALL * |
BETWEEN * |
CLOSE * |
ALTER * |
BREAK |
CLUSTERED |
AND * |
BROWSE |
COALESCE |
ANY * |
BULK |
COLLATE * |
AS * |
BY * |
COLUMN * |
ASC * |
CASCADE * |
COMMIT * |
AUTHORIZATION * |
CASE * |
COMPUTE |
BACKUP |
CHECK * |
CONSTRAINT * |
CONTAINS * |
END * |
INDEX |
CONTAINSTABLE |
ERRLVL |
INNER * |
CONTINUE * |
ESCAPE |
INSERT * |
CONVERT |
EXCEPT * |
INTERSECT * |
CREATE * |
EXEC |
INTO * |
CROSS * |
EXECUTE * |
IS * |
CRRENT_TIME * |
EXISTS |
JOIN * |
CURREN *T |
EXIT * |
KEY * |
CURRENT_DATE * |
FETCH |
KILL |
CURRENT_TIMESTAMP * |
FILE |
LEFT * |
CURRENT_USER * |
FILLFACTOR |
LIKE |
CURSOR * |
FOR * |
LINENO |
DATABASE |
FOREIGN * |
LOAD |
DBCC |
FREETEXT |
NATIONAL * |
DEALLOCATE * |
FREETEXTTABLE |
NOCHECK |
DECLARE * |
FROM * |
NONCLUSTERED |
DEFAULT * |
FULL |
NOT * |
DELETE * |
FUNCTION * |
NULL * |
DENY |
GOTO * |
NULLIF |
DESC * |
GRANT * |
OF * |
DISK |
GROUP * |
OFF * |
DISTINCT * |
HAVING |
OFFSETS |
DISTRIBUTED |
HOLDLOCK |
ON * |
DOUBLE * |
IDENTITY * |
OPEN * |
DROP * |
IDENTITY_COL |
OPENDATASOURCE |
DUMMY |
IDENTITY_INSERT |
OPENQUERY |
DUMP |
IF * |
OPENROWSET |
ELSE * |
IN * |
OPENXML |
OPTION * |
RETURN * |
TOP |
OR * |
REVOKE * |
TRAN |
ORDER * |
RIGHT * |
TRANSACTION * |
OUTER * |
ROLLBACK * |
TRIGGER * |
OVER |
ROWCOUNT |
TRUNCATE |
PERCENT |
ROWGUIDCOL |
TSEQUAL |
PLAN |
RULE |
UNION * |
PRECISION * |
SAVE |
UNIQUE * |
PRIMARY * |
SCHEMA * |
UPDATE * |
PRINT * |
SELECTSESSION_USER |
UPDATETEXT |
PROC |
* |
USE |
PROCEDURE * |
SET * |
USER * |
PUBLIC * |
SETUSER |
VALUES * |
RAISERROR |
SHUTDOWN |
VARYING * |
READ * |
SOME |
VIEW * |
READTEXT |
STATISTICS |
WAITFOR |
RECONFIGURE |
SYSTEM_USER * |
WHEN * |
REFERENCES * |
TABLE * |
WHERE * |
REPLICATION |
TEXTSIZE |
WHILE * |
RESTORE |
THEN * |
WITH * |
RESTRICT * |
TO * |
WRITETEXT |