2011-01-09 84 views
0

此代碼解壓縮來自KohanaJobs應用程序附帶的database.sql文件。MySQL:創建表時,「KEY」代表什麼?

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嗎?

+0

爲什麼顯示寬度10如果你不使用zerofill?爲什麼不把它聲明爲:user_id int unsigned not null?哦,爲什麼反勾號呢? – 2011-01-09 15:33:06

+0

@ f00 - 抱歉沒有得到你的意思? – coder9 2011-01-09 15:50:37

+1

http://pastie.org/1442882 – 2011-01-09 16:23:28

回答

1

'key' 的行只是告訴MySQL的,該表應在 'last_active' 字段有指數

MySQL中的外鍵使用通過'FOREIGN KEY'定義,儘管除非您使用InnoDB作爲存儲引擎,否則此定義不受尊重。

欲瞭解更多信息(我建議閱讀說實話),你應該看看完整的CREATE TABLE語法頁面。

5

當使用KEY時,INDEX只是另一個詞。

KEY通常是INDEX的同義詞。當在列定義中給出時,鍵屬性PRIMARY KEY也可以被指定爲KEY。這是爲了與其他數據庫系統兼容而實現的。

(Source)