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“.
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 .
Norėdami tai patikrinti, atlikite šį teiginį:
mysql> SHOW INDEX FROM Student3;
Čia matome, kad unikalus apribojimas sėkmingai įtrauktas į lentelę:
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.
Norėdami tai patikrinti, atlikite šį teiginį:
mysql> SHOW INDEX FROM Student3;
Čia matome, kad unikalus apribojimas sėkmingai įtrauktas į lentelę: