随時翻訳を続けています。
CREATE INDEX
| sql-statement ::= | CREATE [UNIQUE] INDEX [IF
NOT EXISTS] [database-name .] index-name ON table-name ( column-name [, column-name]* ) |
| column-name ::= | name [ COLLATE collation-name] [ ASC | DESC ] |
CREATE INDEX コマンドは、キーワード "CREATE INDEX" 、それに続けて新しいインデックス名、 キーワード "ON" 、インデックスを付ける既存のテーブル名、カッコで括られた インデックスキーを適用するテーブル内のカラムの名前のリストから成り立ちます。 それぞれのカラム名は、ソートオーダーを示す "ASC" あるいは "DESC" キーワードのうち一つを 後に続けることができます。 しかし、現在の実装では、ソートオーダーが無視されます。 ソートは常に昇順で実行されます。
それぞれのカラム名の後に続く COLLATE 句は、そのカラムのテキストエントリーで使われる 照合シーケンスを定義します。 デフォルトの照合シーケンスは、CREATE TABLE ステートメントでそのカラムに定義された 照合シーケンスです。 あるいは、ほかに照合シーケンスが定義されない場合、組み込みのバイナリー照合シーケンスが 使われます。
一つのテーブルに付加できるインデックスの数、また、インデックスのカラムの数について 明示的な制限はありません。
UNIQUE キーワードが CREATE と INDEX の間にある場合、重複したインデックス項目は 許されません。 重複する項目の挿入を試みるとエラーが返ります。
それぞれのCREATE INDEX ステートメントの正確なテキストは、インデックスを付けるテーブルが 一時的なものかどうかによって sqlite_master または sqlite_temp_master テーブルに格納されます。 データベースが開かれるときはいつも、すべての CREATE INDEX ステートメントが sqlite_master テーブルから読み込まれ、SQLite のインデックスレイアウトの内部表現を 再現するために使われます。
オプションの IF NOT EXISTS 句が存在し且つ同名のインデックスがすでに存在する場合、 このコマンドはノーオペレーションとなります。
インデックスは、DROP INDEX コマンドで削除します。