参考:https://www.sqlite.org/lang_keywords.html
SQL标准指定了大量关键字,这些关键字不能用作表,索引,列,数据库,用户定义函数,排序规则,虚拟表模块或任何其他命名对象的名称。关键字列表很长,很少有人能记住它们。对于大多数SQL代码,最安全的选择是永远不要使用任何英语单词作为用户定义对象的名称。
如果要使用关键字作为名称,则需要引用它。在SQLite中有四种引用关键字的方法:
'keyword' 单引号中的关键字是字符串文字。
“keyword” 双引号中的关键字是标识符。
[keyword] 方括号中的关键字是标识符。这不是标准的SQL。此引用机制由MS Access和SQL Server使用,并包含在SQLite中以实现兼容性。
`keyword` 用严重重音符号(ASCII代码96)括起来的关键字是标识符。这不是标准的SQL。这种引用机制由MySQL使用,并包含在SQLite中以实现兼容性。
SQLite的SQL解析器的关键字(124个)如下:
ABORT | CREATE | FROM | NATURAL |
ACTION | CROSS | FULL | NO |
ADD | CURRENT_DATE | GLOB | NOT |
AFTER | CURRENT_TIME | GROUP | NOTNULL |
ALL | CURRENT_TIMESTAMP | HAVING | NULL |
ALTER | DATABASE | IF | OF |
ANALYZE | DEFAULT | IGNORE | OFFSET |
AND | DEFERRABLE | IMMEDIATE | ON |
AS | DEFERRED | IN | OR |
ASC | DELETE | INDEX | ORDER |
ATTACH | DESC | INDEXED | OUTER |
AUTOINCREMENT | DETACH | INITIALLY | PLAN |
BEFORE | DISTINCT | INNER | PRAGMA |
BEGIN | DROP | INSERT | PRIMARY |
BETWEEN | EACH | INSTEAD | QUERY |
BY | ELSE | INTERSECT | RAISE |
CASCADE | END | INTO | RECURSIVE |
CASE | ESCAPE | IS | REFERENCES |
CAST | EXCEPT | ISNULL | REGEXP |
CHECK | EXCLUSIVE | JOIN | REINDEX |
COLLATE | EXISTS | KEY | RELEASE |
COLUMN | EXPLAIN | LEFT | RENAME |
COMMIT | FAIL | LIKE | REPLACE |
CONFLICT | FOR | LIMIT | RESTRICT |
CONSTRAINT | FOREIGN | MATCH | RIGHT |