Mysql 关键词是什么意思?

Mysql 关键词是什么意思?,mysql,indexing,Mysql,Indexing,在此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) ); 键关键字是什么意思?它不是主键,也不是外键,所以它只是一个索引吗?如果是这样,使用键创建的这种索引有什么特别之处?引用 所以键是一个索引;)

在此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)
);
关键字是什么意思?它不是主键,也不是外键,所以它只是一个索引吗?如果是这样,使用
键创建的这种索引有什么特别之处?

引用


所以
是一个
索引
;)

通常是
索引
的同义词。键属性
主键
也可以在列定义中指定为仅
。这是为了与其他数据库系统兼容而实现的

column_definition:
      data_type [NOT NULL | NULL] [DEFAULT default_value]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      ...

Ref:

看起来好像MySQL Server 5.5中不再使用“KEY”操作符。不确定它是什么时候被删除的,但我在5.1中遇到了一个问题,而不是5.5。另请参见符号{INDEX | KEY}通常并不意味着INDEX和KEY具有相同的含义,或者KEY是一个INDEX;)@sergtk:根据MySQL手册中的符号,FOO | BAR表示可以使用关键字FOO或关键字BAR。没错,它们是同义词。没错!MySql手册澄清了索引和键是同义词——这就是为什么我对答案投了赞成票。但从答案可以得出结论,BNF符号{|}总是描述同义词,不仅在这种情况下,这是不正确的。我在Quora中找到了最好的答案(参见用户Kristian Kohntopp):键是一个约束,索引是实现该约束所必需的数据结构。实际上,如果您有一个FK,例如
KEY-KEY-KEY\u-name(user\u-id),那么您可能还需要指定所使用的索引(HASH vs-BTREE)。这个例子表明键和索引不是同义词。没有人解释过这个关键字的用途,不管它是否过时。如果我有一个主键,那么为什么我也有一个“键”?两个索引的意义是什么?请告诉我我找不到这方面的任何东西
column_definition:
      data_type [NOT NULL | NULL] [DEFAULT default_value]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      ...