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 关键字是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Key 是啥意思?

key和value 分别指的是啥

C++中的restrict关键字是啥意思?

OCaml 中的“and”关键字是啥意思?

“__block”关键字是啥意思?

覆盖方法时 virtual 关键字是啥意思?