La chiave esterna aiuta a stabilire relazioni di database e mantenere l'integrità referenziale. Aiutano a collegare una o più colonne di una tabella a un'altra tabella. Ecco come aggiungere una chiave esterna in MySQL.
Come aggiungere una chiave esterna in MySQL
Ecco i passaggi per aggiungere la chiave esterna in MySQL. È possibile aggiungere un vincolo di chiave esterna utilizzando le istruzioni CREATE TABLE o ALTER TABLE in SQL.
Ecco la sintassi per creare una chiave esterna in MySQL.
Utilizzo di ALTER TABLE
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (foreign_key_name,...) REFERENCES parent_table(column_name,...);
Nella query precedente, nome_tabella è la tabella in cui vuoi aggiungere la chiave esterna. nome_vincolo è il nome del vincolo di chiave esterna. nome_chiave_estero, … è l'elenco delle colonne della chiave esterna.
tabella_genitore è la tabella a cui fa riferimento la tua chiave esterna, seguita dall'elenco dei nomi delle colonne in quella tabella
Bonus Lettura:colonna MySQL Alter Table
Utilizzo di CREATE TABLE
CREATE TABLE table_name( column_name column_description, CONSTRAINT constraint_name FOREIGN KEY (foreign_key_name,...) REFERENCES parent_table(column_name,...) )
Nella query precedente, nome_tabella è la tabella in cui vuoi aggiungere la chiave esterna. nome_vincolo è il nome del vincolo di chiave esterna. nome_chiave_estero, … è l'elenco delle colonne della chiave esterna.
tabella_genitore è la tabella a cui fa riferimento la tua chiave esterna, seguita dall'elenco dei nomi delle colonne in quella tabella.
Nota , in ALTER TABLE devi usare ADD CONSTRAINT mentre in CREATE TABLE devi usare solo la parola chiave CONSTRAINT.
Bonus Lettura:MySQL DROP FOREIGN KEY Vincolo
Esempi di MySQL AGGIUNGI CHIAVE ESTERA
Supponiamo che tu abbia le seguenti tabelle.
Creiamo 2 tabelle (categorie e ordini ) e aggiungi il vincolo di chiave esterna a ordini , facendo riferimento a id colonna in categorie tabella.
mysql> create table categories(id int auto_increment primary key,name varchar(255)); mysql> create table orders(id int auto_increment primary key,category_id int, CONSTRAINT fk_cat FOREIGN KEY (category_id) REFERENCES categories(id)); mysql> describe orders; +-------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | category_id | int(11) | YES | MUL | NULL | | +-------------+---------+------+-----+---------+----------------+
Bonus Leggi:MySQL DROP UNIQUE VSTRAINT
Diamo un'occhiata allo stesso esempio usando l'istruzione ALTER TABLE.
mysql> create table orders(id int auto_increment primary key,category_id int); mysql> create table categories(id int auto_increment primary key,name varchar(255)); mysql> ALTER TABLE orders ADD CONSTRAINT fk_cat FOREIGN KEY (category_id) REFERENCES categories(id); mysql> describe orders; +-------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | category_id | int(11) | YES | MUL | NULL | | +-------------+---------+------+-----+---------+----------------+
Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!