KEY 关键字是啥意思?
Posted
技术标签:
【中文标题】KEY 关键字是啥意思?【英文标题】:What does the KEY keyword mean?KEY 关键字是什么意思? 【发布时间】:2010-10-29 18:49:19 【问题描述】:在这个 mysql 表定义中:
CREATE TABLE groups (
ug_main_grp_id smallint NOT NULL default '0',
ug_uid smallint default NULL,
ug_grp_id smallint default NULL,
KEY (ug_main_grp_id)
);
KEY
关键字是什么意思?它不是主键,也不是外键,那么它只是一个索引吗?如果是这样,这种使用KEY
创建的索引有什么特别之处?
【问题讨论】:
在 MySQL Server 5.5 中似乎不再使用“KEY”运算符。不确定它何时被删除,但我遇到的一个问题出现在 5.1 上,但不是 5.5。 另见***.com/questions/1401572/… 【参考方案1】:引用create-table - indexes andkeys
INDEX|KEY
所以KEY
通常是INDEX
KEY 通常是 INDEX 的同义词。关键属性 PRIMARY KEY 可以 当在列定义中给出时,也可以仅指定为 KEY。这 实现与其他数据库系统的兼容性。
【讨论】:
注解INDEX|KEY一般不代表INDEX和KEY意思相同,或者KEY是一个INDEX ;) @sergtk:根据 MySQL 手册中的符号,FOO|BAR 意味着可以使用关键字 FOO 或关键字 BAR。 Id est,它们是同义词。 没错! MySql 手册阐明了 INDEX 和 KEY 是同义词——这就是我赞成这个答案的原因。但从答案中可以得出结论,BNF Notation | 总是描述同义词,不仅在这种情况下。 这是不正确的。我在 Quora(见用户 Kristian Kohntopp)quora.com/… 中找到了最佳答案:KEY 是一个约束,INDEX 是实现该约束所必需的数据结构。在实践中,如果您有一个 FK,例如KEY key_name (user_id), CONSTRAINT foreign_key_constraint_name FOREIGN KEY (user_id) REFERENCES auth_user (id)
,那么您可能还需要指定使用什么 INDEX(HASH 与 BTREE)。此示例显示 KEY 和 INDEX 不是同义词。
没有人解释过该关键字的用途,无论它是否已过时。如果我有一个主键,那为什么还要有一个“键”呢?两个索引有什么意义?请赐教,我找不到任何关于此的信息【参考方案2】:
KEY
通常是INDEX
的同义词。当在列定义中给出时,键属性PRIMARY KEY
也可以仅指定为KEY
。这是为了与其他数据库系统兼容而实现的。
column_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
...
参考:http://dev.mysql.com/doc/refman/5.1/en/create-table.html
【讨论】:
以上是关于KEY 关键字是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章