sql >> Databasteknik >  >> RDS >> Mysql

MySQL Lägg till främmande nyckel

Foreign Key hjälper till att upprätta databasrelationer och upprätthålla referensintegritet. De hjälper till att länka en eller flera kolumner i en tabell till en annan tabell. Så här lägger du till främmande nyckel i MySQL.

Hur man lägger till främmande nyckel i MySQL

Här är stegen för att lägga till främmande nyckel i MySQL. Du kan lägga till en främmande nyckel med CREATE TABLE- eller ALTER TABLE-satser i SQL.

Här är syntaxen för att skapa främmande nyckel i MySQL.

Med ALTER TABLE

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

I ovanstående fråga, tabellnamn är tabellen där du vill lägga till främmande nyckel. constraint_name är namnet på den främmande nyckelbegränsningen. utländsk_nyckelnamn, … är listan över kolumner för främmande nyckel.

föräldertabell är tabellen som din främmande_nyckel refererar till, följt av en lista med kolumnnamn i den tabellen

Bonus Läs:MySQL Alter Table Column

Med CREATE TABLE

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

I ovanstående fråga, tabellnamn är tabellen där du vill lägga till främmande nyckel. constraint_name är namnet på den främmande nyckelbegränsningen. utländsk_nyckelnamn, … är listan över kolumner för främmande nyckel.

föräldertabell är tabellen som din främmande_nyckel refererar till, följt av en lista med kolumnnamn i den tabellen.

Obs , i ALTER TABLE behöver du använda ADD CONSTRAINT medan du i CREATE TABLE endast behöver använda sökordet CONSTRAINT.

Bonus Läs:MySQL DROP FOREIGN KEY Constraint

Exempel på MySQL LÄGG TILL UTLÄNDSKA NYCKEL

Låt oss säga att du har följande tabeller.

Låt oss skapa två tabeller (kategorier och beställningar ) och lägg till begränsning av främmande nyckel till ordrar , med hänvisning till id kolumn i kategorier bord.

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

Låt oss ta en titt på samma exempel med ALTER TABLE-satsen.

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 enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. Vad är skillnaden mellan Scope_Identity(), Identity(), @@Identity och Ident_Current()?

  2. Awesome 24 Concurrent Manager Intervju frågor

  3. Skillnad mellan WITH-sats och underfråga?

  4. Formatera sysjobhistoria datum och varaktighet Kolumner i SQL Server