Chave estrangeira do SQL Server: como criar com exemplo
⚡ Resumo Inteligente
Em SQL Server, uma chave estrangeira garante a integridade referencial ao vincular uma tabela filha a uma tabela pai. Cada valor de chave estrangeira deve já existir na chave primária referenciada da tabela pai.

O que é uma CHAVE ESTRANGEIRA?
Uma chave estrangeira fornece uma maneira de garantir a integridade referencial dentro de um sistema. SQL ServerEm termos simples, uma chave estrangeira garante que os valores presentes em uma tabela também estejam presentes em outra tabela.
Regras para CHAVE ESTRANGEIRA
- Valores NULL são permitidos em uma chave estrangeira SQL.
- A tabela referenciada é chamada de tabela pai.
- A tabela que contém a chave estrangeira é chamada de tabela filha.
- A chave estrangeira na tabela filha faz referência a chave primária na tabela principal.
- Essa relação entre pais e filhos reforça a regra conhecida como “integridade referencial”.
O diagrama abaixo resume todos os pontos acima referentes à chave estrangeira.
Como criar uma CHAVE ESTRANGEIRA em SQL
Você pode criar uma chave estrangeira no SQL Server de duas maneiras:
SQL Server Management Studio
Tabela pai: Suponha que temos uma tabela pai existente chamada 'Curso'. Course_ID e Course_name são duas colunas, com Course_Id como chave primária.
Tabela filha: Precisamos criar a segunda tabela como uma tabela filha. 'Course_ID' e 'Course_Strength' são suas duas colunas. No entanto, 'Course_ID' será a chave estrangeira.
Passo 1) Clique com o botão direito do mouse em Tabelas > Novo > Tabela…
Passo 2) Insira os nomes das duas colunas: 'Course_ID' e 'Course_Strength'. Clique com o botão direito do mouse na coluna 'Course_Id' e, em seguida, clique em Relacionamento.
Passo 3) Em 'Relações de chave estrangeira', clique em 'Adicionar'.
Passo 4) Em 'Especificação de tabelas e colunas', clique no ícone '…'.
Passo 5) Selecione 'COURSE' como 'Tabela de Chave Primária' e 'Tabela de Chave Estrangeira' como a nova tabela que está sendo criada, a partir do menu suspenso.
Etapa 6) Para a 'Tabela de Chave Primária', selecione a coluna 'Course_Id' como a coluna da tabela de chave primária.
Na seção 'Tabela de Chave Estrangeira', selecione a coluna 'Course_Id' como a coluna da tabela de chave estrangeira. Clique em OK.
Passo 7) Clique em Adicionar.
Passo 8) Dê o nome de 'Course_Strength' à tabela e clique em OK.
Resultado: Estabelecemos uma relação pai-filho entre 'Curso' e 'Força_do_Curso'.
T-SQL: Criar uma tabela pai-filho usando T-SQL
Tabela pai: Reconsidere que já temos uma tabela pai existente com o nome 'Curso'. Course_ID e Course_name são duas colunas, sendo Course_Id a chave primária.
Tabela filha: Precisamos criar a segunda tabela como tabela filha com o nome 'Course_Strength_TSQL'. 'Course_ID' e 'Course_Strength' serão suas duas colunas. No entanto, 'Course_ID' será a chave estrangeira.
A seguir está a sintaxe para criar uma mesa com uma CHAVE ESTRANGEIRA.
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.
- As colunas column_1 e column_2 devem ser adicionadas à tabela.
- fkey_name é o nome da restrição de chave estrangeira a ser criada.
- child_column1, child_column2 … child_column_n são as colunas da tabela filha que fazem referência à chave primária na tabela pai.
- `parentTable` é o nome da tabela pai cuja chave é referenciada na tabela filha.
- parent_column1, parent_column2 … parent_column_n são as colunas que compõem a chave primária da tabela pai.
- ON DELETE é um parâmetro opcional que especifica o que acontece com os dados filhos após a exclusão dos dados pais. Os valores incluem NO ACTION, SET NULL, CASCADE ou SET DEFAULT.
- O parâmetro opcional ON UPDATE especifica o que acontece com os dados filhos após a atualização dos dados pais. Os valores incluem NO ACTION, SET NULL, CASCADE ou SET DEFAULT.
- NENHUMA AÇÃO significa que nada acontece com os dados filhos depois que os dados pais são atualizados ou excluídos.
- CASCADE significa que os dados filhos são excluídos ou atualizados após os dados pais terem sido excluídos ou atualizados.
- SET NULL significa que os dados filhos são definidos como nulos após os dados pais serem atualizados ou excluídos.
- DEFINIR PADRÃO significa que os dados filhos são definidos com seu valor padrão após uma atualização ou exclusão nos dados pais.
Vejamos um exemplo de chave estrangeira que cria uma tabela com uma coluna como chave estrangeira, usando um tipo de dados para cada coluna.
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.
Resultado: Estabelecemos uma relação pai-filho entre 'Curso' e 'Força_do_Curso_TSQL'.
Usando ALTER TABLE
Agora vamos aprender como adicionar uma chave estrangeira em uma tabela já existente no SQL Server usando a instrução ALTER TABLE. Usaremos a sintaxe 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.
- As colunas column_1 e column_2 devem ser adicionadas à tabela.
- fkey_name é o nome da restrição de chave estrangeira a ser criada.
- child_column1, child_column2 … child_column_n são as colunas da tabela filha que fazem referência à chave primária na tabela pai.
- `parentTable` é o nome da tabela pai cuja chave é referenciada na tabela filha.
- parent_column1, parent_column2 … parent_column_n são as colunas que compõem a chave primária da tabela pai.
Exemplo de ALTER TABLE para adicionar 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 analisar os dados da nossa tabela principal, CURSO.
Inquérito:
SELECT * from COURSE;
Agora vamos inserir algumas linhas na tabela filha 'Course_Strength_TSQL'. Tentaremos inserir dois tipos de linhas:
- O primeiro tipo, para o qual Course_Id na tabela filha existe em Course_Id da tabela pai, ou seja, Course_Id = 1 e 2.
- O segundo tipo, para o qual Course_Id na tabela filha não existe em Course_Id na 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');
Resultado: Vamos executar a consulta juntos para ver nossas tabelas pai e filha.
As linhas com Course_ID 1 e 2 existem na tabela Course_Strength. O Course_ID 5, no entanto, é uma exceção, pois não possui uma linha correspondente na tabela principal.

















