CREATE INDEX
[Top]
CREATE INDEX
create-index-stmt: hide
expr: show
literal-value: show
raise-function: show
select-stmt: show
common-table-expression: show
compound-operator: show
join-clause: show
join-constraint: show
join-operator: show
ordering-term: show
result-column: show
table-or-subquery: show
type-name: show
signed-number: show
indexed-column: show
CREATE INDEX命令由关键字“CREATE INDEX”组成,后跟新索引的名称,关键字“ON”,先前创建的索引表的名称以及括号内的表列名称 and/or 用于索引键的表达式。如果包含可选的WHERE子句,那么索引是“partial index”。
每个列名称或表达式后面可以跟一个“ASC”或“DESC”关键字以表示排序顺序。根据数据库文件格式,排序顺序可能会也可能不会被忽略,特别是架构格式编号。“传统”模式格式(1)忽略索引排序顺序。降序索引模式格式(4)考虑了索引排序顺序。只有SQLite 3.3.0(2006-01-11)和更高版本能够理解降序索引格式。为了兼容性,默认情况下,3.3.0和3.7.9之间的SQLite版本使用传统架构格式。3.7.10版(2012-01-16)及更高版本中默认使用较新的模式格式。legacy_file_format编译指示可用于更改为任何版本的SQLite设置特定行为。
可选地跟在每个列名或表达式之后的COLLATE子句定义用于该列中的文本条目的整理序列。默认的整理顺序是在CREATE TABLE语句中为该列定义的整理顺序。或者,如果没有其他定义的整理顺序,则使用内置的BINARY整理顺序。
可以附加到单个表的索引数量没有任何限制。索引中的列数限制为由sqlite3_limit(SQLITE_LIMIT_COLUMN,...)设置的值。
如果在CREATE和INDEX之间出现UNIQUE关键字,则不允许重复索引条目。任何尝试插入重复条目都会导致错误。出于唯一索引的目的,所有NULL值被认为与所有其他NULL值不同,因此是唯一的。这是对SQL-92标准的两种可能的解释之一(标准中的语言是不明确的),PostgreSQL,MySQL,Firebird和Oracle的解释是其中之一。Informix和Microsoft SQL Server遵循标准的其他解释。
如果存在可选的IF NOT EXISTS子句并且存在另一个具有相同名称的索引,则该命令将变为空操作。
使用DROP INDEX命令删除索引。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com