sql >> Database teknologi >  >> RDS >> Mysql

MySQL Tilføj fremmednøgle

Foreign Key hjælper med at etablere databaserelationer og vedligeholde referentiel integritet. De hjælper med at linke en eller flere kolonner i en tabel til en anden tabel. Sådan tilføjer du fremmednøgle i MySQL.

Sådan tilføjes fremmednøgle i MySQL

Her er trinene til at tilføje fremmednøgle i MySQL. Du kan tilføje en begrænsning af en fremmednøgle ved hjælp af CREATE TABLE- eller ALTER TABLE-sætninger i SQL.

Her er syntaksen til at oprette fremmednøgle i MySQL.

Brug af ALTER TABLE

ALTER TABLE table_name 
ADD CONSTRAINT constraint_name 
FOREIGN KEY (foreign_key_name,...) 
REFERENCES parent_table(column_name,...);

I ovenstående forespørgsel, tabelnavn er den tabel, hvor du vil tilføje fremmednøgle. constraint_name er navnet på den fremmede nøgle-begrænsning. foreign_key_name, … er listen over fremmednøglekolonner.

forældretabel er den tabel, som din fremmednøgle refererer til, efterfulgt af en liste over kolonnenavne i den tabel

Bonus Læs:MySQL Alter Table Column

Ved brug af CREATE TABLE

CREATE TABLE table_name(
    column_name column_description,
    CONSTRAINT constraint_name
    FOREIGN KEY (foreign_key_name,...) 
        REFERENCES parent_table(column_name,...)
)

I ovenstående forespørgsel, tabelnavn er den tabel, hvor du vil tilføje fremmednøgle. constraint_name er navnet på den fremmede nøgle-begrænsning. foreign_key_name, … er listen over fremmednøglekolonner.

forældretabel er den tabel, som din fremmednøgle refererer til, efterfulgt af en liste over kolonnenavne i den tabel.

Bemærk venligst , i ALTER TABLE skal du bruge ADD CONSTRAINT, mens du i CREATE TABLE kun skal bruge CONSTRAINT søgeord.

Bonus Læs:MySQL DROP UDENLANDSKE NØGLE-begrænsning

Eksempler på MySQL TILFØJ UDENLANDSKE NØGLER

Lad os sige, at du har følgende tabeller.

Lad os oprette 2 tabeller (kategorier og ordrer ) og tilføj fremmednøglebegrænsning til ordrer , der henviser til id kolonne i kategorier tabel.

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 Læs:MySQL DROP UNIK BEGRÆNSNING

Lad os tage et kig på det samme eksempel ved at bruge ALTER TABLE-sætningen.

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 gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. SQL Server - opret forbindelse med Windows-godkendelse

  2. brug mysql SUM() i en WHERE-sætning

  3. Med henvisning til et udvalgt aggregeret kolonnealias i have-sætningen i Postgres

  4. SQL vælg elementer, hvor summen af ​​feltet er mindre end N