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

发布于 2024-10-10 18:41:51 字数 611 浏览 0 评论 0 原文

此代码摘录自 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吗?

This code extract is from database.sql file that comes with KohanaJobs app.

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;

Why just KEY has been used above? Is it just to imply that they are used as FKs?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往日情怀 2024-10-17 18:41:51

当使用 KEY 时,就只是 INDEX 的另一个词。

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

(来源)

KEY when used there is just another word for INDEX.

KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY can also be specified as just KEY when given in a column definition. This was implemented for compatibility with other database systems.

(Source)

酸甜透明夹心 2024-10-17 18:41:51

“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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文