CHIAVE ESTERNA SQL: come creare in SQL Server con l'esempio

Cos'è una CHIAVE ESTERA?

A chiave esterna fornisce un modo per applicare l'integrità referenziale all'interno di SQL Server. In parole semplici, la chiave esterna garantisce che i valori di una tabella siano presenti in un'altra tabella.

Regole per la CHIAVE ESTERA

  • NULL è consentito nella chiave esterna SQL.
  • La tabella a cui si fa riferimento è denominata tabella padre
  • La tabella con la chiave esterna in SQL si chiama tabella figlio.
  • La chiave esterna SQL nella tabella figlia fa riferimento alla chiave primaria nella tabella padre.
  • Questa relazione genitore-figlio applica la regola nota come "Referenziale". Integrity. "

L'esempio di chiave esterna in SQL riportato di seguito con diagramma riassume tutti i punti precedenti per FOREIGN KEY

Regole per la CHIAVE ESTERNA in SQL
Come funziona la chiave esterna

Come creare una CHIAVE ESTERA in SQL

Possiamo creare un chiave esterna nel server SQL in 2 modi:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

Tabella padre: Supponiamo che abbiamo una tabella genitore esistente come "Corso". Course_ID e Course_name sono due colonne con Course_Id come chiave primaria.

Crea CHIAVE ESTERA in SQL

Tabella figlio: Dobbiamo creare la seconda tabella come tabella figlia. "Course_ID" e "Course_Strength" come due colonne. Tuttavia, "Course_ID" sarà una chiave esterna.

Passo 1) Fare clic con il tasto destro su Tabelle>Nuovo>Tabella…

Crea CHIAVE ESTERA in SQL

Passo 2) Inserisci il nome di due colonne come "Course_ID" e "Course_Strength". Fare clic con il tasto destro sulla colonna "Course_Id". Ora fai clic su Relazione.

Crea CHIAVE ESTERA in SQL

Passo 3) In 'Relazione chiave straniera,' Clic 'Inserisci'

Crea CHIAVE ESTERA in SQL

Passo 4) In "Specifiche tabelle e colonne" fare clic su '…' icona

Crea CHIAVE ESTERA in SQL

Passo 5) Seleziona "Tabella chiavi primarie" come "CORSO" e la nuova tabella ora creata come "Tabella chiavi esterne" dal menu a discesa.

Crea CHIAVE ESTERA in SQL

Passo 6) "Tabella delle chiavi primarie": seleziona la colonna "Course_Id" come colonna "Tabella delle chiavi primarie".

"Tabella chiavi esterne": seleziona la colonna "Course_Id" come colonna "Tabella chiavi esterne". Fare clic su OK.

Crea CHIAVE ESTERA in SQL

Passo 7) Fare clic su Aggiungi.

Crea CHIAVE ESTERA in SQL

Passo 8) Assegnare il nome della tabella come 'Course_Strength' e fare clic su OK.

Crea CHIAVE ESTERA in SQL

Risultato: Abbiamo impostato la relazione genitore-figlio tra 'Corso' e 'Forza_del_corso.'

Crea CHIAVE ESTERA in SQL

T-SQL: crea una tabella padre-figlio utilizzando T-SQL

Tabella padre: Riconsidera, abbiamo una tabella genitore esistente con il nome della tabella come "Corso".

Course_ID e Course_name sono due colonne con Course_Id come chiave primaria.

Crea una tabella padre-figlio utilizzando T-SQL

Tabella figlio: Dobbiamo creare la seconda tabella come tabella figlia con il nome "Course_Strength_TSQL".

"Course_ID" e "Course_Strength" come due colonne per la tabella figlio Course_Strength_TSQL.' Tuttavia, "Course_ID" sarà una chiave esterna.

Di seguito è riportata la sintassi per creare una tabella con FOREIGN KEY

Sintassi:

CREATE TABLE childTable
(
  column_1 datatype [ NULL |NOT NULL ],
  column_2 datatype [ NULL |NOT NULL ],
  ...

  CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n)
    [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ]
    [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] 
);

Ecco una descrizione dei parametri di cui sopra:

  • childTable è il nome della tabella da creare.
  • colonna_1, colonna_2: le colonne da aggiungere alla tabella.
  • fkey_name: il nome del vincolo di chiave esterna da creare.
  • child_column1, child_column2…child_column_n- il nome delle colonne chidTable per fare riferimento alla chiave primaria in parentTable.
  • parentTable: il nome della tabella padre la cui chiave deve essere referenziata nella tabella figlio.
  • parent_column1, parent_column2, … parent_column3- le colonne che compongono la chiave primaria della tabella genitore.
  • IN CANCELLAZIONE. Un parametro facoltativo. Specifica cosa succede ai dati secondari dopo la cancellazione dei dati principali. Alcuni dei valori per questo parametro includono NO ACTION, SET NULL, CASCADE o SET DEFAULT.
  • IN AGGIORNAMENTO: un parametro facoltativo. Specifica cosa succede ai dati secondari dopo l'aggiornamento dei dati principali. Alcuni dei valori per questo parametro includono NO ACTION, SET NULL, CASCADE o SET DEFAULT.
  • NESSUNA AZIONE: utilizzato insieme a ON DELETE e ON UPDATE. Ciò significa che non accadrà nulla ai dati secondari dopo l'aggiornamento o la cancellazione dei dati principali.
  • CASCADE- utilizzato insieme a ON DELETE e ON UPDATE. I dati secondari verranno eliminati o aggiornati dopo che i dati principali sono stati eliminati o aggiornati.
  • SET NULL: utilizzato insieme a ON DELETE e ON UPDATE. Il figlio verrà impostato su null dopo che i dati padre sono stati aggiornati o eliminati.
  • SET DEFAULT: utilizzato insieme a ON DELETE e ON UPDATE. I dati secondari verranno impostati sui valori predefiniti dopo un aggiornamento o un'eliminazione dei dati principali.

Vediamo una chiave esterna nell'esempio SQL per creare una tabella con una colonna come CHIAVE ESTERNA:

Chiave esterna nell'esempio SQL

Query:

CREATE TABLE Course_Strength_TSQL
(
Course_ID Int,
Course_Strength Varchar(20) 
CONSTRAINT FK FOREIGN KEY (Course_ID)
REFERENCES COURSE (Course_ID)	
)

Passo 1) Eseguire la query facendo clic su Esegui.

Chiave esterna in SQL

Risultato: Abbiamo impostato la relazione genitore-figlio tra 'Corso' e 'Forza_corso_TSQL.'

Chiave esterna in SQL

Utilizzando ALTER TABLE

Ora impareremo come utilizzare la chiave esterna in SQL e aggiungere la chiave esterna nel server SQL utilizzando l'istruzione ALTER TABLE, utilizzeremo la sintassi fornita di seguito:

ALTER TABLE childTable
ADD CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);

Ecco una descrizione dei parametri utilizzati sopra:

  • childTable è il nome della tabella da creare.
  • colonna_1, colonna_2: le colonne da aggiungere alla tabella.
  • fkey_name: il nome del vincolo di chiave esterna da creare.
  • child_column1, child_column2…child_column_n- il nome delle colonne chidTable per fare riferimento alla chiave primaria in parentTable.
  • parentTable: il nome della tabella padre la cui chiave deve essere referenziata nella tabella figlio.
  • parent_column1, parent_column2, … parent_column3- le colonne che compongono la chiave primaria della tabella genitore.

Modifica tabella aggiungi esempio di chiave esterna:

ALTER TABLE department
ADD CONSTRAINT fkey_student_admission
    FOREIGN KEY (admission)
    REFERENCES students (admission);

Abbiamo creato una chiave esterna denominata fkey_student_admission nella tabella del dipartimento. Questa chiave esterna fa riferimento alla colonna di ammissione della tabella degli studenti.

Esempio di query CHIAVE ESTERA

Innanzitutto, vediamo i dati della tabella padre, COURSE.

Query:

SELECT * from COURSE;

Esempio di query CHIAVE ESTERA

Ora inseriamo qualche riga nella tabella Child: 'Forza_corso_TSQL.'

Proveremo a inserire due tipi di righe

  1. Il primo tipo, per il quale Course_Id nella tabella figlio esisterà in Course_Id della tabella padre. cioè Course_Id = 1 e 2
  2. Il secondo tipo, per il quale Course_Id nella tabella figlio non esiste nel Course_Id della tabella padre. cioè Course_Id = 5

Query:

Insert into COURSE_STRENGTH values (1,'SQL');
Insert into COURSE_STRENGTH values (2,'Python');
Insert into COURSE_STRENGTH values (5,'PERL');

Esempio di query CHIAVE ESTERA

Risultato: Eseguiamo insieme la query per vedere la nostra tabella genitore e figlio

Le righe con Course_ID 1 e 2 esistono nella tabella Course_strength. Mentre Course_ID 5 è un'eccezione.

Esempio di query CHIAVE ESTERA

Sintesi

  • Ogni valore della chiave esterna deve far parte Chiave primaria di altre tabelle.
  • . MySQL La chiave esterna può fare riferimento a un'altra colonna nella stessa tabella. Questo riferimento è noto come autoreferenzialità.
  • Vincolo di chiave esterna SQL: viene utilizzato per proteggere i collegamenti tra tabelle e dati non validi da inserire nella colonna Chiave esterna.
  • È possibile creare una chiave esterna utilizzando Crea tabella, Modifica tabella o SQL Server Management Studio.
  • Ecco la differenza tra chiave primaria e chiave esterna: Clicca qui