Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Adicionar chave estrangeira


A chave estrangeira ajuda a estabelecer relacionamentos de banco de dados e manter a integridade referencial. Eles ajudam a vincular uma ou mais colunas em uma tabela a outra tabela. Veja como adicionar chave estrangeira no MySQL.


Como adicionar chave estrangeira no MySQL


Aqui estão as etapas para adicionar chave estrangeira no MySQL. Você pode adicionar restrição de chave estrangeira usando instruções CREATE TABLE ou ALTER TABLE no SQL.

Aqui está a sintaxe para criar uma chave estrangeira no MySQL.

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

Na consulta acima, table_name é a tabela onde você deseja adicionar a chave estrangeira. constraint_name é o nome da restrição de chave estrangeira. foreign_key_name, … é a lista de colunas de chave estrangeira.

tabela_pai é a tabela à qual sua chave estrangeira faz referência, seguida pela lista de nomes de coluna nessa tabela



Bônus de leitura:coluna da tabela de alteração do MySQL



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

Na consulta acima, table_name é a tabela onde você deseja adicionar a chave estrangeira. constraint_name é o nome da restrição de chave estrangeira. foreign_key_name, … é a lista de colunas de chave estrangeira.

tabela_pai é a tabela à qual sua chave estrangeira faz referência, seguida pela lista de nomes de coluna nessa tabela.

Observe , em ALTER TABLE você precisa usar ADD CONSTRAINT enquanto em CREATE TABLE você precisa usar apenas a palavra-chave CONSTRAINT.



Leitura Bônus:Restrição DROP FOREIGN KEY do MySQL


Exemplos de ADICIONAR CHAVE ESTRANGEIRA do MySQL


Digamos que você tenha as seguintes tabelas.

Vamos criar 2 tabelas (categorias e pedidos ) e adicione a restrição de chave estrangeira aos pedidos , referenciando id coluna em categorias tabela.
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    |                |
+-------------+---------+------+-----+---------+----------------+



Bônus de leitura:MySQL DROP UNIQUE CONSTRAINT



Vamos dar uma olhada no mesmo exemplo usando a instrução 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    |                |
+-------------+---------+------+-----+---------+----------------+



O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!