sql >> Base de Datos >  >> RDS >> Mysql

MySQL Agregar clave externa

Foreign Key ayuda a establecer relaciones de base de datos y mantener la integridad referencial. Ayudan a vincular una o más columnas de una tabla a otra tabla. Aquí se explica cómo agregar una clave externa en MySQL.

Cómo agregar una clave externa en MySQL

Estos son los pasos para agregar una clave externa en MySQL. Puede agregar una restricción de clave externa mediante las declaraciones CREATE TABLE o ALTER TABLE en SQL.

Esta es la sintaxis para crear una clave externa en MySQL.

Usando ALTER TABLE

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

En la consulta anterior, table_name es la tabla donde desea agregar la clave externa. nombre_restricción es el nombre de la restricción de clave externa. nombre_clave_extranjera, … es la lista de columnas de clave externa.

tabla_principal es la tabla a la que hace referencia su clave externa, seguida de una lista de nombres de columnas en esa tabla

Lectura adicional:MySQL Alter Table Column

Uso de CREAR TABLA

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

En la consulta anterior, table_name es la tabla donde desea agregar la clave externa. nombre_restricción es el nombre de la restricción de clave externa. nombre_clave_extranjera, … es la lista de columnas de clave externa.

tabla_principal es la tabla a la que hace referencia su clave_foránea, seguida de una lista de nombres de columna en esa tabla.

Tenga en cuenta , en ALTER TABLE necesita usar ADD CONSTRAINT mientras que en CREATE TABLE necesita usar solo la palabra clave CONSTRAINT.

Lectura adicional:Restricción DROP FOREIGN KEY de MySQL

Ejemplos de AGREGAR CLAVE EXTRANJERA de MySQL

Digamos que tienes las siguientes tablas.

Vamos a crear 2 tablas (categorías y pedidos ) y agregue una restricción de clave externa a pedidos , haciendo referencia a id columna en categorías mesa.

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    |                |
+-------------+---------+------+-----+---------+----------------+

Lectura adicional:MySQL DROP RESTRICCIÓN ÚNICA

Echemos un vistazo al mismo ejemplo usando la instrucción 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 facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!