sql >> Database teknologi >  >> RDS >> Database

SQL primær nøgle

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:

  1. Hurtig adgang til dataene fra tabellen.
  2. 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
E-mail 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
E-mail Varchar(100) NEJ NULL


  1. Opdaterede Azure SQL Database Tier Options

  2. IKKE IN vs IKKE FINDER

  3. Konverter UTC Milliseconds til DATETIME i SQL-server

  4. Hvad svarer til varchar(max) i Oracle?