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.

















