Small. Fast. Reliable.
Choose any three.

SQL As Understood By SQLite

[Top]

SQLite Keywords

The SQL standard specifies a large number of keywords which may not be used as the names of tables, indices, columns, databases, user-defined functions, collations, virtual table modules, or any other named object. The list of keywords is so long that few people can remember them all. For most SQL code, your safest bet is to never use any English language word as the name of a user-defined object.

If you want to use a keyword as a name, you need to quote it. There are four ways of quoting keywords in SQLite:

'keyword' A keyword in single quotes is a string literal.
"keyword" A keyword in double-quotes is an identifier.
[keyword] A keyword enclosed in square brackets is an identifier. This is not standard SQL. This quoting mechanism is used by MS Access and SQL Server and is included in SQLite for compatibility.
`keyword` A keyword enclosed in grave accents (ASCII code 96) is an identifier. This is not standard SQL. This quoting mechanism is used by MySQL and is included in SQLite for compatibility.

For resilience when confronted with historical SQL statements, SQLite will sometimes bend the quoting rules above:

Programmers are cautioned not to use the two exceptions described in the previous bullets. We emphasize that they exist only so that old and ill-formed SQL statements will run correctly. Future versions of SQLite might raise errors instead of accepting the malformed statements covered by the exceptions above.

SQLite adds new keywords from time to time when it takes on new features. So to prevent your code from being broken by future enhancements, you should normally quote any identifier that is an English language word, even if you do not have to.

The list below shows all possible keywords used by any build of SQLite regardless of compile-time options. Most reasonable configurations use most or all of these keywords, but some keywords may be omitted when SQL language features are disabled. Applications can use the sqlite3_keyword_count(), sqlite3_keyword_name(), and sqlite3_keyword_check() interfaces to determine the keywords recognized by SQLite at run-time. Regardless of the compile-time configuration, any identifier that is not on the following 145 element list is not a keyword to the SQL parser in SQLite:

  1. ABORT
  2. ACTION
  3. ADD
  4. AFTER
  5. ALL
  6. ALTER
  7. ALWAYS
  8. ANALYZE
  9. AND
  10. AS
  11. ASC
  12. ATTACH
  13. AUTOINCREMENT
  14. BEFORE
  15. BEGIN
  16. BETWEEN
  17. BY
  18. CASCADE
  19. CASE
  20. CAST
  21. CHECK
  22. COLLATE
  23. COLUMN
  24. COMMIT
  25. CONFLICT
  26. CONSTRAINT
  27. CREATE
  28. CROSS
  29. CURRENT
  30. CURRENT_DATE
  31. CURRENT_TIME
  32. CURRENT_TIMESTAMP
  33. DATABASE
  34. DEFAULT
  35. DEFERRABLE
  36. DEFERRED
  37. DELETE
  38. DESC
  39. DETACH
  40. DISTINCT
  41. DO
  42. DROP
  43. EACH
  44. ELSE
  45. END
  46. ESCAPE
  47. EXCEPT
  48. EXCLUDE
  49. EXCLUSIVE
  50. EXISTS
  51. EXPLAIN
  52. FAIL
  53. FILTER
  54. FIRST
  55. FOLLOWING
  56. FOR
  57. FOREIGN
  58. FROM
  59. FULL
  60. GENERATED
  61. GLOB
  62. GROUP
  63. GROUPS
  64. HAVING
  65. IF
  66. IGNORE
  67. IMMEDIATE
  68. IN
  69. INDEX
  70. INDEXED
  71. INITIALLY
  72. INNER
  73. INSERT
  74. INSTEAD
  75. INTERSECT
  76. INTO
  77. IS
  78. ISNULL
  79. JOIN
  80. KEY
  81. LAST
  82. LEFT
  83. LIKE
  84. LIMIT
  85. MATCH
  86. NATURAL
  87. NO
  88. NOT
  89. NOTHING
  90. NOTNULL
  91. NULL
  92. NULLS
  93. OF
  94. OFFSET
  95. ON
  96. OR
  97. ORDER
  98. OTHERS
  99. OUTER
  100. OVER
  101. PARTITION
  102. PLAN
  103. PRAGMA
  104. PRECEDING
  105. PRIMARY
  106. QUERY
  107. RAISE
  108. RANGE
  109. RECURSIVE
  110. REFERENCES
  111. REGEXP
  112. REINDEX
  113. RELEASE
  114. RENAME
  115. REPLACE
  116. RESTRICT
  117. RIGHT
  118. ROLLBACK
  119. ROW
  120. ROWS
  121. SAVEPOINT
  122. SELECT
  123. SET
  124. TABLE
  125. TEMP
  126. TEMPORARY
  127. THEN
  128. TIES
  129. TO
  130. TRANSACTION
  131. TRIGGER
  132. UNBOUNDED
  133. UNION
  134. UNIQUE
  135. UPDATE
  136. USING
  137. VACUUM
  138. VALUES
  139. VIEW
  140. VIRTUAL
  141. WHEN
  142. WHERE
  143. WINDOW
  144. WITH
  145. WITHOUT