Ключевые слова SQLite
Стандарт SQL определяет большое количество ключевых слов, которые нельзя использовать в качестве имён таблиц, индексов, столбцов, баз данных, пользовательских функций, правил сортировки, модулей виртуальных таблиц или любого другого именованного объекта. Список ключевых слов настолько длинный, что мало кто может их все запомнить. В большинстве случаев при написании SQL-кода безопаснее не использовать английские слова в качестве имён пользовательских объектов.
Если вам нужно использовать ключевое слово в качестве имени, его необходимо заключить в кавычки. В 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.
Для совместимости со старыми SQL-запросами SQLite иногда отклоняется от вышеуказанных правил заключения в кавычки:
Если ключевое слово в одинарных кавычках (например, 'key' или 'glob') используется в контексте, где разрешено использование идентификатора, но не разрешено использование строковой константы, то токен интерпретируется как идентификатор, а не строковая константа.
Если ключевое слово в двойных кавычках (например, "key" или "glob") используется в контексте, где оно не может быть интерпретировано как идентификатор, но разрешено использование строковой константы, то токен интерпретируется как строковая константа, а не идентификатор.
Разработчикам не рекомендуется использовать описанные выше два исключения. Мы подчеркиваем, что они существуют только для того, чтобы старые и неправильно сформированные SQL-запросы работали корректно. Будущие версии SQLite могут выдавать ошибки вместо принятия неправильно сформированных запросов, охваченных вышеуказанными исключениями.
SQLite время от времени добавляет новые ключевые слова, когда появляются новые возможности. Поэтому, чтобы избежать поломки вашего кода в будущих обновлениях, вы обычно должны заключать в кавычки любой идентификатор, который является английским словом, даже если это не обязательно.
Ниже приведен список всех возможных ключевых слов, используемых любой сборкой SQLite, независимо от параметров компиляции. Большинство разумных конфигураций используют большинство или все эти ключевые слова, но некоторые ключевые слова могут быть опущены, когда отключены функции SQL-языка. Приложения могут использовать интерфейсы sqlite3_keyword_count(), sqlite3_keyword_name() и sqlite3_keyword_check() для определения ключевых слов, распознаваемых SQLite во время выполнения. Независимо от конфигурации во время компиляции, любой идентификатор, который не находится в следующем списке из 147 элементов, не является ключевым словом для синтаксического анализа SQL в SQLite:
- ABORT
- ACTION
- ADD
- AFTER
- ALL
- ALTER
- ALWAYS
- ANALYZE
- AND
- AS
- ASC
- ATTACH
- AUTOINCREMENT
- BEFORE
- BEGIN
- BETWEEN
- BY
- CASCADE
- CASE
- CAST
- CHECK
- COLLATE
- COLUMN
- COMMIT
- CONFLICT
- CONSTRAINT
- CREATE
- CROSS
- CURRENT
- CURRENT_DATE
- CURRENT_TIME
- CURRENT_TIMESTAMP
- DATABASE
- DEFAULT
- DEFERRABLE
- DEFERRED
- DELETE
- DESC
- DETACH
- DISTINCT
- DO
- DROP
- EACH
- ELSE
- END
- ESCAPE
- EXCEPT
- EXCLUDE
- EXCLUSIVE
- EXISTS
- EXPLAIN
- FAIL
- FILTER
- FIRST
- FOLLOWING
- FOR
- FOREIGN
- FROM
- FULL
- GENERATED
- GLOB
- GROUP
- GROUPS
- HAVING
- IF
- IGNORE
- IMMEDIATE
- IN
- INDEX
- INDEXED
- INITIALLY
- INNER
- INSERT
- INSTEAD
- INTERSECT
- INTO
- IS
- ISNULL
- JOIN
- KEY
- LAST
- LEFT
- LIKE
- LIMIT
- MATCH
- MATERIALIZED
- NATURAL
- NO
- NOT
- NOTHING
- NOTNULL
- NULL
- NULLS
- OF
- OFFSET
- ON
- OR
- ORDER
- OTHERS
- OUTER
- OVER
- PARTITION
- PLAN
- PRAGMA
- PRECEDING
- PRIMARY
- QUERY
- RAISE
- RANGE
- RECURSIVE
- REFERENCES
- REGEXP
- REINDEX
- RELEASE
- RENAME
- REPLACE
- RESTRICT
- RETURNING
- RIGHT
- ROLLBACK
- ROW
- ROWS
- SAVEPOINT
- SELECT
- SET
- TABLE
- TEMP
- TEMPORARY
- THEN
- TIES
- TO
- TRANSACTION
- TRIGGER
- UNBOUNDED
- UNION
- UNIQUE
- UPDATE
- USING
- VACUUM
- VALUES
- VIEW
- VIRTUAL
- WHEN
- WHERE
- WINDOW
- WITH
- WITHOUT
Последнее изменение страницы 26.11.2022 14:56:19 UTC
SQLite is in the Public Domain.
https://sqlite.org/lang_keywords.html