Tutorial MySQL

MySQL HOME Introdução ao MySQL MySQL RDBMS

MySQL SQL

MySQL SQL MySQL SELECIONAR MySQL ONDE MySQL E, OU, NÃO MySQL ORDER BY MySQL INSERT INTO Valores NULL do MySQL ATUALIZAÇÃO DO MySQL MySQL EXCLUIR MySQL LIMIT MySQL MIN e MAX MySQL COUNT, AVG, SUM MySQL LIKE Caracteres curinga do MySQL MySQL IN MySQL ENTRE Aliases do MySQL Junções do MySQL MySQL INNER JOIN MySQL LEFT JOIN MySQL RIGHT JOIN MySQL CROSS JOIN Auto-ingresso do MySQL MySQL UNION MySQL GROUP BY MySQL TENDO O MySQL EXISTE MySQL QUALQUER, TODOS MySQL INSERT SELECT CASO MySQL Funções Nulas do MySQL Comentários do MySQL Operadores MySQL

Banco de dados MySQL

MySQL Criar banco de dados MySQL Drop DB MySQL Criar Tabela Tabela de descarte do MySQL Tabela de alteração do MySQL Restrições do MySQL MySQL não nulo MySQL exclusivo Chave primária do MySQL Chave estrangeira do MySQL Verificação do MySQL Padrão do MySQL MySQL Criar Índice Incremento automático do MySQL Datas do MySQL Visualizações do MySQL

Referências do MySQL

Tipos de dados MySQL Funções do MySQL

Exemplos MySQL

Exemplos MySQL Teste do MySQL Exercícios do MySQL

Restrição de chave estrangeira do MySQL


Restrição de chave estrangeira do MySQL

A FOREIGN KEYrestrição é usada para evitar ações que destruam links entre tabelas.

A FOREIGN KEYé um campo (ou coleção de campos) em uma tabela, que se refere a PRIMARY KEYem outra tabela.

A tabela com a chave estrangeira é chamada de tabela filha e a tabela com a chave primária é chamada de tabela referenciada ou pai.

Observe as duas tabelas a seguir:

Tabela de pessoas

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

Tabela de pedidos

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

Observe que a coluna "PersonID" na tabela "Pedidos" aponta para a coluna "PersonID" na tabela "Pessoas".

A coluna "PersonID" na tabela "Persons" está PRIMARY KEYna tabela "Persons".

A coluna "PersonID" na tabela "Pedidos" está FOREIGN KEYna tabela "Pedidos".

A FOREIGN KEYrestrição impede que dados inválidos sejam inseridos na coluna de chave estrangeira, pois deve ser um dos valores contidos na tabela pai.



CHAVE ESTRANGEIRA em CREATE TABLE

O SQL a seguir cria um FOREIGN KEYna coluna "PersonID" quando a tabela "Orders" é criada:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

Para permitir a nomeação de uma FOREIGN KEYrestrição e para definir uma FOREIGN KEYrestrição em várias colunas, use a seguinte sintaxe SQL:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

CHAVE ESTRANGEIRA em ALTER TABLE

Para criar uma FOREIGN KEYrestrição na coluna "PersonID" quando a tabela "Orders" já estiver criada, use o seguinte SQL:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Para permitir a nomeação de uma FOREIGN KEYrestrição e para definir uma FOREIGN KEYrestrição em várias colunas, use a seguinte sintaxe SQL:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

SOLTE uma restrição de chave estrangeira

Para eliminar uma FOREIGN KEYrestrição, use o seguinte SQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;