需要MySQL表列描述帮助

时间:2011-02-13 15:44:45

标签: php mysql

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(50) NOT NULL,
  `status` varchar(20) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `username` (`username`)
)

请解释一下上面示例中的 UNIQUE KEY'用户名'(用户名')语句以及为什么再次写入('username')?< / p>

2 个答案:

答案 0 :(得分:2)

UNIQUE_KEY行正在“用户名”列上创建一个名为“用户名”的唯一索引。唯一索引仅允许单个记录具有特定值。这对于像用户名这样的行很有用,因为它可以防止使用相同的用户名创建两个用户。

但是,如果您运行此错误,我认为您会收到错误,因为您尚未定义名为username的列。

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(50) NOT NULL,
  `status` varchar(20) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `username` (`username`)
)

答案 1 :(得分:1)

这只是MySQL CREATE TABLE syntax期望的格式。如果你仔细看一下语法,你会看到......

UNIQUE [INDEX|KEY]
  [index_name] [index_type] (index_col_name,...)
  [index_option] ...

换句话说,您使用的是“username”的index_name,它使用“username”字段/列。这可能看起来很奇怪,但是如果你使用复合键,你可能会有类似......的定义

UNIQUE KEY duplicate_lock (user_email, user_name)

...因此您将拥有定义的不同索引名称和列部分。