logo

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.

len of masyvo java

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