SQL FOREIGN KEY: Como criar no SQL Server com exemplo

O que é uma CHAVE ESTRANGEIRA?

A chave estrangeira fornece uma maneira de impor a integridade referencial no SQL Server. Em palavras simples, a chave estrangeira garante que os valores de uma tabela estejam presentes em outra tabela.

Regras para CHAVE ESTRANGEIRA

  • NULL é permitido na chave estrangeira SQL.
  • A tabela que está sendo referenciada é chamada de Tabela Pai
  • A tabela com a chave estrangeira em SQL é chamada de tabela filha.
  • A chave estrangeira SQL na tabela filho faz referência à chave primária na tabela pai.
  • Esse relacionamento pai-filho impõe a regra conhecida como “Integridade Referencial”.

O exemplo abaixo de chave estrangeira em SQL com diagrama resume todos os pontos acima para FOREIGN KEY

Regras para CHAVE ESTRANGEIRA em SQL
Como funciona a chave estrangeira

Como criar uma CHAVE ESTRANGEIRA em SQL

Podemos criar um chave estrangeira no servidor SQL em 2 maneiras:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

Mesa-mãe: Digamos que temos uma tabela pai existente como 'Curso'. Course_ID e Course_name são duas colunas com Course_Id como chave primária.

Crie CHAVE ESTRANGEIRA em SQL

Mesa filho: Precisamos criar a segunda tabela como uma tabela filha. 'Course_ID' e 'Course_Strength' como duas colunas. No entanto, 'Course_ID' deve ser uma chave estrangeira.

Passo 1) Clique com o botão direito em Tabelas>Novo> Tabela…

Crie CHAVE ESTRANGEIRA em SQL

Passo 2) Insira o nome de duas colunas como 'Course_ID' e 'Course_Strength'. Clique com o botão direito na coluna 'Course_Id'. Agora clique em Relacionamento.

Crie CHAVE ESTRANGEIRA em SQL

Passo 3) In 'Relacionamento de chave estrangeira,' Clique 'Adicionar'

Crie CHAVE ESTRANGEIRA em SQL

Passo 4) Em 'Especificações de tabela e coluna' clique em ícone '…'

Crie CHAVE ESTRANGEIRA em SQL

Passo 5) Selecione 'Tabela de chave primária' como 'CURSO' e a nova tabela agora sendo criada como 'Tabela de chave estrangeira' no menu suspenso.

Crie CHAVE ESTRANGEIRA em SQL

Passo 6) 'Tabela de chave primária' – Selecione a coluna 'Course_Id' como coluna 'Tabela de chave primária'.

'Tabela de chave estrangeira' - Selecione a coluna 'Course_Id' como coluna 'Tabela de chave estrangeira'. Clique OK.

Crie CHAVE ESTRANGEIRA em SQL

Passo 7) Clique em Adicionar.

Crie CHAVE ESTRANGEIRA em SQL

Passo 8) Dê o nome da tabela como 'Course_Strength' e clique em OK.

Crie CHAVE ESTRANGEIRA em SQL

Resultado: Definimos o relacionamento pai-filho entre 'Curso' e 'Curso_força.'

Crie CHAVE ESTRANGEIRA em SQL

T-SQL: Crie uma tabela pai-filho usando T-SQL

Mesa-mãe: Reconsidere, temos uma tabela pai existente com o nome da tabela como 'Curso'.

Course_ID e Course_name são duas colunas com Course_Id como chave primária.

Crie uma tabela pai-filho usando T-SQL

Mesa filho: Precisamos criar a segunda tabela como tabela filha com o nome 'Course_Strength_TSQL'.

'Course_ID' e 'Course_Strength' como duas colunas para a tabela filho Course_Strength_TSQL.' No entanto, 'Course_ID' deve ser uma chave estrangeira.

Abaixo está a sintaxe para criar uma tabela com FOREIGN KEY

Sintaxe:

CREATE TABLE childTable
(
  column_1 datatype [ NULL |NOT NULL ],
  column_2 datatype [ NULL |NOT NULL ],
  ...

  CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n)
    [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ]
    [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] 
);

Aqui está uma descrição dos parâmetros acima:

  • childTable é o nome da tabela que será criada.
  • coluna_1, coluna_2- as colunas a serem adicionadas à tabela.
  • fkey_name- o nome da restrição de chave estrangeira a ser criada.
  • child_column1, child_column2…child_column_n- o nome das colunas chidTable para referenciar a chave primária em parentTable.
  • parentTable- o nome da tabela pai cuja chave deve ser referenciada na tabela filha.
  • parent_column1, parent_column2,… parent_column3- as colunas que constituem a chave primária da tabela pai.
  • EM EXCLUIR. Um parâmetro opcional. Especifica o que acontece com os dados filho após a exclusão dos dados pai. Alguns dos valores para este parâmetro incluem NO ACTION, SET NULL, CASCADE ou SET DEFAULT.
  • ON UPDATE- Um parâmetro opcional. Ele especifica o que acontece com os dados filho após a atualização dos dados pai. Alguns dos valores para este parâmetro incluem NO ACTION, SET NULL, CASCADE ou SET DEFAULT.
  • NO ACTION- usado junto com ON DELETE e ON UPDATE. Isso significa que nada acontecerá aos dados filho após a atualização ou exclusão dos dados pai.
  • CASCADE- usado junto com ON DELETE e ON UPDATE. Os dados dos filhos serão excluídos ou atualizados depois que os dados dos pais forem excluídos ou atualizados.
  • SET NULL- usado junto com ON DELETE e ON UPDATE. O filho será definido como nulo depois que os dados do pai forem atualizados ou excluídos.
  • SET DEFAULT- usado junto com ON DELETE e ON UPDATE. Os dados filho serão definidos com valores padrão após uma atualização ou exclusão dos dados pai.

Vamos ver um exemplo de chave estrangeira em SQL para criar uma tabela com uma coluna como CHAVE ESTRANGEIRA:

Exemplo de chave estrangeira em SQL

Inquérito:

CREATE TABLE Course_Strength_TSQL
(
Course_ID Int,
Course_Strength Varchar(20) 
CONSTRAINT FK FOREIGN KEY (Course_ID)
REFERENCES COURSE (Course_ID)	
)

Passo 1) Execute a consulta clicando em executar.

Chave estrangeira em SQL

Resultado: Definimos o relacionamento pai-filho entre 'Curso' e 'Curso_força_TSQL.'

Chave estrangeira em SQL

Usando ALTER TABLE

Agora aprenderemos como usar chave estrangeira em SQL e adicionar chave estrangeira no servidor SQL usando a instrução ALTER TABLE, usaremos a sintaxe fornecida abaixo:

ALTER TABLE childTable
ADD CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);

Aqui está uma descrição dos parâmetros usados ​​acima:

  • childTable é o nome da tabela que será criada.
  • coluna_1, coluna_2- as colunas a serem adicionadas à tabela.
  • fkey_name- o nome da restrição de chave estrangeira a ser criada.
  • child_column1, child_column2…child_column_n- o nome das colunas chidTable para referenciar a chave primária em parentTable.
  • parentTable- o nome da tabela pai cuja chave deve ser referenciada na tabela filha.
  • parent_column1, parent_column2,… parent_column3- as colunas que constituem a chave primária da tabela pai.

Exemplo de alteração de tabela e adição de chave estrangeira:

ALTER TABLE department
ADD CONSTRAINT fkey_student_admission
    FOREIGN KEY (admission)
    REFERENCES students (admission);

Criamos uma chave estrangeira chamada fkey_student_admission na tabela de departamento. Esta chave estrangeira faz referência à coluna de admissão da tabela de alunos.

Exemplo de consulta FOREIGN KEY

Primeiro, vamos ver os dados da nossa tabela pai, COURSE.

Inquérito:

SELECT * from COURSE;

Exemplo de consulta FOREIGN KEY

Agora vamos inserir alguma linha na tabela Child: 'Curso_força_TSQL.'

Tentaremos inserir dois tipos de linhas

  1. O primeiro tipo, para o qual Course_Id na tabela filho existirá no Course_Id da tabela pai. ou seja, Course_Id = 1 e 2
  2. O segundo tipo, para o qual Course_Id na tabela filho não existe na tabela Course_Id da tabela pai. ou seja, Course_Id = 5

Inquérito:

Insert into COURSE_STRENGTH values (1,'SQL');
Insert into COURSE_STRENGTH values (2,'Python');
Insert into COURSE_STRENGTH values (5,'PERL');

Exemplo de consulta FOREIGN KEY

Resultado: Vamos executar a consulta juntos para ver nossa tabela pai e filho

Existem linhas com Course_ID 1 e 2 na tabela Course_strength. Considerando que Course_ID 5 é uma exceção.

Exemplo de consulta FOREIGN KEY

Resumo

  • Cada valor da chave estrangeira deve fazer parte Chave primária de outras tabelas.
  • A chave estrangeira do MySQL pode fazer referência a outra coluna na mesma tabela. Essa referência é conhecida como autorreferência.
  • Restrição de chave estrangeira SQL: é usada para proteger os links entre tabelas e dados inválidos a serem inseridos na coluna Chave estrangeira.
  • Você pode criar uma chave estrangeira usando Create Table, Alter Table ou SQL Server Management Studio.
  • Aqui está a diferença entre chave primária e chave estrangeira: Clique aqui