为什么唯一键的括号中重复了列名?

时间:2016-04-10 08:30:40

标签: mysql

我在phpMyAdmin中创建了一个表。当我导出MySQL数据库时,唯一键定义为UNIQUE KEY `id` (`id`),并在括号中重复列名:

CREATE TABLE IF NOT EXISTS `beitraege` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,  // smallint? (65000!)
  ...
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

为什么在括号中重复列名?那是什么意思?在MySQL中创建一个表(而不是使用phpMyAdmin),何时需要使用此括号重复,是否存在括号中可能包含不同列的名称的情况?

2 个答案:

答案 0 :(得分:1)

您可以定义跨多个列的索引。想象一下,您的表格包含城市名称,并且您希望确保名称是唯一的,但当然您可以在不同的州和国家/地区使用相同名称的城市。您可以通过以下方式实现这一目标:

UNIQUE KEY uniq_state_city (state, city)

答案 1 :(得分:0)

第一个id是索引的名称。括号中的第二个id是列名。见create table