Microsoft SQL Server 2005 使用保留关键字来定义、操作或访问数据库。保留关键字是 SQL Server 使用的 Transact-SQL 语言语法的一部分,用于分析和理解 Transact-SQL 语句和批处理。尽管在 Transact-SQL 脚本中使用 SQL Server 保留关键字作为标识符和对象名在语法上是可行的,但规定只能使用分隔标识符。
下表列出了 SQL Server 保留关键字。
| ADD |
EXCEPT |
PERCENT |
| ALL |
EXEC |
PLAN |
| ALTER |
EXECUTE |
PRECISION |
| AND |
EXISTS |
PRIMARY |
| ANY |
EXIT |
|
| AS |
FETCH |
PROC |
| ASC |
FILE |
PROCEDURE |
| AUTHORIZATION |
FILLFACTOR |
PUBLIC |
| BACKUP |
FOR |
RAISERROR |
| BEGIN |
FOREIGN |
READ |
| BETWEEN |
FREETEXT |
READTEXT |
| BREAK |
FREETEXTTABLE |
RECONFIGURE |
| BROWSE |
FROM |
REFERENCES |
| BULK |
FULL |
REPLICATION |
| BY |
FUNCTION |
RESTORE |
| CASCADE |
GOTO |
RESTRICT |
| CASE |
GRANT |
RETURN |
| CHECK |
GROUP |
REVOKE |
| CHECKPOINT |
HAVING |
RIGHT |
| CLOSE |
HOLDLOCK |
ROLLBACK |
| CLUSTERED |
IDENTITY |
ROWCOUNT |
| COALESCE |
IDENTITY_INSERT |
ROWGUIDCOL |
| COLLATE |
IDENTITYCOL |
RULE |
| COLUMN |
IF |
SAVE |
| COMMIT |
IN |
SCHEMA |
| COMPUTE |
INDEX |
SELECT |
| CONSTRAINT |
INNER |
SESSION_USER |
| CONTAINS |
INSERT |
SET |
| CONTAINSTABLE |
INTERSECT |
SETUSER |
| CONTINUE |
INTO |
SHUTDOWN |
| CONVERT |
IS |
SOME |
| CREATE |
JOIN |
STATISTICS |
| CROSS |
KEY |
SYSTEM_USER |
| CURRENT |
KILL |
TABLE |
| CURRENT_DATE |
LEFT |
TEXTSIZE |
| CURRENT_TIME |
LIKE |
THEN |
| CURRENT_TIMESTAMP |
LINENO |
TO |
| CURRENT_USER |
LOAD |
TOP |
| CURSOR |
NATIONAL |
TRAN |
| DATABASE |
NOCHECK |
TRANSACTION |
| DBCC |
NONCLUSTERED |
TRIGGER |
| DEALLOCATE |
NOT |
TRUNCATE |
| DECLARE |
NULL |
TSEQUAL |
| DEFAULT |
NULLIF |
UNION |
| DELETE |
OF |
UNIQUE |
| DENY |
OFF |
UPDATE |
| DESC |
OFFSETS |
UPDATETEXT |
| DISK |
ON |
USE |
| DISTINCT |
OPEN |
USER |
| DISTRIBUTED |
OPENDATASOURCE |
VALUES |
| DOUBLE |
OPENQUERY |
VARYING |
| DROP |
OPENROWSET |
VIEW |
| DUMMY |
OPENXML |
WAITFOR |
| DUMP |
OPTION |
WHEN |
| ELSE |
OR |
WHERE |
| END |
ORDER |
WHILE |
| ERRLVL |
OUTER |
WITH |
| ESCAPE |
OVER |
WRITETEXT |
另外,SQL-2003 标准还定义了保留关键字列表。不要使用 SQL-2003 保留关键字作为对象名和标识符。ODBC 保留关键字列表(如下表所示)与 SQL-2003 保留关键字列表相同。
| 注意: |
| SQL-2003 保留关键字列表有时可能比 SQL Server 限制更多,有时则限制更少。例如,SQL-2003 保留关键字列表包含 INT,而 SQL Server 不需要将其区分为保留关键字。 |
Transact-SQL 保留关键字可用作数据库或数据库对象(如表、列、视图等)的标识符或名称。使用带引号的标识符或分隔标识符。不限制将保留关键字用作变量和存储过程参数的名称。有关详细信息,请参阅使用标识符作为对象名称。
ODBC 保留关键字
保留了下列关键字以用于 ODBC 函数调用。这些关键字根本不约束 SQL 语法;然而,为确保与支持核心 SQL 语法的驱动程序兼容,应用程序应避免使用这些关键字。
下面是当前的 ODBC 保留关键字列表。
| ABSOLUTE |
EXEC |
OVERLAPS |
| ACTION |
EXECUTE |
PAD |
| ADA |
EXISTS |
PARTIAL |
| ADD |
EXTERNAL |
PASCAL |
| ALL |
EXTRACT |
POSITION |
| ALLOCATE |
FALSE |
PRECISION |
| ALTER |
FETCH |
PREPARE |
| AND |
FIRST |
PRESERVE |
| ANY |
FLOAT |
PRIMARY |
| ARE |
FOR |
PRIOR |
| AS |
FOREIGN |
PRIVILEGES |
| ASC |
FORTRAN |
PROCEDURE |
| ASSERTION |
FOUND |
PUBLIC |
| AT |
FROM |
READ |
| AUTHORIZATION |
FULL |
REAL |
| AVG |
GET |
REFERENCES |
| BEGIN |
GLOBAL |
RELATIVE |
| BETWEEN |
GO |
RESTRICT |
| BIT |
GOTO |
REVOKE |
| BIT_LENGTH |
GRANT |
RIGHT |
| BOTH |
GROUP |
ROLLBACK |
| BY |
HAVING |
ROWS |
| CASCADE |
HOUR |
SCHEMA |
| CASCADED |
IDENTITY |
SCROLL |
| CASE |
IMMEDIATE |
SECOND |
| CAST |
IN |
SECTION |
| CATALOG |
INCLUDE |
SELECT |
| CHAR |
INDEX |
SESSION |
| CHAR_LENGTH |
INDICATOR |
SESSION_USER |
| CHARACTER |
INITIALLY |
SET |
| CHARACTER_LENGTH |
INNER |
SIZE |
| CHECK |
INPUT |
SMALLINT |
| CLOSE |
INSENSITIVE |
SOME |
| COALESCE |
INSERT |
SPACE |
| COLLATE |
INT |
SQL |
| COLLATION |
INTEGER |
SQLCA |
| COLUMN |
INTERSECT |
SQLCODE |
| COMMIT |
INTERVAL |
SQLERROR |
| CONNECT |
INTO |
SQLSTATE |
| CONNECTION |
IS |
SQLWARNING |
| CONSTRAINT |
ISOLATION |
SUBSTRING |
| CONSTRAINTS |
JOIN |
SUM |
| CONTINUE |
KEY |
SYSTEM_USER |
| CONVERT |
LANGUAGE |
TABLE |
| CORRESPONDING |
LAST |
TEMPORARY |
| COUNT |
LEADING |
THEN |
| CREATE |
LEFT |
TIME |
| CROSS |
LEVEL |
TIMESTAMP |
| CURRENT |
LIKE |
TIMEZONE_HOUR |
| CURRENT_DATE |
LOCAL |
TIMEZONE_MINUTE |
| CURRENT_TIME |
LOWER |
TO |
| CURRENT_TIMESTAMP |
MATCH |
TRAILING |
| CURRENT_USER |
MAX |
TRANSACTION |
| CURSOR |
MIN |
TRANSLATE |
| DATE |
MINUTE |
TRANSLATION |
| DAY |
MODULE |
TRIM |
| DEALLOCATE |
MONTH |
TRUE |
| DEC |
NAMES |
UNION |
| DECIMAL |
NATIONAL |
UNIQUE |
| DECLARE |
NATURAL |
UNKNOWN |
| DEFAULT |
NCHAR |
UPDATE |
| DEFERRABLE |
NEXT |
UPPER |
| DEFERRED |
NO |
USAGE |
| DELETE |
NONE |
USER |
| DESC |
NOT |
USING |
| DESCRIBE |
NULL |
VALUE |
| DESCRIPTOR |
NULLIF |
VALUES |
| DIAGNOSTICS |
NUMERIC |
VARCHAR |
| DISCONNECT |
OCTET_LENGTH |
VARYING |
| DISTINCT |
OF |
VIEW |
| DOMAIN |
ON |
WHEN |
| DOUBLE |
ONLY |
WHENEVER |
| DROP |
OPEN |
WHERE |
| ELSE |
OPTION |
WITH |
| END |
OR |
WORK |
| END-EXEC |
ORDER |
WRITE |
| ESCAPE |
OUTER |
YEAR |
| EXCEPT |
OUTPUT |
ZONE |
| EXCEPTION |
|
|
将来的关键字
下列关键字可能会在将来的 SQL Server 版本中保留使用,作为将来要实现的新功能。注意,不要使用这些关键字作为标识符。
| ABSOLUTE |
FOUND |
PREPARE |
| ACTION |
FREE |
PRESERVE |
| ADMIN |
FULLTEXTTABLE |
PRIOR |
| AFTER |
GENERAL |
PRIVILEGES |
| AGGREGATE |
GET |
READS |
| ALIAS |
GLOBAL |
REAL |
| ALLOCATE |
GO |
RECURSIVE |
| ARE |
GROUPING |
REF |
| ARRAY |
HOST |
REFERENCING |
| ASSERTION |
HOUR |
RELATIVE |
| AT |
IGNORE |
RESULT |
| BEFORE |
IMMEDIATE |
RETURNS |
| BINARY |
INDICATOR |
ROLE |
| BIT |
INITIALIZE |
ROLLUP |
| BLOB |
INITIALLY |
ROUTINE |
| BOOLEAN |
INOUT |
ROW |
| BOTH |
INPUT |
ROWS |
| BREADTH |
INT |
SAVEPOINT |
| CALL |
INTEGER |
SCROLL |
| CASCADED |
INTERVAL |
SCOPE |
| CAST |
ISOLATION |
SEARCH |
| CATALOG |
ITERATE |
SECOND |
| CHAR |
LANGUAGE |
SECTION |
| CHARACTER |
LARGE |
SEQUENCE |
| CLASS |
LAST |
SESSION |
| CLOB |
LATERAL |
SETS |
| COLLATION |
LEADING |
SIZE |
| COMPLETION |
LESS |
SMALLINT |
| CONNECT |
LEVEL |
SPACE |
| CONNECTION |
LIMIT |
SPECIFIC |
| CONSTRAINTS |
LOCAL |
SPECIFICTYPE |
| CONSTRUCTOR |
LOCALTIME |
SQL |
| CORRESPONDING |
LOCALTIMESTAMP |
SQLEXCEPTION |
| CUBE |
LOCATOR |
SQLSTATE |
| CURRENT_PATH |
MAP |
SQLWARNING |
| CURRENT_ROLE |
MATCH |
START |
| CYCLE |
MINUTE |
STATE |
| DATA |
MODIFIES |
STATEMENT |
| DATE |
MODIFY |
STATIC |
| DAY |
MODULE |
STRUCTURE |
| DEC |
MONTH |
TEMPORARY |
| DECIMAL |
NAMES |
TERMINATE |
| DEFERRABLE |
NATURAL |
THAN |
| DEFERRED |
NCHAR |
TIME |
| DEPTH |
NCLOB |
TIMESTAMP |
| DEREF |
NEW |
TIMEZONE_HOUR |
| DESCRIBE |
NEXT |
TIMEZONE_MINUTE |
| DESCRIPTOR |
NO |
TRAILING |
| DESTROY |
NONE |
TRANSLATION |
| DESTRUCTOR |
NUMERIC |
TREAT |
| DETERMINISTIC |
OBJECT |
TRUE |
| DICTIONARY |
OLD |
UNDER |
| DIAGNOSTICS |
ONLY |
UNKNOWN |
| DISCONNECT |
OPERATION |
UNNEST |
| DOMAIN |
ORDINALITY |
USAGE |
| DYNAMIC |
OUT |
USING |
| EACH |
OUTPUT |
VALUE |
| END-EXEC |
PAD |
VARCHAR |
| EQUALS |
PARAMETER |
VARIABLE |
| EVERY |
PARAMETERS |
WHENEVER |
| EXCEPTION |
PARTIAL |
WITHOUT |
| EXTERNAL |
PATH |
WORK |
| FALSE |
POSTFIX |
WRITE |
| FIRST |
PREFIX |
YEAR |
| FLOAT |
PREORDER |
ZONE |
