我创建了具有以下内容的表查询:
create table table_name(
id int auto_increment,
...
KEY fk_some_name (some_column_name)
)
此“键”有什么作用?我认为写这篇文章的人不知道他在做什么。他将其命名为fk_some_name。我认为他想创建一个外键。我搜索了一段时间,但没有找到单独使用Key关键字的用法。
答案 0 :(得分:2)
在您显示的情况下,它只是一个恰好被命名为fk_some_name
的索引。
许多站点不喜欢使用真正的外键约束,但是它们可能仍需要在该列上建立索引以帮助优化针对该列的联接。可能是一种命名约定,用于连接的索引使用fk_
前缀命名。
此外,在MySQL中,如果您为已经具有索引的列定义外键约束,它将使用该索引而不是创建多余的新索引。
KEY
和INDEX
是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 table
,KEY
是INDEX
的同义词。因此,这将在一个列上创建一个名为“ fk_some_name”的索引。