CREATE INDEX состоит из ключевых слов "CREATE INDEX", сопровождаемых названием нового индекса, ключевого слова "ON", названия ранее составленной таблицы, которая должна быть внесена в указатель и списка названий столбца таблицы и/или выражений, которые используются для ключа индекса. Если дополнительный оператор Where включен, то индекс "частичный".
Если есть опция IF NOT EXISTS и другой индекс с тем же самым именем уже существует, то эта команда ничего не делает.
Нет никаких произвольных ограничений на количество индексов, которые могут быть присоединены к единственной таблице. Количество колонок в индексе ограничивается набором значений sqlite3_limit( SQLITE_LIMIT_COLUMN,...).
Индекс удаляется командой DROP INDEX.
Если ключевое слово UNIQUE появляется между CREATE и INDEX, тогда дублирующие элементы индекса не позволены. Любая попытка вставить двойной вход приведет к ошибке.
В целях уникальных индексов все значения NULL считают отличающимися от всех других значений NULL и таким образом уникальными. Это одна из двух возможных интерпретаций стандарта SQL-92 (язык в стандарте неоднозначен). Интерпретация, используемая SQLite, является интерпретацией, сопровождаемой PostgreSQL, MySQL, Firebird и Oracle. Informix и Microsoft SQL Server следуют другой интерпретации стандарта, которая утверждает, что все значения NULL равны друг другу.
Выражения в индексе не могут сослаться на другие таблицы и не могут использовать подзапросы или функции, результат которых мог бы измениться (кроме random() или sqlite_version()). Выражения в индексе могут только обратиться к колонкам в таблице, которая вносится в указатель. Индексы по выражению не будут работать с версиями SQLite до version 3.9.0 (2015-10-14). См. подробности для получения дополнительной информации об использовании общих выражений в CREATE INDEX.
Каждое имя столбца или выражение могут сопровождаться одним из ключевых слов "ASC" или "DESC", чтобы указать на порядок сортировки. Порядок сортировки может или не может быть проигнорирован в зависимости от формата файла базы данных, и в особенности номера формата схемы. "Устаревший" формат (1) схемы игнорирует порядок сортировки индекса. Спускающийся формат (4) схемы индекса принимает порядок сортировки индекса во внимание. Только версии SQLite 3.3.0 (2006-01-11) и позже в состоянии понять спускающийся формат индекса. Для совместимости версии SQLite между 3.3.0 и 3.7.9 использует устаревший формат схемы по умолчанию. Более новый формат схемы используется по умолчанию в версии 3.7.10 (2012-01-16) и позже. legacy_file_format pragma может применяться для изменения определенного поведения для любой версии SQLite.
NULLS FIRST и NULLS LAST не поддерживается для индексов. Для сортировки целей SQLite полагает, что NULL меньше, чем все другие значения. Следовательно, значения NULL всегда появляются в начале индекса ASC и в конце индекса DESC.
Параметр COLLATE произвольно после каждого имени столбца или выражения определяет последовательность сопоставления, используемую для ввода текста в той колонке. Последовательность сопоставления по умолчанию это последовательность сопоставления, определенная для той колонки в CREATE TABLE. Или если никакая последовательность сопоставления иначе не определяется, встроенная последовательность сопоставления BINARY используется.