sql >> Databasteknik >  >> RDS >> Database

SQL primär nyckel

Ett fält, som innehåller unika data i en tabell, kallas en PRIMÄRKEY (PK). Det betyder att ett PRIMARY KEY-fält måste innehålla unika data i tabellen.

  • Ett PRIMÄRNYCKEL-fält innehåller värden på varje rad.
  • PRIMARY KEY-fältet kan inte innehålla en tom sträng.
  • PRIMÄRNYCKELdata ändras aldrig över tiden.
  • En tabell kan bestå av endast en PRIMÄRNYCKEL, som kan bestå av enstaka eller flera fält i tabellen. När mer än en kolumn används som tabellens PRIMÄRNYCKEL kallas de för den sammansatta nyckeln i tabellen.
  • Det kommer inte att finnas några duplicerade poster för en PRIMÄRNYCKEL.
  • Om ett fält är inställt som en PRIMÄRNYCKEL i tabellen kan det fältet inte innehålla värdena för samma fält mer än en gång i tabellen.

Vi har till exempel en Studenttabell i databasen. Tabellen innehåller 4 fält Student_Id, Student_Name, Phone_Number och Email. Student_Id och Email är den PRIMÄRA NYCKELN i elevtabellen. Det finns bara en PRIMÄRNYCKEL men kan ha enstaka eller flera fält i tabellen, som vi berättade ovan. En elevs data finns redan i tabellen, men samma elev lägger till sin data igen med samma e-post-ID. När eleven anger detaljer kommer ett popup-fönster att visa meddelandet "E-post har redan existerat". Det visas eftersom e-post redan har funnits i tabellen och e-postfältet är PRIMÄRNYCKELn och PRIMÄRNYCKELn kan inte innehålla dubbletter av värden.

Skapa PRIMÄRNYCKEL på SQL TABELL

Följande SQL-fråga skapar en PRIMÄRNYCKEL i fältet Employee_Id när tabellen "Employee" skapas.

CREATE TABLE Employee( Employee_Id int PRIMARY KEY, Employee_Name varchar(40) NOT NULL, Salary int NOT NULL, Department varchar(40), City varchar(40) );        

Ovanstående fråga har definierat PRIMÄRNYCKEL till fältet Employee_Id. Vi kan nämna nyckelnamnet efter fältnamnet och datatypen. Ovanstående fråga är det enda sättet vi kan skapa Employee_Id som en PRIMÄRNYCKEL.

För att kontrollera om vår PRIMÄRNYCKEL är framgångsrikt definierad eller inte, kan vi använda kommandot DESC följt av namnet på Employee-tabellen.

DESC-anställd;

Fält Typ Null Nyckel Standard Extra
Employee_Id Int(11) NEJ PRI NULL
Anställd_namn Varchar(40) NEJ NULL
Lön Int(11) NEJ NULL
Avdelning Varchar(40) JA NULL
Stad Varchar(40) JA NULL

Nyckelfältet PRI nämns framför Employee_Id-raden, vilket betyder att Employee_Id har definierats som den PRIMÄRA KEY.

Fördelar med att använda PRIMÄRKEY i tabellen:

  1. Snabb åtkomst till data från tabellen.
  2. Dubbelvärden är inte tillåtna i PRIMÄRNYCKEL-fälten.

Ett annat sätt att skapa en PRIMÄRNYCKEL

CREATE TABLE Employee( Employee_Id int NOT NULL, Employee_Name varchar(40) NOT NULL, Salary int NOT NULL, Department varchar(40), City varchar(40), PRIMARY KEY(Employee_ID) );

I samma fråga som ovan måste vi nämna NOT NULL framför fältnamnet, som skapas som PRIMARY KEY, och i slutet måste vi skriva PRIMARY KEY nyckelordet och fältnamnet inom parentes precis som ovanstående fråga.

Skapa en PRIMARY KEY-begränsning på fälten när tabellen redan finns

Använd följande fråga:

ALTER TABLE Employee ADD PRIMARY KEY(Employee_Id);

Genom att använda ALTER TABLE-frågan för att definiera PRIMARY KEY, har PRIMARY KEY-fältet redan deklarerats med NOT NULL-begränsning.

PRIMÄR SQL-NYCKEL på flera kolumner

Följande SQL-fråga skapar en PRIMÄRNYCKEL på mer än en kolumn när tabellen 'Student' skapas.

CREATE TABLE Student( Student_Id int NOT NULL, Student_Name varchar(40), Department varchar(40), Phone_Number int(10), Email varchar(100) NOT NULL, PRIMARY KEY(Student_ID, Email));

Endast en PRIMÄRNYCKEL görs i exemplet på Student_Id och Email.

För att kontrollera om vår PRIMÄRNYCKEL är framgångsrikt definierad eller inte, kan vi använda kommandot DESC följt av studenttabellens namn.

DESC Student;
Fält Typ Null Nyckel Standard Extra
Student_Id Int(11) NEJ PRI NULL
Student_Name Varchar(40) JA NULL
Avdelning Varchar(40) JA NULL
Phone_Number Int(10) JA NULL
E-post Varchar(100) NEJ PRI NULL

Som vi kan se framför raden Student_Id och Email, nämns nyckelfälten PRI, vilket betyder att Student_Id och Email har definierats som PRIMÄRNYCKEL.

Vi kommer nu att köra SHOW CREATE TABLE följt av Studenttabellens namn, som kommer att beskriva elevtabellen.

SHOW CREATE TABLE Student;

I ovanstående utdata kan vi se att endast en PRIMÄRNYCKEL skapas, och inom parentes nämns fältnamnet, vilket skapas som en PRIMÄRNYCKEL när tabellen skapas.

Anta att vi vill ta bort PRIMARY KEY-begränsningen från elevtabellen. Vi kommer att använda följande fråga för att ta bort PRIMARY KEY-begränsningen:

ALTER TABLE Student DROP PRIMARY KEY;

För att kontrollera om vår PRIMÄRNYCKEL har tagits bort eller inte, använder vi kommandot DESC följt av studenttabellens namn.

DESC Student;
Fält Typ Null Nyckel Standard Extra
Student_Id Int(11) NEJ NULL
Student_Name Varchar(40) JA NULL
Avdelning Varchar(40) JA NULL
Phone_Number Int(10) JA NULL
E-post Varchar(100) NEJ NULL


  1. mysql-frågan visar flera tabeller från en ID-kolumn

  2. Hur kan jag lösa Postgresql SCRAM-autentifieringsproblem?

  3. 2 sätt att få de teckenuppsättningar som finns tillgängliga i MariaDB

  4. Öka VOTE-diskgrupp i ASM för GI 12.2-uppgradering