Esercitazione SQL

SQL HOME Introduzione SQL Sintassi SQL Seleziona SQL SQL Seleziona distinto SQL dove SQL e, o, no Ordina SQL per Inserisci SQL in Valori nulli SQL Aggiornamento SQL Elimina SQL SQL Seleziona in alto SQL Min e Max Conteggio SQL, media, somma Mi piace SQL Caratteri jolly SQL SQL In SQL tra Alias ​​SQL Join SQL Join interno SQL Join sinistro SQL SQL Right Join SQL Full Join SQL Self Join Unione SQL Raggruppamento SQL per SQL Avere SQL esiste SQL Qualsiasi, Tutti SQL Seleziona in Inserisci SQL in Seleziona Caso SQL Funzioni SQL Null Stored procedure SQL Commenti SQL Operatori SQL

Database SQL

SQL Crea DB SQL Drop DB DB di backup SQL SQL Crea tabella Tabella di rilascio SQL SQL Alter tabella Vincoli SQL SQL non nullo SQL unico Chiave primaria SQL Chiave esterna SQL Controllo SQL SQL predefinito Indice SQL Incremento automatico SQL Date SQL Viste SQL SQL Injection Hosting SQL Tipi di dati SQL

Riferimenti SQL

Parole chiave SQL Funzioni MySQL Funzioni di SQL Server Funzioni di accesso MS Riferimento rapido SQL

Esempi SQL

Esempi SQL Quiz SQL Esercizi SQL Certificato SQL

SQL FOREIGN KEY Vincolo


SQL FOREIGN KEY Vincolo

Il FOREIGN KEYvincolo viene utilizzato per impedire azioni che distruggono i collegamenti tra le tabelle.

A FOREIGN KEYè un campo (o una raccolta di campi) in una tabella, che fa riferimento a PRIMARY KEYin un'altra tabella.

La tabella con la chiave esterna è denominata tabella figlio e la tabella con la chiave primaria è denominata tabella di riferimento o padre.

Osserva le due tabelle seguenti:

Tabella delle persone

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

Tabella degli ordini

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

Si noti che la colonna "PersonID" nella tabella "Ordini" punta alla colonna "PersonID" nella tabella "Persone".

La colonna "PersonID" nella tabella "Persone" è quella PRIMARY KEYnella tabella "Persone".

La colonna "PersonID" nella tabella "Ordini" è una FOREIGN KEYnella tabella "Ordini".

Il FOREIGN KEYvincolo impedisce l'inserimento di dati non validi nella colonna della chiave esterna, poiché deve essere uno dei valori contenuti nella tabella padre.



CHIAVE ESTERA SQL su CREATE TABLE

Il seguente SQL crea una FOREIGN KEYnella colonna "PersonID" quando viene creata la tabella "Ordini":

MySQL:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

SQL Server/Oracle/Accesso MS:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

Per consentire la denominazione di un FOREIGN KEYvincolo e per definire un FOREIGN KEYvincolo su più colonne, utilizzare la seguente sintassi SQL:

MySQL/SQL Server/Oracle/MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

CHIAVE ESTERA SQL su ALTER TABLE

Per creare un FOREIGN KEYvincolo sulla colonna "PersonID" quando la tabella "Ordini" è già stata creata, utilizzare il seguente SQL:

MySQL/SQL Server/Oracle/MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Per consentire la denominazione di un FOREIGN KEYvincolo e per definire un FOREIGN KEYvincolo su più colonne, utilizzare la seguente sintassi SQL:

MySQL/SQL Server/Oracle/MS Access:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

RILASCIA un vincolo CHIAVE ESTERA

Per eliminare un FOREIGN KEYvincolo, utilizzare il seguente SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server/Oracle/Accesso MS:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;