SQL PRIMÄRNYCKEL: Skapa och lägg till i en befintlig tabell

⚡ Smart sammanfattning

En primärnyckel i SQL Server är en kolumn eller en uppsättning kolumner vars värden unikt identifierar varje rad i en tabell. Varje tabell innehåller en primärnyckel, och dess kolumner får aldrig vara NULL.

  • 🔑 Vad är en primärnyckel: En primärnyckel är en eller flera kolumner vars värden är unika och identifierar varje rad i en tabell.
  • ???? Kärnregler: En tabell tillåter endast en primärnyckel, varje värde måste vara unikt och ingen nyckelkolumn får innehålla NULL.
  • 🖱️ Två skapandemetoder: Både SQL Server Management Studio Table Designer och T-SQL CREATE TABLE-satsen definierar en primärnyckel.
  • 🧱 BEGRÄNSNINGSKLAUSUL: Inuti CREATE TABLE namnger CONSTRAINT … PRIMARY KEY-klausulen nyckeln och listar dess kolumn eller kolumner.
  • ➕ Lägg till i en befintlig tabell: ALTER TABLE … ADD CONSTRAINT lägger till en primärnyckel till NOT NULL-kolumnerna i en befintlig tabell.
  • 🧩 Sammansatt nyckel: En primärnyckel kan kombinera upp till 16 kolumner och bilda en sammansatt nyckel som är unik för hela uppsättningen.

SQL Server PRIMÄRKNYCKEL: Hur man skapar och lägger till i en befintlig tabell

Vad är primärnyckel i SQL?

En primärnyckel i SQL Server är ett fält, eller en kombination av fält, som identifierar en post unikt. Det är en kolumn eller en uppsättning kolumner där varje värde är unikt. Med andra ord kan inga två rader dela samma primärnyckelvärde.

Regler för primärnyckel

  • Varje tabell kan bara ha en primärnyckel.
  • Alla värden är unika, och primärnyckelvärdet kan identifiera varje rad unikt.
  • Systemet tillåter inte att en rad infogas vars primärnyckelvärde redan finns i tabellen.
  • En primärnyckel kan inte vara NULL.

Diagrammet nedan sammanfattar alla punkter ovan om SQL-primärnyckeln.

Diagram som sammanfattar SQL-primärnyckelregler: unika värden, ett per tabell och inte NULL

Hur man skapar en primär nyckel i SQL Server

Du kan skapa en primärnyckel på två sätt:

Låt oss studera varje metod i detalj.

SQL Server Management Studio

Steg 1) Högerklicka på tabellnamnet och klicka på Design.

Högerklicka på tabellen och välj Design i SQL Server Management Studio

Steg 2) Högerklicka på kolumnnamnet och klicka på Ange primärnyckel.

Högerklicka på kolumnen och välj Ange primärnyckel i tabelldesignern

Resultat: Course_Id är nu en primärnyckel, som visas med en nyckelikon bredvid kolumnen.

Kolumnen Course_Id markerad med en nyckelikon som primärnyckel

T-SQL: Skapa en primärnyckel när du skapar en ny tabell

Nedan följer syntaxen för att skapa en tabell med en primärnyckel från T-SQL.

Syntax:

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

Här namnger CONSTRAINT nyckeln, PRIMARY KEY markerar kolumnen som måste förbli unik, och varje kolumn behöver också en data typ.

Låt oss skapa en tabell med en kolumn som SQL-primärnyckel.

Fråga:

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

Steg 1) Kör frågan genom att klicka på Utförande.

Köra CREATE TABLE-frågan som definierar primärnyckeln Course_ID

Resultat: Course_Id är nu en primärnyckel i tabellen COURSE_TSQL_PK.

Tabellen COURSE_TSQL_PK som visar Course_ID som primärnyckel

Exempel: Låt oss se om det är möjligt att mata in flera poster med samma kurs-ID.

Steg 1) Infoga fyra rader med olika Course_ID-värden.

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');

Steg 2) Kontrollera att all data har infogas korrekt genom att köra SELECT-frågan.

SELECT-frågeresultat som visar fyra rader med distinkta Course_ID-värden

Obs! Du kan infoga dubbletter av värden i en kolumn som inte är en primärnyckel.

Steg 3) Nu ska vi försöka infoga en ny post med ett befintligt Course_ID, vilket är primärnyckeln.

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

Resultat: Systemet tillåter inte att det nya värdet infogas, eftersom 4 redan finns i kolumnen Course_ID, vilket är en primärnyckel.

Felmeddelande som avvisar ett duplicerat primärnyckelvärde för Course_ID

Hur lägger man till primärnyckel till befintlig tabell i SQL?

Nu ska vi se hur man lägger till en primärnyckel till en befintlig tabell i SQL.

Du kan använda ALTER-satsen för att skapa en primärnyckel. En primärnyckel kan dock bara skapas på kolumner som är definierade som NOT NULL. Du kan inte skapa en primärnyckel på en kolumn som tillåter NULL-värden; om en kolumn för närvarande tillåter NULL-värden måste du först ändra den till NOT NULL, eller ta bort och återskapa tabellen.

Här är syntaxen:

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

Till exempel:

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

ALTER TABLE-sats som lägger till en primärnyckelbegränsning med namnet students_pk

Vi har lagt till en primärnyckelbegränsning till en redan befintlig tabell. Begränsningen har lagts till i antagningskolumnen och tilldelats namnet students_pk.

Intressanta fakta!

  • En primärnyckel kan vara en kombination av flera kolumner. Denna kombination kallas den sammansatta primärnyckeln.
  • En primärnyckel kan ha maximalt 16 kolumner.

Vanliga frågor

Båda framtvingar unikhet. En tabell tillåter endast en primärnyckel, och dess kolumner kan inte vara NULL. En tabell kan innehålla flera unika nycklar, och en unik kolumn kan acceptera ett NULL-värde. Primärnycklar definierar vanligtvis huvudradsidentifieraren.

Ja. SQL Server skapar automatiskt ett unikt index för att tillämpa primärnyckeln. Som standard är detta index klustrat, vilket fysiskt ordnar raderna. Du kan ange NONCLUSTERED istället när en annan kolumn redan innehåller det klustrade indexet.

En sammansatt primärnyckel kombinerar två eller flera kolumner så att deras värden är unika tillsammans, även när varje kolumn upprepas individuellt. SQL Server tillåter att en primärnyckel sträcker sig över upp till 16 kolumner och en total nyckellängd på 900 byte.

En primärnyckel identifierar unikt varje rad i sin egen tabell och tillåter aldrig NULL-värden. främmande nyckel lagrar värden som måste matcha en primärnyckel eller unik nyckel i en annan tabell, vilket skapar en relation mellan de två tabellerna.

Kör ALTER TABLE tabellnamn DROP CONSTRAINT begränsningsnamn. Du måste känna till begränsningsnamnet, vilket du hittar i sys.key_constraints. Dropping Primärnyckeln tar också bort sitt unika index och alla främmande nycklar som refererar till den.

En IDENTITY-kolumn som automatiskt genererar tal är en populär surrogatprimärnyckel eftersom den förblir smal, stabil och aldrig NULL. Välj en naturlig nyckel istället endast när en befintlig kolumn, till exempel en produktkod, redan är garanterat unik.

Ja. GitHub Copilot kan skriva CREATE TABLE-satser och PRIMARY KEY-begränsningar från naturligt språk och föreslå lämpliga nyckelkolumner. Granska alltid de genererade nycklarna, datatyperna och nullbarheten, och testa sedan skriptet innan du kör det i produktion.

AI- och maskininlärningsverktyg analyserar exempeldata och frågemönster för att rekommendera vilken eller vilka kolumner som ska vara primärnyckeln, flagga kandidatnycklar som innehåller dubbletter eller NULL-värden och föreslå surrogatnycklar. Utvecklaren bekräftar varje rekommendation innan den tillämpas.

Sammanfatta detta inlägg med: