![]() |
标准SQL定义了大量关键词,它们不能用作表,索引,字段,数据库的名字。没人能完全记住那么长的列表,对大多数SQL 代码来说,最简单的办法是不要使用任何英语单词作为用户定义对象的名字。
使用关键词作为名称时,需要进行引用,SQLite中有三种方法引用关键词:
'keyword' 单引号中的关键词出现在字符串允许的语境中被认为是一个字符串,否则它作为标识符使用。 "keyword" 双引号中的关键词作为标识符,如果存在匹配的标识符的话,否则作为字符串使用。 [keyword] 方括弧中的关键词始终作为标识符使用,这与标准SQL不一致。MS Access以及SQL Server使用这种引用方法,SQLite支持这种引用以保证兼容性。
引用关键词毫无美感可言。SQLite允许使用未经引用的关键词,例如数据库,表,索引,触发器,视图,字段的名称。 可用作标识符的关键词在如下列表中用斜体示出。粗体显示了必须通过引用来使用的关键词。
SQLite在添加新特性时会随时增加关键词,为了保证你的代码在将来的版本中依然可用,建议引用所有作为标识符的英文单词。
SQLite目前识别的关键字列表如下:
ABORT
AFTER
ALL
ALTER
AND
AS
ASC
ATTACH
AUTOINCREMENT
BEFORE
BEGIN
BETWEEN
BY
CASCADE
CASE
CHECK
COLLATE
COMMIT
CONFLICT
CONSTRAINT
CREATE
CROSS
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
DATABASE
DEFAULT
DEFERRABLE
DEFERRED
DELETE
DESC
DETACH
DISTINCT
DROP
EACH
ELSE
END
ESCAPE
EXCEPT
EXCLUSIVE
EXPLAIN
FAIL
FOR
FOREIGN
FROM
FULL
GLOB
GROUP
HAVING
IGNORE
IMMEDIATE
IN
INDEX
INITIALLY
INNER
INSERT
INSTEAD
INTERSECT
INTO
IS
ISNULL
JOIN
KEY
LEFT
LIKE
LIMIT
MATCH
NATURAL
NOT
NOTNULL
NULL
OF
OFFSET
ON
OR
ORDER
OUTER
PRAGMA
PRIMARY
RAISE
REFERENCES
REINDEX
RENAME
REPLACE
RESTRICT
RIGHT
ROLLBACK
ROW
SELECT
SET
STATEMENT
TABLE
TEMP
TEMPORARY
THEN
TO
TRANSACTION
TRIGGER
UNION
UNIQUE
UPDATE
USING
VACUUM
VALUES
VIEW
WHEN
WHERE
下面这些不是SQLite中的关键词,但作为系统对象使用。它们可以作为其他类型的对象的标识符。
_ROWID_
MAIN
OID
ROWID
SQLITE_MASTER
SQLITE_SEQUENCE
SQLITE_TEMP_MASTER
TEMP