Unikalus MySQL raktas

Unikalus MySQL raktas

Unikalus MySQL raktas yra vienas laukas arba laukų derinys, užtikrinantis, kad visos stulpelyje saugomos reikšmės bus unikalios. Tai reiškia, kad stulpelyje negalima saugoti pasikartojančios reikšmės . Pavyzdžiui, mokinių el. pašto adresai ir sąrašo numeriai lentelėje „student_info“ arba darbuotojų kontaktiniai numeriai lentelėje „Darbuotojas“ turi būti unikalūs.

MySQL leidžia lentelėje naudoti daugiau nei vieną stulpelį su UNIKALIU apribojimu. Jis gali priimti a nulinis reikšmę, tačiau MySQL stulpelyje leido tik vieną nulinę reikšmę. Tai užtikrina vientisumas stulpelio ar stulpelių grupės, kad išsaugotumėte skirtingas vertes lentelėje.

Unikalaus rakto poreikiai

  • Tai naudinga siekiant neleisti dviem įrašams saugoti identiškų verčių stulpelyje.
  • Jame saugomos tik skirtingos reikšmės, kurios palaiko duomenų bazės vientisumą ir patikimumą, kad būtų galima organizuotai pasiekti informaciją.
  • Jis taip pat veikia su išoriniu raktu, kad išlaikytų lentelės unikalumą.
  • Lentelėje gali būti nulinė reikšmė.

Sintaksė

Ši sintaksė naudojama unikaliam raktui sukurti MySQL .

Jei į lentelę norime sukurti tik vieną unikalų rakto stulpelį, naudokite sintaksę, kaip nurodyta toliau:

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

Jei lentelėje norime sukurti daugiau nei vieną unikalų rakto stulpelį, naudokite sintaksę, kaip nurodyta toliau:

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

Jei nenurodėme unikalaus apribojimo pavadinimo, MySQL automatiškai sugeneruoja šio stulpelio pavadinimą. Taigi, kuriant lentelę, rekomenduojama naudoti apribojimo pavadinimą.

Parametrų paaiškinimas

Toliau pateiktoje lentelėje išsamiai paaiškinami parametrai.

Parametro pavadinimas Aprašymai
lentelės_pavadinimas Tai yra lentelės, kurią ketiname sukurti, pavadinimas.
1 stulpelis, 2 stulpelis Tai yra stulpelių pavadinimai, esantys lentelėje.
apribojimo_pavadinimas Tai unikalaus rakto pavadinimas.
stulpelio_pavadinimai Tai yra stulpelio pavadinimas (-iai), kuris (-ai) bus unikalus (-i) raktas.

Unikalus rakto pavyzdys

Šis pavyzdys paaiškina, kaip MySQL naudojamas unikalus raktas.

Šis teiginys sukuria lentelę ' Studentas 2 ' su UNIKALIU apribojimu:

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

Tada vykdykite toliau pateiktas įterpimo užklausas, kad suprastumėte, kaip tai veikia:

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

Išvestis

Žemiau esančioje išvestyje matome, kad pirmasis Įterpti užklausą vykdomas teisingai, bet antrasis sakinys nepavyksta ir pateikiama klaida, kuri sako: Pasikartokite rakto Stud_ID įrašą „1“.

Unikalus MySQL raktas

Jei norite apibrėžti unikalų raktą keli stulpeliai , naudokite užklausą, kaip nurodyta toliau:

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

Išvestyje matome, kad unikalioje rakto vertėje yra du stulpeliai, kurie yra Roll_No ir El. paštas .

Unikalus MySQL raktas

Norėdami tai patikrinti, atlikite šį teiginį:

 mysql> SHOW INDEX FROM Student3;  

Čia matome, kad unikalus apribojimas sėkmingai įtrauktas į lentelę:

Unikalus MySQL raktas

DROP unikalus raktas

ALTER TABLE sakinys taip pat leidžia išmesti unikalų raktą iš lentelės. Ši sintaksė naudojama norint atsisakyti unikalaus rakto:

 ALTER TABLE table_name DROP INDEX constraint_name;  

Aukščiau pateiktoje sintaksėje lentelės_pavadinimas yra lentelės, kurią norime keisti, pavadinimas ir apribojimo_pavadinimas yra unikalaus rakto, kurį ketiname pašalinti, pavadinimas.

Pavyzdys

Šis pareiškimas pašalins uc_rollno_email suvaržymas nuo stalo visam laikui.

 mysql> ALTER TABLE Student3 DROP INDEX uc_rollno_email;  

Tam galime įvykdyti SHOW INDEX teiginį.

Unikalus raktas naudojant ALTER TABLE pareiškimą

Šis teiginys leidžia mums atlikti esamos lentelės pakeitimus. Kartais norime pridėti unikalų raktą į esamos lentelės stulpelį; tada šis teiginys naudojamas unikaliam to stulpelio raktui pridėti.

Sintaksė

Toliau pateikiama ALTER TABLE sakinio sintaksė, skirta pridėti unikalų raktą:

 ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_list);  

Pavyzdys

Šis teiginys sukuria lentelę ' Mokiniai 3 “, kurių lentelės apibrėžime nėra unikalaus rakto stulpelio.

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

Sukūrę lentelę, jei norime prie šios lentelės pridėti unikalų raktą, turime vykdyti ALTER TABLE teiginį, kaip nurodyta toliau:

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

Matome išvestį, kai abu teiginiai buvo sėkmingai įvykdyti.

Unikalus MySQL raktas

Norėdami tai patikrinti, atlikite šį teiginį:

 mysql> SHOW INDEX FROM Student3;  

Čia matome, kad unikalus apribojimas sėkmingai įtrauktas į lentelę:

Unikalus MySQL raktas