Tôi có một bảng 'người dùng' cơ bản mà tôi muốn tạo trong MySQL.Sự khác nhau giữa UNIQUE, UNIQUE KEY và CONSTRAINT 'name' UNIQUE là gì?
Tôi không muốn các email trùng lặp hoặc tên người dùng trùng lặp xuất hiện trong cơ sở dữ liệu.
- Cách tốt nhất để ngăn chặn điều này khi tạo bảng là gì?
- Và sự khác biệt giữa những điều sau đây là những gì:
1. UNIQUE (username), UNIQUE (email),
2. KEY UNIQUE (username), UNIQUE KEY (email),
3. CON _login UNIQUE (tên người dùng, email),
Tôi giả định một số trong số này là đồng nghĩa, nhưng tôi đã đọc thông tin xung đột trực tuyến và đang tìm kiếm xác nhận.
Tôi hy vọng ai đó có thể hỗ trợ.
Các 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: chỉ mục cho email, vượt qua có thể sẽ chỉ làm mọi thứ chậm hơn. Ràng buộc duy nhất trên email có thể hoạt động như một chỉ mục bình thường. Lựa chọn trên email sẽ trả về tối đa 1 hàng nên không cần phải lập chỉ mục khi vượt qua. –