logo

Clau única de MySQL

Una clau única a MySQL és un únic camp o combinació de camps que garanteix que tots els valors que s'emmagatzemen a la columna siguin únics. Significa que una columna no es pot emmagatzemar valors duplicats . Per exemple, les adreces de correu electrònic i els números de registre dels estudiants a la taula 'informació_estudiant' o el número de contacte dels empleats a la taula 'Empleat' han de ser únics.

igualtat de cadenes en java

MySQL ens permet utilitzar més d'una columna amb restricció ÚNICA en una taula. Pot acceptar a nul valor, però MySQL només permetia un valor nul per columna. Assegura la integritat de la columna o grup de columnes per emmagatzemar diferents valors en una taula.

Necessitats de clau única

  • És útil per evitar que els dos registres emmagatzemen valors idèntics a la columna.
  • Emmagatzema només valors diferents que mantenen la integritat i la fiabilitat de la base de dades per accedir a la informació de manera organitzada.
  • També funciona amb una clau estrangera per preservar la singularitat d'una taula.
  • Pot contenir un valor nul a la taula.

Sintaxi

La sintaxi següent s'utilitza per crear una clau única MySQL .

Si volem crear només una columna de clau única en una taula, utilitzeu la sintaxi de la següent manera:

 CREATE TABLE table_name( col1 datatype, col2 datatype UNIQUE, ... ); 

Si volem crear més d'una columna de clau única en una taula, utilitzeu la sintaxi de la següent manera:

 CREATE TABLE table_name( col1 col_definition, col2 col_definition, ... [CONSTRAINT constraint_name] UNIQUE(column_name(s)) ); 

Si no hem especificat el nom d'una restricció única, MySQL genera automàticament un nom per a aquesta columna. Per tant, es recomana utilitzar el nom de la restricció mentre es crea una taula.

Explicació del paràmetre

La taula següent explica detalladament els paràmetres.

Nom del paràmetre Descripcions
nom_taula És el nom de la taula que anem a crear.
col1, col2 Són els noms de columnes que contenen a la taula.
nom_restricció És el nom de la clau única.
nom(s) column_name Són els noms de columna els que seran una clau única.

Exemple de clau única

L'exemple següent explica com s'utilitza una clau única a MySQL.

Aquesta declaració crea una taula ' Estudiant 2 ' amb una restricció ÚNICA:

 CREATE TABLE Student2 ( Stud_ID int NOT NULL UNIQUE, Name varchar(45), Email varchar(45), Age int, City varchar(25) ); 

A continuació, executeu les consultes d'inserció que s'indiquen a continuació per entendre com 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'); 

Sortida

A la sortida següent, podem veure que el primer INSERT consulta s'executa correctament, però la segona instrucció falla i dóna un error que diu: Duplica l'entrada '1' per a la clau Stud_ID.

Clau única de MySQL

Si voleu definir la clau única activada múltiples columnes , utilitzeu la consulta com a continuació:

 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) ); 

A la sortida, podem veure que el valor de la clau única conté dues columnes que són Roll_No i Correu electrònic .

Clau única de MySQL

Per comprovar-ho, executeu la instrucció següent:

 mysql> SHOW INDEX FROM Student3; 

Aquí, podem veure que la restricció única s'ha afegit correctament a la taula:

Clau única de MySQL

DROP clau única

La instrucció ALTER TABLE també ens permet eliminar la clau única de la taula. La sintaxi següent s'utilitza per eliminar la clau única:

 ALTER TABLE table_name DROP INDEX constraint_name; 

En la sintaxi anterior, el nom_taula és el nom de la taula que volem modificar, i nom_restricció és el nom de la clau única que eliminarem.

Exemple

Aquesta declaració eliminarà el uc_rollno_email restricció de la taula de manera permanent.

 mysql> ALTER TABLE Student3 DROP INDEX uc_rollno_email; 

Podem executar la instrucció SHOW INDEX fins a això.

Clau única que utilitza la instrucció ALTER TABLE

Aquesta declaració ens permet fer la modificació a la taula existent. De vegades volem afegir una clau única a la columna d'una taula existent; aleshores, aquesta declaració s'utilitza per afegir la clau única d'aquesta columna.

Sintaxi

A continuació es mostra la sintaxi de la instrucció ALTER TABLE per afegir una clau única:

 ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_list); 

Exemple

Aquesta declaració crea una taula ' Estudiants 3 ' que no tenen una columna de clau única a la definició de la taula.

 CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25) ); 

Després de crear una taula, si volem afegir una clau única a aquesta taula, hem d'executar la instrucció ALTER TABLE de la següent manera:

 mysql> ALTER TABLE Student3 ADD CONSTRAINT uc_rollno_email UNIQUE(Roll_No, Email); 

Podem veure la sortida on ambdues declaracions s'han executat correctament.

Clau única de MySQL

Per comprovar-ho, executeu la instrucció següent:

 mysql> SHOW INDEX FROM Student3; 

Aquí, podem veure que la restricció única s'ha afegit correctament a la taula:

Clau única de MySQL