logo

SQL | Begrensninger

SQL-begrensninger er vesentlige elementer i relasjonsdatabasedesign som sikrer integritet nøyaktighet og pålitelighet av dataene som er lagret i en database. Ved å håndheve spesifikke regler på tabellkolonner bidrar SQL-begrensninger til å opprettholde datakonsistens og forhindrer ugyldige dataoppføringer og optimaliserer søkeytelsen.

I denne artikkelen vil vi forklare de vanligste SQL-begrensningene i detalj og gi klare eksempler og forklare hvordan du implementerer dem effektivt.

Hva er SQL-begrensninger?

SQL-begrensninger er regler som gjelder kolonner eller tabeller i en relasjonsdatabase å begrense typen data som kan være satt inn oppdatert eller slettet . Disse reglene sikrer at dataene er gyldige konsistente og overholder forretningslogikken eller databasekrav . Begrensninger kan håndheves under tabelloppretting eller senere ved å bruke ALTER TABLE uttalelse. De spiller en viktig rolle i å opprettholde kvaliteten og integriteten til databasen din.



Typer SQL-begrensninger 

SQL gir flere typer begrensninger for å administrere ulike aspekter av dataintegritet. Disse begrensningene er avgjørende for å sikre at data oppfyller kravene til nøyaktighet konsistens og gyldighet . La oss gå gjennom hver av dem med detaljerte forklaringer og eksempler.

1. IKKE NULL-begrensning

De IKKE NULL constraint sikrer at en kolonne ikke kan inneholde NULL-verdier. Dette er spesielt viktig for kolonner der en verdi er avgjørende for å identifisere poster eller utføre beregninger. Hvis en kolonne er definert som IKKE NULL hver rad må inneholde en verdi for den kolonnen.

Eksempel:

CREATE TABLE Student  
(
ID int(6) NOT NULL
NAME varchar(10) NOT NULL
ADDRESS varchar(20)
);

Forklaring: I eksemplet ovenfor bådeIDogNAMEkolonner er definert med IKKE NULL begrensning betyr at hver elev må ha enIDogNAMEverdi.

2. UNIK begrensning

De UNIK constraint sikrer at alle verdier i en kolonne er forskjellige på tvers av alle rader i en tabell. I motsetning til PRIMÆR NØKKEL som krever unikhet og ikke tillater NULL-er. UNIQUE-begrensningen tillater NULL-verdier, men fremtvinger fortsatt unikhet for ikke-NULL-oppføringer.

Eksempel:

CREATE TABLE Student  
(
ID int(6) NOT NULL UNIQUE
NAME varchar(10)
ADDRESS varchar(20)
);

Forklaring : HerIDkolonnen må ha unike verdier som sikrer at ikke to elever kan dele det sammeID. Vi kan ha mer enn én UNIK begrensning i en tabell.

3. PRIMÆR NØKKEL Begrensning  

EN PRIMÆR NØKKEL begrensning er en kombinasjon av IKKE NULL og UNIK begrensninger. Den identifiserer hver rad i en tabell unikt. Et bord kan bare ha ett PRIMÆR NØKKEL og den kan ikke godta NULL-verdier. Dette brukes vanligvis for kolonnen som vil tjene som identifikator for poster.

Eksempel:

CREATE TABLE Student  
(
ID int(6) NOT NULL UNIQUE
NAME varchar(10)
ADDRESS varchar(20)
PRIMARY KEY(ID)
);

Forklaring: I dette tilfelletIDkolonnen er satt som primærnøkkelen, noe som sikrer at hver elevs ID er unik og ikke kan være NULL.

4. UTENLANDSKE NØKKEL-begrensning

EN UTENLANDSKE NØKKEL begrensning kobler en kolonne i én tabell til primærnøkkel i en annen tabell. Dette forholdet bidrar til å opprettholde referanseintegritet ved å sikre at verdien i fremmednøkkel kolonnen samsvarer med en gyldig post i den refererte tabellen.

Bestillingstabell:

O_IDBESTILLINGSNRC_ID
122533
233253
345212
485321

Kundetabell:

java streng til int konvertering
C_IDNAVNADRESSE
1RAMESHDELHI
2SURESHNOIDA
3DHARMESHGURGAON

Som vi kan se tydelig at feltet C_ID i Bestillingstabell er primærnøkkel i Kunder-tabellen, dvs. den identifiserer hver rad i Kunder bord. Derfor er det en utenlandsk nøkkel i ordretabell. 

Eksempel:

CREATE TABLE Orders  
(
O_ID int NOT NULL
ORDER_NO int NOT NULL
C_ID int
PRIMARY KEY (O_ID)
FOREIGN KEY (C_ID) REFERENCES Customers(C_ID)
)

Forklaring: I dette eksempletC_IDkolonne iOrderstabellen er en fremmednøkkel som refererer tilC_IDkolonne iCustomersbord. Dette sikrer at kun gyldige kunde-ID-er kan settes inn iOrdersbord.

5. SJEKK begrensning

De SJEKKE constraint lar oss spesifisere en betingelse som data må tilfredsstille før de settes inn i tabellen. Dette kan brukes til å håndheve regler som å sikre at en kolonnes verdi oppfyller visse kriterier (f.eks. alder må være over 18)

Eksempel:

CREATE TABLE Student  
(
ID int(6) NOT NULL
NAME varchar(10) NOT NULL
AGE int NOT NULL CHECK (AGE >= 18)
);

Forklaring: I tabellen ovenfor SJEKKE constraint sikrer at kun elever på 18 år eller eldre kan settes inn i tabellen.

6. STANDARD Begrensning

De MISLIGHOLDE constraint gir en standardverdi for en kolonne når ingen verdi er spesifisert under innsetting. Dette er nyttig for å sikre at enkelte kolonner alltid har en meningsfull verdi selv om brukeren ikke oppgir en

Eksempel:

CREATE TABLE Student  
(
ID int(6) NOT NULL
NAME varchar(10) NOT NULL
AGE int DEFAULT 18
);

Forklaring: Her hvis det ikke er gitt noen verdiAGEunder et innlegg vil standardverdien på 18 bli tildelt automatisk.

Hvordan spesifisere begrensninger i SQL

Begrensninger kan spesifiseres under tabellopprettingsprosessen ved å bruke CREATE TABLE uttalelse. I tillegg kan begrensninger endres eller legges til eksisterende tabeller ved å brukeALTER TABLEuttalelse.

Syntaks for å lage begrensninger:

CREATE TABLE tabellnavn

(

kolonne1 datatype [begrensningsnavn]

kolonne2 datatype [begrensningsnavn]

kolonne3 datatype [begrensningsnavn]

...

);

Vi kan også legge til eller fjerne begrensninger etter at en tabell er opprettet:

Eksempel for å legge til en begrensning:

powershell vs bash
ALTER TABLE Student  
ADD CONSTRAINT unique_student_id UNIQUE (ID);

Konklusjon

SQL-begrensninger er avgjørende for vedlikehold dataintegritet og sikre konsistens i relasjonsdatabaser. Å forstå og implementere disse begrensningene effektivt vil hjelpe til med å designe robuste feilfrie databaser. Ved å utnytte IKKE NULL UNIK PRIMÆR NØKKEL UTENLANDSKE NØKKEL KONTROLLER STANDARD og INDEKS du kan sikre at databasen er optimalisert for nøyaktighet og ytelse .

Lag quiz