SQL PRIMÆRNØKKEL: Opprett og legg til i en eksisterende tabell

⚡ Smart oppsummering

En primærnøkkel i SQL Server er en kolonne eller et sett med kolonner hvis verdier unikt identifiserer hver rad i en tabell. Hver tabell inneholder én primærnøkkel, og kolonnene må aldri være NULL.

  • 🔑 Hva er en primærnøkkel: En primærnøkkel er én eller flere kolonner med unike verdier som identifiserer hver rad i en tabell.
  • 🚫 Kjerneregler: En tabell tillater bare én primærnøkkel, hver verdi må være unik, og ingen nøkkelkolonner kan inneholde NULL.
  • 🖱️ To opprettelsesmetoder: Både SQL Server Management Studio Table Designer og T-SQL CREATE TABLE-setningen definerer en primærnøkkel.
  • 🧱 BEGRENSNINGSKLAUSUL: Inne i CREATE TABLE navngir CONSTRAINT … PRIMARY KEY-klausulen nøkkelen og viser kolonnen eller kolonnene.
  • Legg til i en eksisterende tabell: ALTER TABLE … ADD CONSTRAINT legger til en primærnøkkel i NOT NULL-kolonnene i en eksisterende tabell.
  • 🧩 Sammensatt nøkkel: En primærnøkkel kan kombinere opptil 16 kolonner, og danne en sammensatt nøkkel som er unik på tvers av hele settet.

SQL Server PRIMÆRKØKKEL: Slik oppretter og legger du til i en eksisterende tabell

Hva er primærnøkkel i SQL?

En primærnøkkel i SQL Server er et felt, eller en kombinasjon av felt, som identifiserer en post unikt. Det er en kolonne eller et sett med kolonner der hver verdi er unik. Med andre ord kan ingen to rader dele samme primærnøkkelverdi.

Regler for primærnøkkel

  • Hver tabell kan bare ha én primærnøkkel.
  • Alle verdiene er unike, og primærnøkkelverdien kan identifisere hver rad unikt.
  • Systemet tillater ikke å sette inn en rad med en primærnøkkelverdi som allerede finnes i tabellen.
  • En primærnøkkel kan ikke være NULL.

Diagrammet nedenfor oppsummerer alle punktene ovenfor om SQL-primærnøkkelen.

Diagram som oppsummerer SQL-primærnøkkelregler: unike verdier, én per tabell, og ikke NULL

Hvordan lage primærnøkkel i SQL Server

Du kan opprette en primærnøkkel på to måter:

La oss studere hver metode i detalj.

SQL Server Management Studio

Trinn 1) Høyreklikk på tabellnavnet og klikk på Design.

Høyreklikk på tabellen og velg Utforming i SQL Server Management Studio

Trinn 2) Høyreklikk på kolonnenavnet og klikk på Angi primærnøkkel.

Høyreklikk på kolonnen og velg Angi primærnøkkel i tabellutforming

Resultat: Course_Id er nå en primærnøkkel, vist med et nøkkelikon ved siden av kolonnen.

Kurs-ID-kolonnen er merket med et nøkkelikon som primærnøkkel

T-SQL: Opprett en primærnøkkel mens du oppretter en ny tabell

Nedenfor er syntaksen til lage en tabell med en primærnøkkel fra T-SQL.

Syntaks:

CREATE TABLE <Table_Name>
(
Column1 datatype,
Column2 datatype,CONSTRAINT <Name> PRIMARY KEY (Column name)
.
);

Her navngir CONSTRAINT nøkkelen, PRIMARY KEY markerer kolonnen som må forbli unik, og hver kolonne trenger også en data-type.

La oss lage en tabell med én kolonne som SQL-primærnøkkel.

Spørsmål:

CREATE TABLE COURSE_TSQL_PK 
(Course_ID Int not Null,
 Course_name Varchar(20)
 CONSTRAINT PK PRIMARY KEY (Course_ID)	
)

Trinn 1) Kjør spørringen ved å klikke på Henrette.

Utfører CREATE TABLE-spørringen som definerer primærnøkkelen Course_ID

Resultat: Course_Id er nå en primærnøkkel i COURSE_TSQL_PK-tabellen.

Tabellen COURSE_TSQL_PK som viser Course_ID angitt som primærnøkkel

Eksempel: La oss se om det tillater å legge inn flere poster med samme kurs-ID.

Trinn 1) Sett inn fire rader med forskjellige Course_ID-verdier.

Insert into COURSE_TSQL_PK values (1,'SQL');
Insert into COURSE_TSQL_PK values (2,'Python');
Insert into COURSE_TSQL_PK values (3,'SQL');
Insert into COURSE_TSQL_PK values (4,'C');

Trinn 2) Bekreft at alle dataene ble satt inn ved å kjøre SELECT-spørringen.

SELECT-spørringsresultat som viser fire rader med distinkte Course_ID-verdier

Merk: Du kan sette inn dupliserte verdier i en kolonne som ikke er en primærnøkkel.

Trinn 3) La oss nå prøve å sette inn en ny post med en eksisterende Course_ID, som er primærnøkkelen.

Insert into COURSE_TSQL_PK values (4,'JAVA');

Resultat: Systemet tillater ikke innsetting av den nye verdien, fordi 4 allerede finnes i Course_ID-kolonnen, som er en primærnøkkel.

Feilmelding som avviser en duplikat primærnøkkelverdi for Course_ID

Hvordan legge til primærnøkkel til eksisterende tabell i SQL?

Nå skal vi se hvordan man legger til en primærnøkkel i en eksisterende tabell i SQL.

Du kan bruke ALTER-setningen til å opprette en primærnøkkel. En primærnøkkel kan imidlertid bare opprettes på kolonner som er definert som NOT NULL. Du kan ikke opprette en primærnøkkel på en kolonne som tillater NULL-er. Hvis en kolonne for øyeblikket tillater NULL-er, må du først endre den til NOT NULL, eller slette og gjenskape tabellen.

Her er syntaksen:

ALTER TABLE tableName
ADD CONSTRAINT constraintName PRIMARY KEY (column_1, column_2, ... column_n);

For eksempel:

ALTER TABLE students
ADD CONSTRAINT students_pk PRIMARY KEY (admission);

ALTER TABLE-setning legger til en primærnøkkelbegrensning kalt students_pk

Vi har lagt til en primærnøkkelbegrensning til en allerede eksisterende tabell. Begrensningen er lagt til i opptakskolonnen og tildelt navnet students_pk.

Interessante fakta!

  • En primærnøkkel kan være en kombinasjon av flere kolonner. Denne kombinasjonen er kjent som den sammensatte primærnøkkelen.
  • En primærnøkkel kan ha maksimalt 16 kolonner.

Spørsmål og svar

Begge håndhever unikhet. En tabell tillater bare én primærnøkkel, og kolonnene kan ikke være NULL. En tabell kan inneholde flere unike nøkler, og en unik kolonne kan godta én NULL-verdi. Primærnøkler definerer vanligvis hovedradidentifikatoren.

Ja. SQL Server bygger automatisk en unik indeks for å håndheve primærnøkkelen. Som standard er denne indeksen gruppert, noe som fysisk ordner radene. Du kan angi NONCLUSTERED i stedet når en annen kolonne allerede inneholder den grupperte indeksen.

En sammensatt primærnøkkel kombinerer to eller flere kolonner slik at verdiene deres er unike sammen, selv når hver kolonne gjentas individuelt. SQL Server tillater at en primærnøkkel spenner over opptil 16 kolonner og en total nøkkellengde på 900 byte.

En primærnøkkel identifiserer unikt hver rad i sin egen tabell og tillater aldri NULL-er. utenlandsk nøkkel lagrer verdier som må samsvare med en primærnøkkel eller unik nøkkel i en annen tabell, og oppretter dermed en relasjon mellom de to tabellene.

Kjør ALTER TABLE tabellnavn DROP CONSTRAINT begrensningsnavn. Du må vite navnet på begrensningen, som du finner i sys.key_constraints. Dropping Primærnøkkelen fjerner også den unike indeksen som støtter den, og enhver fremmednøkkel som refererer til den.

En IDENTITY-kolonne som automatisk genererer tall er en populær surrogatprimærnøkkel fordi den forblir smal, stabil og aldri NULL. Velg en naturlig nøkkel i stedet bare når en eksisterende kolonne, for eksempel en produktkode, allerede er garantert unik.

Ja. GitHub Copilot kan skrive CREATE TABLE-setninger og PRIMARY KEY-begrensninger fra ledetekster i naturlig språk og foreslå passende nøkkelkolonner. Gå alltid gjennom de genererte nøklene, datatypene og nullbarheten, og test deretter skriptet før du kjører det i produksjon.

AI- og maskinlæringsverktøy analyserer eksempeldata og spørremønstre for å anbefale hvilken eller hvilke kolonner som skal være primærnøkkelen, flagge kandidatnøkler som inneholder duplikater eller NULL-er, og foreslå surrogatnøkler. Utvikleren bekrefter hver anbefaling før den tas i bruk.

Oppsummer dette innlegget med: