MySQL:“KEY”是什么?创建表时代表什么?
此代码摘录自 KohanaJobs 应用程序附带的 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吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当使用 KEY 时,就只是 INDEX 的另一个词。
(来源)
KEY when used there is just another word for INDEX.
(Source)
“KEY”行只是告诉 MySQL 该表应该在“last_active”字段上有一个索引。
MySQL 中的外键是通过 'FOREIGN KEY 定义的',尽管除非您使用 InnoDB 作为存储引擎,否则不会遵守此定义。
有关更多信息(说实话,我建议您阅读),您应该查看完整的 CREATE TABLE 语法页面。
The 'KEY' line is simply telling MySQL that the table should have an index on the 'last_active' field.
Foreign keys in MySQL are defined using via 'FOREIGN KEY', although this definition is not honoured unless you're using InnoDB as the storage engine.
For more information (I'd recommend a read to be honest), you should take a look at the full CREATE TABLE syntax page.