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