Tengo una tabla básica de "usuarios" que quiero crear en MySQL.¿Cuál es la diferencia entre UNIQUE, UNIQUE KEY y CONSTRAINT 'name' UNIQUE?
No quiero que aparezcan correos duplicados o nombres de usuario duplicados en la base de datos.
- ¿Cuál es la mejor manera de evitar esto al crear la mesa?
- Y cuál es la diferencia entre lo siguiente:
1. UNIQUE (nombre de usuario), (e-mail),
2. UNIQUE KEY (nombre de usuario), LLAVE ÚNICA (correo electrónico),
3. CONSTRAINT ucons _login UNIQUE (nombre de usuario, correo electrónico),
Supongo que algunos de estos son sinónimos, sin embargo, he estado leyendo información conflictiva en línea y estaba buscando confirmación.
Espero que alguien pueda ayudar.
El 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: el índice para el correo electrónico, pase probablemente solo haga las cosas más lentas. La restricción única en el correo electrónico también puede funcionar como un índice normal. Selects on email devolverá como máximo 1 fila por lo que no es necesario indexar también el pase. –