我有一个基本的“用户”表,我想在MySQL中创建。UNIQUE,UNIQUE KEY和CONSTRAINT'name'UNIQUE之间有什么区别?
我不想重复的电子邮件或重复出现在数据库中的用户名。
- 防止创建表格的最佳方法是什么?
- 而这也正是以下区别:
UNIQUE(用户名), UNIQUE(电子邮件),
2. UNIQUE KEY(用户名), UNIQUE KEY(email),
3. CONSTRAINT ucons _login UNIQUE(用户名,电子邮件),
我认为有些是同义的,但我一直在读在线矛盾的信息,并寻求确认。
我希望有人能帮助。
的SQL:
CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(30) NOT NULL,
pass CHAR(40) NOT NULL,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(40) NOT NULL,
email VARCHAR(60) NOT NULL,
registration_date DATETIME NOT NULL,
user_level TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
active CHAR(32),
PRIMARY KEY (user_id),
UNIQUE (username),
UNIQUE (email),
INDEX login (email, pass),
INDEX full_name (last_name, first_name)
) ENGINE=INNODB;
PS:对于邮件索引,通过将可能只会让事情更慢。电子邮件的唯一限制条件也可以作为普通索引。在电子邮件上选择最多只能返回1行,因此无需通过索引。 – 2012-02-08 21:38:33