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>
答案 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)
...因此您将拥有定义的不同索引名称和列部分。