Una clave única en MySQL es un campo único o una combinación de campos que garantiza que todos los valores que se almacenarán en la columna serán únicos. Significa que una columna no puede almacenar valores duplicados . Por ejemplo, las direcciones de correo electrónico y los números de lista de los estudiantes en la tabla 'student_info' o el número de contacto de los empleados en la tabla 'Empleado' deben ser únicos.
patrón de diseño de fábrica
MySQL nos permite utilizar más de una columna con restricción ÚNICA en una tabla. Puede aceptar un nulo valor, pero MySQL permitía sólo un valor nulo por columna. Asegura la integridad de la columna o grupo de columnas para almacenar diferentes valores en una tabla.
Necesidades de clave única
- Es útil para evitar que los dos registros almacenen valores idénticos en la columna.
- Almacena solo valores distintos que mantienen la integridad y confiabilidad de la base de datos para acceder a la información de manera organizada.
- También funciona con una clave externa para preservar la singularidad de una tabla.
- Puede contener un valor nulo en la tabla.
Sintaxis
La siguiente sintaxis se utiliza para crear una clave única en mysql .
Si queremos crear solo una columna de clave única en una tabla, use la sintaxis como se muestra a continuación:
CREATE TABLE table_name( col1 datatype, col2 datatype UNIQUE, ... );
Si queremos crear más de una columna de clave única en una tabla, use la sintaxis como se muestra a continuación:
CREATE TABLE table_name( col1 col_definition, col2 col_definition, ... [CONSTRAINT constraint_name] UNIQUE(column_name(s)) );
Si no hemos especificado el nombre de una restricción única, MySQL genera un nombre para esta columna automáticamente. Por lo tanto, se recomienda utilizar el nombre de la restricción al crear una tabla.
Explicación del parámetro
La siguiente tabla explica los parámetros en detalle.
Nombre del parámetro | Descripciones |
---|---|
nombre de la tabla | Es el nombre de la tabla que vamos a crear. |
col1, col2 | Son los nombres de las columnas que contienen la tabla. |
nombre_restricción | Es el nombre de la clave única. |
nombre_columna(s) | Son los nombres de las columnas los que serán una clave única. |
Ejemplo de clave única
El siguiente ejemplo explica cómo se utiliza una clave única en MySQL.
Esta declaración crea una tabla ' Estudiante2 ' con una restricción ÚNICA:
CREATE TABLE Student2 ( Stud_ID int NOT NULL UNIQUE, Name varchar(45), Email varchar(45), Age int, City varchar(25) );
A continuación, ejecute las consultas de inserción que se enumeran a continuación para comprender cómo funciona:
mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Peter', '[email protected]', 22, 'Texas'), (2, 'Suzi', '[email protected]', 24, 'California'), (3, 'Joseph', '[email protected]', 23, 'Alaska'); mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Stephen', '[email protected]', 22, 'Texas');
Producción
En el siguiente resultado, podemos ver que la primera INSERTAR consulta se ejecuta correctamente, pero la segunda declaración falla y da un error que dice: Entrada duplicada '1' para la clave Stud_ID.
Si desea definir la clave única en múltiples columnas , utilice la consulta de la siguiente manera:
CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25), CONSTRAINT uc_rollno_email Unique(Roll_No, Email) );
En el resultado, podemos ver que el valor de clave única contiene dos columnas que son Rollo_No y Correo electrónico .
Para verificar esto, ejecute la siguiente declaración:
mysql> SHOW INDEX FROM Student3;
Aquí podemos ver que la restricción única se agregó correctamente a la tabla:
SOLTAR clave única
La declaración ALTER TABLE también nos permite eliminar la clave única de la tabla. Se utiliza la siguiente sintaxis para eliminar la clave única:
ALTER TABLE table_name DROP INDEX constraint_name;
En la sintaxis anterior, el nombre de la tabla es el nombre de la tabla que queremos modificar, y nombre_restricción es el nombre de la clave única que vamos a eliminar.
Ejemplo
Esta declaración eliminará la uc_rollno_email restricción de la tabla de forma permanente.
mysql> ALTER TABLE Student3 DROP INDEX uc_rollno_email;
Podemos ejecutar la instrucción SHOW INDEX para hacer esto.
Clave única usando la declaración ALTER TABLE
Esta declaración nos permite hacer la modificación en la tabla existente. A veces queremos agregar una clave única a la columna de una tabla existente; luego, esta declaración se usa para agregar la clave única para esa columna.
Sintaxis
A continuación se muestra la sintaxis de la instrucción ALTER TABLE para agregar una clave única:
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_list);
Ejemplo
Esta declaración crea una tabla ' Estudiantes3 ' que no tienen una columna de clave única en la definición de la tabla.
CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25) );
Después de crear una tabla, si queremos agregar una clave única a esta tabla, debemos ejecutar la instrucción ALTER TABLE como se muestra a continuación:
mysql> ALTER TABLE Student3 ADD CONSTRAINT uc_rollno_email UNIQUE(Roll_No, Email);
Podemos ver el resultado donde ambas declaraciones se ejecutaron correctamente.
Para verificar esto, ejecute la siguiente declaración:
mysql> SHOW INDEX FROM Student3;
Aquí podemos ver que la restricción única se agregó correctamente a la tabla: