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 |