sql >> Databasteknik >  >> RDS >> Database

Hur man skapar en primär nyckel i SQL

Problem:

Du vill skapa en primärnyckel för en tabell i en databas.

Exempel:

Vi vill ha en primärnyckel för en tabell som heter product .

Lösning 1 (ny tabell):

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

Diskussion:

För att skapa en ny tabell med en kolumn definierad som primärnyckel kan du använda nyckelordet PRIMARY KEY i slutet av definitionen av den kolumnen. I vårt exempel skapar vi tabellen product med en CREATE TABLE sats, med namnen på kolumnerna och deras respektive datatyper inom parentes. Vi väljer kolumn-id som primärnyckel för den här tabellen, så vi anger PRIMARY KEY i slutet av definitionen av denna kolumn.

Tänk på att du bara kan skapa en primärnyckel för en given tabell.

Lösning 2 (ny tabell):

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

Diskussion:

Ett annat sätt att definiera en primärnyckel under skapandet av en ny tabell är med en PRIMARY KEY klausul i slutet av kolumndefinitionerna. I det här fallet anger vi en eller flera kolumner som ett argument till PRIMARY KEY klausul; dessa kolumner blir den primära nyckeln för tabellen.

Observera att detta tillvägagångssätt tillåter primärnycklar byggda med flera kolumner. I det här exemplet är primärnyckeln för tabellen product bildas av två kolumner:name och producer .

Lösning 3 (befintlig tabell):

ALTER TABLE product
ADD PRIMARY KEY (id);

Diskussion:

Det är också möjligt att definiera en primärnyckel för en befintlig tabell som ännu inte har en primärnyckel.

Här ändras tabellen med en ALTER TABLE klausul. Tabellen (i vårt exempel, product ) är uppkallad efter nyckelordet ALTER TABLE , sedan ADD PRIMARY KEY klausul följer med namnet på kolumnen som ska användas som primärnyckel. Observera att tabellen redan måste finnas innan det här kommandot körs och tabellen får inte redan ha en primärnyckel.

Lösning 4 (befintlig tabell, primärnyckelbegränsning):

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

Diskussion:

Använd en fråga som denna om du vill namnge en primärnyckelrestriktion för en befintlig tabell. Här är den primära nyckelbegränsningen, PK_product_id , genereras från kolumnen id . Om du inte anger begränsningsnamnet genererar databasen ett standard begränsningsnamn (namnet varierar beroende på databas).


  1. Bifoga en databas i SQLite

  2. Hur man konverterar sträng till tidsstämpel utan tidszon

  3. MySQL, Kontrollera om det finns en kolumn i en tabell med SQL

  4. Erbjuder SQL Server något liknande MySQL'S PÅ DUBLIKATNYCKELUPPDATERING