我已经创建了具有如下内容的表查询:
create table table_name(
id int auto_increment,
...
KEY fk_some_name (some_column_name)
)
这个“ key ”有什么作用?我认为写它的人不知道他在做什么。他将其命名为 fk_some_name。我认为他想创建一个外键。搜索了一段时间,没有找到Key关键字单独使用的用法。
最佳答案
在您展示的情况下,它只是一个恰好名为 fk_some_name
的索引。
许多站点不喜欢使用真正的外键约束,但它们可能仍需要列上的索引以帮助优化针对该列的连接。这可能是一种命名约定,用于连接的索引使用 fk_
前缀命名。
同样在 MySQL 中,如果您为已有索引的列定义外键约束,它将使用该索引,而不是创建一个多余的新索引。
KEY
和 INDEX
在 某些 上下文中是 MySQL 中的同义词。
你可以这样做:
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)
如有疑问,请阅读引用文档。
关于mysql - Mysql 中的默认键约束是什么,或者单独使用 "key"关键字有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55797492/