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

Sådan opretter du en primær nøgle i SQL

Problem:

Du vil oprette en primær nøgle til en tabel i en database.

Eksempel:

Vi ønsker en primær nøgle til en tabel kaldet product .

Løsning 1 (ny tabel):

CREATE TABLE product (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
producer VARCHAR(100) NOT NULL,
price DECIMAL(7,2)
);

Diskussion:

For at oprette en ny tabel med en kolonne defineret som den primære nøgle, kan du bruge nøgleordet PRIMARY KEY i slutningen af ​​definitionen af ​​denne kolonne. I vores eksempel opretter vi tabellen product ved hjælp af en CREATE TABLE klausul, med navnene på kolonnerne og deres respektive datatyper i parentes. Vi vælger kolonne-id'et som den primære nøgle i denne tabel, så vi udpeger PRIMARY KEY i slutningen af ​​definitionen af ​​denne kolonne.

Husk, at du kun kan oprette én primær nøgle til en given tabel.

Løsning 2 (ny tabel):

CREATE TABLE product (
name VARCHAR(100) NOT NULL,
producer VARCHAR(100) NOT NULL),
price DECIMAL(7,2),
PRIMARY KEY(name, producer)
);

Diskussion:

En anden måde at definere en primær nøgle under oprettelsen af ​​en ny tabel er med en PRIMARY KEY klausul i slutningen af ​​kolonnedefinitionerne. I dette tilfælde angiver vi en eller flere kolonner som et argument til PRIMARY KEY klausul; disse kolonner bliver den primære nøgle til tabellen.

Bemærk, at denne tilgang tillader primære nøgler bygget med flere kolonner. I dette eksempel er den primære nøgle for tabellen product er dannet af to kolonner:name og producer .

Løsning 3 (eksisterende tabel):

ALTER TABLE product
ADD PRIMARY KEY (id);

Diskussion:

Det er også muligt at definere en primærnøgle for en eksisterende tabel, som endnu ikke har en primærnøgle.

Her er tabellen ændret ved hjælp af en ALTER TABLE klausul. Tabellen (i vores eksempel, product ) er opkaldt efter søgeordet ALTER TABLE , derefter ADD PRIMARY KEY klausul følger med navnet på den kolonne, der skal bruges som den primære nøgle. Bemærk, at tabellen allerede skal eksistere, før denne kommando udføres, og tabellen må ikke allerede have en primær nøgle.

Løsning 4 (eksisterende tabel, primærnøglebegrænsning):

ALTER TABLE product
ADD CONSTRAINT PK_product_id PRIMARY KEY (id);

Diskussion:

Brug en forespørgsel som denne, hvis du vil navngive en primær nøglebegrænsning for en eksisterende tabel. Her er den primære nøglebegrænsning, PK_product_id , genereres fra kolonnen id . Hvis du ikke angiver begrænsningsnavnet, genererer databasen et standard begrænsningsnavn (navnet vil variere fra database til).


  1. Hvordan springer man over kolonner i CSV-fil, når man importerer til MySQL-tabel ved hjælp af LOAD DATA INFILE?

  2. Sammenlign strenge, der ignorerer accenter i SQL (ORACLE)

  3. PostgreSQL-funktion til sidst indsatte ID

  4. Lagring af UTF-16/Unicode-data i SQL Server