Hvordan du bruker unik begrensning i sqlite

Hvordan du bruker unik begrensning i sqlite
I SQLite er det forskjellige begrensninger, som begrenser dataene til kolonnen etter noen regler, når dataene settes inn, oppdatert eller endret. Noen av de vanlige begrensningene for databasene som støttes av SQLite er unike, primære nøkkel, utenlandske nøkkel, sjekk og ikke null.

SQLite er en RDBMS, som brukes til å administrere dataene til databasen, som er plassert i radene og kolonnene i tabellen. Denne oppskrivningen hjelper oss å forstå hva som er unik begrensning i sqlite, samt hvordan den fungerer i SQLite.

Hva er den unike begrensningen i sqlite

En unik begrensning sikrer at dataene i kolonnen skal være unike, noe som betyr at ingen felt i samme kolonne inneholder lignende verdier. For eksempel oppretter vi en kolonne, e -post og definerer den med den unike begrensningen, slik at den vil sikre at ingen e -post satt inn i kolonnen skal være den samme som den andre posten av kolonnen.

Hva er forskjellen mellom den unike og den primære nøkkelbegrensningen i sqlite

Både begrensninger, primærnøkkel og unik sikrer at ingen duplikatoppføring skal settes inn i tabellen, men forskjellen er; Tabellen skal bare inneholde en primærnøkkel, mens den unike begrensningen kan brukes til mer enn en kolonne i samme tabell.

Hvor unik begrensning defineres i sqlite

Den unike begrensningen kan defineres enten på enkeltkolonnen eller flere kolonner i SQLite.

Hvor unik begrensning defineres til en kolonne

En unik begrensning kan defineres som en kolonne, der den kan sikre at ingen lignende verdier kan komme inn i noe felt i den kolonnen. Den generelle syntaksen for å definere den unike begrensningen på en kolonne er:

Lage tabell tabell_navn (kolonne1 datatype unik, kolonne2 datatype);

Forklaringen på dette er:

  • Bruk Create Table Clause for å opprette en tabell og erstatte tabellenavnet
  • Definer et kolonnenavn med sin datatype ved å erstatte kolonnen1 og datatype
  • Bruk den unike leddet til en kolonne som du skal definere med denne begrensningen
  • Definer de andre kolonnene med datatypene sine

For å forstå denne syntaksen, bør du vurdere et eksempel på å lage en tabell for Students_data som har to kolonner, den ene er av std_id og den andre er av st_name, skulle definere kolonnen, std_id, med den unike begrensningen slik at ingen av studentene kan ha Lignende std_id som:

Lag tabell studenter_data (std_id heltall unik, std_name tekst);

Sett inn verdiene ved å bruke:

Sett inn studenters_dataverdier (1, 'John'), (2, 'Paul');

Nå vil vi legge til et annet studentnavn der STD_ID er 1:

Sett inn studenters_dataverdier (1, 'Hannah');

Vi kan se fra utgangen, den genererte feilen ved å sette inn verdien av STD_ID fordi den ble definert med den unike begrensningen, noe som betyr at ingen verdi kan dupliseres med de andre verdiene i den kolonnen.

Hvordan er den unike begrensningen definert for flere kolonner

Vi kan definere flere kolonner med den unike begrensningen, som sikrer at det ikke er noen duplisering av dataene som er satt inn i alle rader samtidig. Hvis vi for eksempel må velge byer for en tur til tre grupper av mennesker (A, B og C), kan vi ikke tildele samme by til alle de tre gruppene, kan dette gjøres ved å bruke den unike begrensningen.

For eksempel kan disse tre scenariene være mulig:

Gruppe_a Gruppe_b Gruppe_c
Florida Florida Boston
New York Florida Florida
Florida Florida Florida

Men følgende scenario er ikke mulig hvis vi bruker de unike begrensningene:

Gruppe_a Gruppe_b Gruppe_c
Florida Florida Florida

Den generelle syntaksen ved å bruke den unike begrensningen til flere kolonner er:

Lage tabell tabell_navn (kolonne1 datatype, kolonne2, unik (kolonne1, kolonne2));

Forklaringen på dette er:

  • Bruk Create Table Clause for å opprette en tabell og erstatte tabellenavnet med navnet
  • Definer et kolonnenavn med sin datatype ved å erstatte kolonnen1 og datatype
  • Bruk den unike leddet og skriv inn navnene på kolonnene i () som du skal definere med denne begrensningen

For å forstå dette vil vi vurdere eksemplet ovenfor, og vil kjøre følgende kommando for å lage en tabell over Trip_Data:

Opprett tabell Trip_Data (GROUP_A TEXT, GROUP_B TEXT, GROUP_C TEXT, unik (group_a, group_b, group_c));

Vi vil sette inn verdiene ved å tildele byene deres:

Sett inn Trip_Data -verdier ('Florida', 'Florida', 'Boston'), ('New York', 'Florida', 'Florida'), ('Florida', 'Florida', 'Florida');

Nå vil vi sette inn den samme byen i alle kolonnene til Trip_Data:

Sett inn Trip_Data -verdier ('Florida', 'Florida', 'Florida');

Vi kan se fra utgangen, duplisering av dataene i alle kolonnene som er definert av den unike begrensningen er ikke tillatt, og den genererte feilen i den unike begrensningen mislyktes.

Hvordan legge til den unike begrensningen til det eksisterende tabellen

I SQLite kan vi legge til begrensningen ved å bruke Alter -kommandoen, for eksempel har vi en tabell Students_data med kolonner std_id, std_name, vi ønsker å legge til en begrensning STD_ID til tabellen, Students_data:

  • Bruk kommandoen “Pragma Foreign Keys = Off” for å av de utenlandske nøkkelbegrensningene
  • Bruk kommandoen "Begynn transaksjon;"
  • Bruk kommandoen "Alter Table Table_Name Rename til Old_Table;" For å gi nytt navn til selve tabellen
  • Lag en tabell igjen med forrige navn, men mens du definerer kolonne denne gangen, definerer du også de unike begrensningene
  • Kopier dataene fra forrige tabell (hvis navn er endret), til den nye tabellen (som har forrige navn)
  • Slett den første tabellen (hvis navn ble endret)
  • Bruk "forpliktelse"
  • Bruk kommandoen “Pragma Foreign Keys = ON”, til på de utenlandske nøklene begrensninger
Begynn transaksjon;
Endre tabell studenter_data gi nytt navn til new_students_data;
Lag tabellstudenter_data (id heltall ikke null unik, navnetekst ikke null, fremmøte heltall ikke null);
Sett inn studenters_data velg * fra new_students_data;
Slipp tabell new_students_data;
BEGÅ;
Pragma Foreign_Keys = ON;

Hvordan du slipper den unike begrensningen til det eksisterende bordet

I likhet med andre databaser kan vi ikke slippe begrensningen ved å bruke slipp- og endre kommandoer, for å slette de unike begrensningene vi skal følge den samme prosedyren som vi valgte å legge til begrensningen i en eksisterende tabell og omdefinere strukturen i tabellen.

La vurdere eksemplet ovenfor igjen, og fjerne de unike begrensningene fra det:

Pragma Foreign_Keys = av;
Begynn transaksjon;
Endre tabell studenter_data gi nytt navn til new_students_data;
Lag tabellstudenter_data (id heltall ikke null, navnetekst ikke null, fremmøte heltall ikke null);
Sett inn studenters_data velg * fra new_students_data;
Slipp tabell new_students_data;
BEGÅ;
Pragma Foreign_Keys = ON;

Konklusjon

Den unike begrensningen brukes i databasene for å begrense dupliseringen av verdiene som er satt inn i feltene i tabellen akkurat som den primære nøkkelbegrensningen, men det er en forskjell mellom dem begge; En tabell kan bare ha en primærnøkkel, mens en tabell kan ha unike nøkkelkolonner mer enn en. I denne artikkelen diskuterte vi hva en unik begrensning er og hvordan den kan brukes i sqlite ved hjelp av eksempler.