mysql - Mysql 中的默认键约束是什么,或者单独使用 "key"关键字有什么作用?

标签 mysql sql

我已经创建了具有如下内容的表查询:

  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 中,如果您为已有索引的列定义外键约束,它将使用该索引,而不是创建一个多余的新索引。

KEYINDEX某些 上下文中是 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/

相关文章:

mysql - 当我尝试更新数据库命令 EF6 MYSQL 时出现 AlterProcedureException

php - 访问Apache上的MYSQL数据库

sql - 使用 group by 聚合 sql 中的日期时间

mysql - SQL select 条件复杂

mysql - 如何使用 Windows 窗体 (vb.net) 将数据库单列行存储到数组中

mysql - g :select using two combobox in grails

mysql - 根据另一个表中的记录更新 SQL 记录

mySQL JOIN 来自不同表不同记录

c# - SQL Server 数据库连接问题

mysql - mysql 映射