Tutorial SQL

SQL INÍCIO Introdução SQL Sintaxe SQL Seleção SQL SQL Select Distinto SQL Onde SQL E, Ou, Não Ordem SQL por SQL Inserir em Valores Nulos SQL Atualização SQL Excluir SQL SQL Select Top SQL Mínimo e Máximo Contagem SQL, Média, Soma Como SQL Curingas SQL Entrada SQL SQL entre Alias ​​SQL Junções SQL SQL Inner Join SQL Left Join Associação à direita do SQL Associação completa SQL Auto-junção SQL União SQL SQL Agrupar por SQL tendo SQL existe SQL Qualquer, Todos SQL Selecionar em SQL Inserir na seleção Caso SQL Funções Nulas SQL Procedimentos armazenados SQL Comentários SQL Operadores SQL

Banco de dados SQL

SQL Criar banco de dados SQL Drop DB Banco de dados de backup SQL SQL Criar Tabela Tabela de descarte de SQL Tabela de alteração SQL Restrições SQL SQL não nulo SQL exclusivo Chave Primária SQL Chave estrangeira SQL Verificação SQL Padrão SQL Índice SQL Incremento automático de SQL Datas SQL Visualizações SQL Injeção SQL Hospedagem SQL Tipos de dados SQL

Referências SQL

Palavras-chave SQL Funções do MySQL Funções do SQL Server Funções de acesso MS Referência Rápida SQL

Exemplos SQL

Exemplos SQL Teste SQL Exercícios de SQL Certificado SQL

Restrição SQL FOREIGN KEY


Restrição SQL FOREIGN KEY

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.



SQL FOREIGN KEY em CREATE TABLE

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

MySQL:

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

SQL Server / Oracle / MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY 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:

MySQL / SQL Server / Oracle / MS Access:

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)
);

SQL FOREIGN KEY em ALTER TABLE

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

MySQL / SQL Server / Oracle / MS Access:

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:

MySQL / SQL Server / Oracle / MS Access:

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:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;