为了避免在数据库表结构设计过程中使用系统保留关键字我们必须知道数据库存在哪些关键字,接下来会列出mysql、oracle、sqlserver三个数据库各自的保留关键字。
Mysql
Oracle
select*fromv$reserved_wordsorderbykeywordasc
下表列出了SQLServer保留关键字。
add
EXTERNAL
PROCEDURE
ALL
FETCH
PUBLIC
ALTER
FILE
RAISERROR
And
FILLFACTOR
READ
ANY
FOR
READTEXT
As
FOREIGN
RECONFIGURE
ASC
FREETEXT
REFERENCES
AUTHORIZATION
FREETEXTTABLE
REPLICATION
BACKUP
from
RESTORE
BEGIN
FULL
RESTRICT
BETWEEN
FUNCTION
RETURN
BREAK
GOTO
REVERT
BROWSE
GRANT
REVOKE
BULK
GROUP
RIGHT
BY
HAVING
ROLLBACK
CASCADE
HOLDLOCK
ROWCOUNT
Case
IDENTITY
ROWGUIDCOL
CHECK
IDENTITY_INSERT
RULE
CHECKPOINT
IDENTITYCOL
SAVE
close
IF
SCHEMA
CLUSTERED
IN
SECURITYAUDIT
COALESCE
INDEX
SELECT
COLLATE
INNER
SEMANTICKEYPHRASETABLE
COLUMN
INSERT
SEMANTICSIMILARITYDETAILSTABLE
COMMIT
INTERSECT
SEMANTICSIMILARITYTABLE
COMPUTE
INTO
SESSION_USER
CONSTRAINT
is
SET
CONTAINS
JOIN
SETUSER
CONTAINSTABLE
KEY
SHUTDOWN
CONTINUE
KILL
SOME
CONVERT
LEFT
STATISTICS
CREATE
LIKE
SYSTEM_USER
CROSS
LINENO
TABLE
CURRENT
LOAD
TABLESAMPLE
CURRENT_DATE
MERGE
TEXTSIZE
CURRENT_TIME
NATIONAL
THEN
CURRENT_TIMESTAMP
NOCHECK
目标
CURRENT_USER
NONCLUSTERED
TOP
CURSOR
NOT
TRAN
DATABASE
NULL
TRANSACTION
DBCC
NULLIF
Trigger
DEALLOCATE
OF
TRUNCATE
DECLARE
OFF
TRY_CONVERT
DEFAULT
OFFSETS
TSEQUAL
delete
ON
UNION
DENY
OPEN
UNIQUE
DESC
OPENDATASOURCE
UNPIVOT
DISK
OPENQUERY
UPDATE
DISTINCT
OPENROWSET
UPDATETEXT
DISTRIBUTED
OPENXML
USE
DOUBLE
OPTION
USER
DROP
OR
VALUES
DUMP
ORDER
VARYING
Else
OUTER
View
END
OVER
WAITFOR
ERRLVL
PERCENT
WHEN
ESCAPE
PIVOT
WHERE
EXCEPT
PLAN
WHILE
EXEC
PRECISION
WITH
EXECUTE
PRIMARY
WITHINGROUP
EXISTS
WRITETEXT
EXIT
PROC
此外,ISO标准定义了保留关键字列表。不要使用ISO保留关键字作为对象名和标识符。ODBC保留关键字列表(如下表所示)与ISO保留关键字列表相同。
注意
ISO标准保留关键字有时可能比SQLServer限制更多,有时则更少。例如,ISO保留关键字列表包含INT。SQLServer不必将此区分为保留关键字。
Transact-SQL保留关键字可用作数据库或数据库对象(如表、列、视图等)的标识符或名称。使用带引号的标识符或分隔标识符。不限制将保留关键字用作变量和存储过程参数的名
ODBC保留关键字
保留了下列关键字以用于ODBC函数调用。这些关键字根本不约束SQL语法;然而,为确保与支持核心SQL语法的驱动程序兼容,应用程序应避免使用这些关键字。
下面是当前的ODBC保留关键字列表。
ABSOLUTE
OVERLAPS
ACTION
PAD
ADA
PARTIAL
ADD
PASCAL
EXTRACT
POSITION
ALLOCATE
FALSE
PREPARE
AND
FIRST
PRESERVE
FLOAT
ARE
PRIOR
AS
PRIVILEGES
FORTRAN
ASSERTION
FOUND
AT
FROM
REAL
AVG
GET
GLOBAL
RELATIVE
GO
BIT
BIT_LENGTH
BOTH
ROWS
HOUR
CASCADED
SCROLL
CASE
IMMEDIATE
SECOND
CAST
SECTION
CATALOG
INCLUDE
CHAR
SESSION
CHAR_LENGTH
INDICATOR
CHARACTER
INITIALLY
CHARACTER_LENGTH
SIZE
INPUT
SMALLINT
CLOSE
INSENSITIVE
SPACE
INT
SQL
COLLATION
INTEGER
SQLCA
SQLCODE
INTERVAL
SQLERROR
CONNECT
SQLSTATE
CONNECTION
IS
SQLWARNING
ISOLATION
SUBSTRING
CONSTRAINTS
SUM
LANGUAGE
CORRESPONDING
LAST
TEMPORARY
COUNT
LEADING
TIME
LEVEL
TIMESTAMP
TIMEZONE_HOUR
LOCAL
TIMEZONE_MINUTE
LOWER
TO
MATCH
TRAILING
MAX
MIN
TRANSLATE
DATE
MINUTE
TRANSLATION
DAY
MODULE
TRIM
MONTH
TRUE
DEC
NAMES
DECIMAL
NATURAL
UNKNOWN
NCHAR
DEFERRABLE
NEXT
UPPER
DEFERRED
NO
USAGE
DELETE
NONE
USING
DESCRIBE
VALUE
DESCRIPTOR
DIAGNOSTICS
NUMERIC
VARCHAR
DISCONNECT
OCTET_LENGTH
VIEW
DOMAIN
ONLY
WHENEVER
ELSE
WORK
END-EXEC
WRITE
YEAR
OUTPUT
ZONE
EXCEPTION
将来的关键字
下列关键字可能会在将来的SQLServer版本中保留使用,作为将来要实现的新功能。注意,不要使用这些关键字作为标识符。