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

Come creare una CHIAVE ESTERA in SQL
Possiamo creare un chiave esterna nel server SQL in 2 modi:
- SQL Server Management Studio
- 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.
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…
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.
Passo 3) In 'Relazione chiave straniera,' Clic 'Inserisci'
Passo 4) In "Specifiche tabelle e colonne" fare clic su '…' icona
Passo 5) Seleziona "Tabella chiavi primarie" come "CORSO" e la nuova tabella ora creata come "Tabella chiavi esterne" dal menu a discesa.
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.
Passo 7) Fare clic su Aggiungi.
Passo 8) Assegnare il nome della tabella come 'Course_Strength' e fare clic su OK.
Risultato: Abbiamo impostato la relazione genitore-figlio tra 'Corso' e 'Forza_del_corso.'
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.
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.
Risultato: Abbiamo impostato la relazione genitore-figlio tra 'Corso' e 'Forza_corso_TSQL.'
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;
Ora inseriamo qualche riga nella tabella Child: 'Forza_corso_TSQL.'
Proveremo a inserire due tipi di righe
- Il primo tipo, per il quale Course_Id nella tabella figlio esisterà in Course_Id della tabella padre. cioè Course_Id = 1 e 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');
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.
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