En unik nøkkel i MySQL er et enkelt felt eller en kombinasjon av felt som sikrer at alle verdier som lagres i kolonnen vil være unike. Det betyr at en kolonne ikke kan lagre dupliserte verdier . For eksempel bør e-postadressene og rullenumrene til studenter i 'student_info'-tabellen eller kontaktnummeret til ansatte i 'Ansatt'-tabellen være unike.
java visualizer
MySQL lar oss bruke mer enn én kolonne med UNIK begrensning i en tabell. Den kan godta en null verdi, men MySQL tillot bare én nullverdi per kolonne. Det sikrer integritet av kolonnen eller gruppen av kolonner for å lagre forskjellige verdier i en tabell.
Behov for unik nøkkel
- Det er nyttig for å forhindre at de to postene lagrer identiske verdier i kolonnen.
- Den lagrer kun distinkte verdier som opprettholder integriteten og påliteligheten til databasen for å få tilgang til informasjonen på en organisert måte.
- Det fungerer også med en fremmednøkkel for å bevare det unike ved et bord.
- Den kan inneholde nullverdi i tabellen.
Syntaks
Følgende syntaks brukes til å lage en unik nøkkel inn MySQL .
Hvis vi bare vil lage én unik nøkkelkolonne i en tabell, bruk syntaksen som nedenfor:
CREATE TABLE table_name( col1 datatype, col2 datatype UNIQUE, ... );
Hvis vi ønsker å lage mer enn én unik nøkkelkolonne i en tabell, bruk syntaksen som nedenfor:
CREATE TABLE table_name( col1 col_definition, col2 col_definition, ... [CONSTRAINT constraint_name] UNIQUE(column_name(s)) );
Hvis vi ikke har spesifisert navnet for en unik begrensning, genererer MySQL automatisk et navn for denne kolonnen. Så det anbefales å bruke begrensningsnavnet mens du oppretter en tabell.
Parameter Forklaring
Tabellen nedenfor forklarer parameterne i detalj.
Parameternavn | Beskrivelser |
---|---|
tabellnavn | Det er navnet på bordet vi skal lage. |
kol1, kol2 | Det er kolonnenavnene som inneholder i tabellen. |
constraint_name | Det er navnet på den unike nøkkelen. |
kolonnenavn(e) | Det er kolonnenavnet(e) som skal være en unik nøkkel. |
Unikt nøkkeleksempel
Følgende eksempel forklarer hvordan en unik nøkkel brukes i MySQL.
Denne setningen lager en tabell ' Student 2 ' med en UNIK begrensning:
CREATE TABLE Student2 ( Stud_ID int NOT NULL UNIQUE, Name varchar(45), Email varchar(45), Age int, City varchar(25) );
Deretter utfører du innsettingsspørringene som er oppført nedenfor for å forstå hvordan det fungerer:
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');
Produksjon
I utgangen nedenfor kan vi se at den første INSERT spørring kjøres riktig, men den andre setningen mislykkes og gir en feilmelding som sier: Duplicate entry '1' for key Stud_ID.
Hvis du ønsker å definere den unike nøkkelen på flere kolonner , bruk søket som nedenfor:
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 utgangen kan vi se at den unike nøkkelverdien inneholder to kolonner som er Roll_No og E-post .
For å bekrefte dette, utfør følgende setning:
mysql> SHOW INDEX FROM Student3;
Her kan vi se at den unike begrensningen har blitt lagt til i tabellen:
DROP Unik nøkkel
ALTER TABLE-setningen lar oss også slippe den unike nøkkelen fra tabellen. Følgende syntaks brukes til å slippe den unike nøkkelen:
ALTER TABLE table_name DROP INDEX constraint_name;
I syntaksen ovenfor er tabellnavn er navnet på tabellen som vi ønsker å endre, og constraint_name er navnet på den unike nøkkelen vi skal fjerne.
Eksempel
Denne uttalelsen vil fjerne uc_rollno_email begrensning fra tabellen permanent.
mysql> ALTER TABLE Student3 DROP INDEX uc_rollno_email;
Vi kan utføre SHOW INDEX-setningen til dette.
Unik nøkkel som bruker ALTER TABLE-erklæring
Denne uttalelsen lar oss gjøre endringen i den eksisterende tabellen. Noen ganger ønsker vi å legge til en unik nøkkel til kolonnen i en eksisterende tabell; deretter brukes denne setningen til å legge til den unike nøkkelen for den kolonnen.
Syntaks
Følgende er syntaksen til ALTER TABLE-setningen for å legge til en unik nøkkel:
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_list);
Eksempel
Denne setningen lager en tabell ' Studenter 3 ' som ikke har noen unik nøkkelkolonne i tabelldefinisjonen.
CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25) );
Etter å ha opprettet en tabell, hvis vi ønsker å legge til en unik nøkkel til denne tabellen, må vi utføre ALTER TABLE-setningen som nedenfor:
mysql> ALTER TABLE Student3 ADD CONSTRAINT uc_rollno_email UNIQUE(Roll_No, Email);
Vi kan se utdataene der begge setningene ble utført.
For å bekrefte dette, utfør følgende setning:
mysql> SHOW INDEX FROM Student3;
Her kan vi se at den unike begrensningen har blitt lagt til i tabellen: