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.
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 .
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:
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.
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: