SQL: chiave primaria

Una chiave primaria è un campo in una tabella che identifica in modo univoco ogni riga / record in una tabella di database. Le chiavi primarie devono contenere valori univoci. Una colonna di chiave primaria non può avere valori NULL.

Una tabella può avere una sola chiave primaria, che può essere costituita da uno o più campi. Quando più campi vengono utilizzati come chiave primaria, vengono chiamati chiave composta.

Se una tabella ha una chiave primaria definita su uno o più campi, non è possibile avere due record con lo stesso valore di quel campo.

Note - Usereste questi concetti durante la creazione delle tabelle del database.

Crea chiave primaria

Ecco la sintassi per definire l'attributo ID come chiave primaria in una tabella CUSTOMERS.

CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

Per creare un vincolo PRIMARY KEY sulla colonna "ID" quando la tabella CUSTOMERS esiste già, utilizzare la seguente sintassi SQL:

ALTER TABLE CUSTOMER ADD PRIMARY KEY (ID);

NOTE - Se si utilizza l'istruzione ALTER TABLE per aggiungere una chiave primaria, la colonna o le colonne della chiave primaria dovrebbero essere già state dichiarate per non contenere valori NULL (quando la tabella è stata creata per la prima volta).

Per definire un vincolo PRIMARY KEY su più colonne, utilizzare la sintassi SQL fornita di seguito.

CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),        
   PRIMARY KEY (ID, NAME)
);

Per creare un vincolo PRIMARY KEY sulle colonne "ID" e "NAMES" quando la tabella CUSTOMERS esiste già, utilizzare la seguente sintassi SQL.

ALTER TABLE CUSTOMERS 
   ADD CONSTRAINT PK_CUSTID PRIMARY KEY (ID, NAME);

Elimina chiave primaria

È possibile cancellare i vincoli della chiave primaria dalla tabella con la sintassi indicata di seguito.

ALTER TABLE CUSTOMERS DROP PRIMARY KEY ;
sql-rdbms-concepts.htm