Et felt, som indeholder unikke data i en tabel, kaldes en PRIMÆR NØGLE (PK). Det betyder, at et PRIMÆR NØGLE-felt skal indeholde unikke data i tabellen.
- Et PRIMÆR NØGLE-felt indeholder værdier på hver række.
- PRIMARY KEY-feltet må ikke indeholde en tom streng.
- PRIMÆRE NØGLE-data ændres aldrig over tid.
- En tabel kan kun bestå af én PRIMÆR NØGLE, som kan bestå af enkelte eller flere felter i tabellen. Når mere end én kolonne bruges som tabellens PRIMÆR NØGLE, er de kendt som den sammensatte nøgle i tabellen.
- Der vil ikke være nogen duplikerede poster for en PRIMÆR NØGLE.
- Hvis et felt er angivet som en PRIMÆR NØGLE i tabellen, kan det felt ikke indeholde værdierne af det samme felt mere end én gang i tabellen.
For eksempel har vi en Student-tabel i databasen. Tabellen indeholder 4 felter Student_Id, Student_Name, Phone_Number og Email. Student_Id og Email er den PRIMÆRE NØGLE i elevtabellen. Der er kun én PRIMÆR NØGLE, men kan have enkelte eller flere felter i tabellen, som vi fortalte ovenfor. En elevs data er allerede til stede i tabellen, men den samme elev tilføjer sine data igen med det samme e-mail-id. Efterhånden som eleven indtaster detaljer, vil en pop-up vise en besked "E-mail har allerede eksisteret". Det vises, fordi e-mail allerede har eksisteret i tabellen, og e-mail-feltet er PRIMÆR NØGLE, og PRIMÆR NØGLE kan ikke indeholde duplikerede værdier.
Opret PRIMÆR NØGLE på SQL TABLE
Følgende SQL-forespørgsel opretter en PRIMÆR NØGLE i feltet Employee_Id, når tabellen 'Employee' oprettes.
CREATE TABLE Employee( Employee_Id int PRIMARY KEY, Employee_Name varchar(40) NOT NULL, Salary int NOT NULL, Department varchar(40), City varchar(40) );
Ovenstående forespørgsel har defineret PRIMÆR NØGLE til feltet Employee_Id. Vi kan nævne nøglenavnet efter feltnavnet og datatypen. Ovenstående forespørgsel er den ene måde, hvorpå vi kan oprette Employee_Id som en PRIMÆR NØGLE.
For at kontrollere, om vores PRIMÆRE NØGLE er defineret korrekt eller ej, kan vi bruge DESC-kommandoen efterfulgt af Employee-tabelnavnet.
DESC-medarbejder;
Felter | Type | Nul | Nøgle | Standard | Ekstra |
Employee_Id | Int(11) | NEJ | PRI | NULL | |
Employee_Name | Varchar(40) | NEJ | NULL | ||
Løn | Int(11) | NEJ | NULL | ||
Afdeling | Varchar(40) | JA | NULL | ||
By | Varchar(40) | JA | NULL |
Nøglefeltet PRI er nævnt foran Employee_Id-rækken, hvilket betyder, at Employee_Id er defineret som den PRIMÆRE NØGLE.
Fordele ved at bruge PRIMÆR NØGLE i tabellen:
- Hurtig adgang til dataene fra tabellen.
- Duplikater af værdier er ikke tilladt i felterne PRIMÆR NØGLE.
En anden måde at oprette en PRIMÆR NØGLE
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 samme forespørgsel som ovenfor skal vi nævne NOT NULL foran feltnavnet, der er oprettet som PRIMARY KEY, og til sidst skal vi skrive PRIMARY KEY nøgleordet og feltnavnet i parentes ligesom ovenstående forespørgsel.
Opret en PRIMÆR NØGLE-begrænsning på felterne, når tabellen allerede eksisterer
Brug følgende forespørgsel:
ALTER TABLE Employee ADD PRIMARY KEY(Employee_Id);
Ved at bruge ALTER TABLE-forespørgslen til at definere PRIMÆR NØGLE, er feltet PRIMÆR NØGLE allerede blevet erklæret med NOT NULL-begrænsning.
SQL PRIMÆR NØGLE på flere kolonner
Følgende SQL-forespørgsel opretter en PRIMÆR NØGLE på mere end én kolonne, når tabellen 'Student' oprettes.
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));>
Der er kun lavet én PRIMÆR NØGLE i eksemplet på Student_Id og Email.
For at kontrollere, om vores PRIMÆR NØGLE er defineret korrekt eller ej, kan vi bruge kommandoen DESC efterfulgt af elevtabelnavnet.
DESC Student;
Felter | Type | Nul | Nøgle | Standard | Ekstra |
Student_Id | Int(11) | NEJ | PRI | NULL | |
Student_Name | Varchar(40) | JA | NULL | ||
Afdeling | Varchar(40) | JA | NULL | ||
Telefonnummer | Int(10) | JA | NULL | ||
Varchar(100) | NEJ | PRI | NULL |
Som vi kan se foran rækken Student_Id og Email, er nøglefelterne PRI nævnt, hvilket betyder, at Student_Id og Email er defineret som PRIMÆR NØGLE.
Vi vil nu udføre SHOW CREATE TABLE efterfulgt af Elev tabelnavn, som vil beskrive elevtabellen.
SHOW CREATE TABLE Student;
I ovenstående output kan vi se, at der kun oprettes én PRIMÆR NØGLE, og i parentes er feltnavnet nævnt, som oprettes som en PRIMÆR NØGLE, mens tabellen oprettes.
Antag, at vi ønsker at fjerne PRIMARY KEY-begrænsningen fra elevtabellen. Vi vil bruge følgende forespørgsel til at slippe PRIMÆR KEY-begrænsningen:
ALTER TABLE Student DROP PRIMARY KEY;
For at kontrollere, om vores PRIMÆR NØGLE er blevet fjernet eller ej, bruger vi kommandoen DESC efterfulgt af elevtabellens navn.
DESC Student;
Felter | Type | Nul | Nøgle | Standard | Ekstra |
Student_Id | Int(11) | NEJ | NULL | ||
Student_Name | Varchar(40) | JA | NULL | ||
Afdeling | Varchar(40) | JA | NULL | ||
Telefonnummer | Int(10) | JA | NULL | ||
Varchar(100) | NEJ | NULL |