Mysql中的默认键约束是什么?或者单独使用“ key”关键字是做什么的?

时间:2019-04-22 16:17:21

标签: mysql sql

我创建了具有以下内容的表查询:

  create table table_name(
  id int auto_increment,
  ...
  KEY fk_some_name (some_column_name)
  )

此“键”有什么作用?我认为写这篇文章的人不知道他在做什么。他将其命名为fk_some_name。我认为他想创建一个外键。我搜索了一段时间,但没有找到单独使用Key关键字的用法。

2 个答案:

答案 0 :(得分:2)

在您显示的情况下,它只是一个恰好被命名为fk_some_name的索引。

许多站点不喜欢使用真正的外键约束,但是它们可能仍需要在该列上建立索引以帮助优化针对该列的联接。可能是一种命名约定,用于连接的索引使用fk_前缀命名。

此外,在MySQL中,如果您为已经具有索引的列定义外键约束,它将使用该索引而不是创建多余的新索引。

KEYINDEX是MySQL在 some 上下文中的同义词。

您可以这样做:

CREATE TABLE ... ( ... {INDEX|KEY} name (some_column_name) )

您可以这样做:

ALTER TABLE ... ADD {INDEX|KEY} name (some_column_name)

不能在其他一些情况下不能互换使用:

仅使用KEY,不使用INDEX:

CREATE TABLE ... ( ... FOREIGN KEY name (col) REFERENCES ... )

仅使用INDEX,而不使用KEY:

CREATE INDEX name ON tablename (column_name)

如有疑问,请阅读参考文档。

答案 1 :(得分:0)

根据MySQL documentation for create tableKEYINDEX的同义词。因此,这将在一个列上创建一个名为“ fk_some_name”的索引。

相关问题