|
|
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 |
|
|