MySQL:创建表时“KEY”代表什么?

时间:2011-01-09 15:28:34

标签: mysql kohana

此代码摘录来自KohanaJobs app附带的database.sql文件。

CREATE TABLE IF NOT EXISTS `roles_users` (
  `user_id` int(10) unsigned NOT NULL,
  `role_id` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`user_id`,`role_id`),
  KEY `fk_role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



CREATE TABLE IF NOT EXISTS `sessions` (
  `session_id` varchar(24) NOT NULL,
  `last_active` int(10) unsigned NOT NULL,
  `contents` text NOT NULL,
  PRIMARY KEY  (`session_id`),
  KEY `last_active` (`last_active`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

为什么上面只使用了KEY?它只是暗示它们被用作FK吗?

2 个答案:

答案 0 :(得分:5)

当使用KEY时,INDEX只有另一个词。

  

KEY通常是INDEX的同义词。当在列定义中给出时,键属性PRIMARY KEY也可以被指定为KEY。这是为了与其他数据库系统兼容而实现的。

(Source)

答案 1 :(得分:1)

'KEY'行只是告诉MySQL该表在'last_active'字段中应该有一个索引

MySQL中的外键是使用via FOREIGN KEY'定义的,尽管除非您使用InnoDB作为存储引擎,否则不会遵循此定义。

有关详细信息(我建议您诚实阅读),您应该查看完整的CREATE TABLE语法页面。