O que é uma chave composta em SQL?
Uma chave composta em SQL pode ser definida como uma combinação de várias colunas, e essas colunas são usadas para identificar todas as linhas que estão envolvidas exclusivamente. Mesmo que uma única coluna não possa identificar qualquer linha com exclusividade, uma combinação de mais de uma coluna pode identificar com exclusividade qualquer registro. Em outras palavras, a chave de combinação também pode ser descrita como uma chave primária que está sendo criada usando várias colunas. No entanto, os tipos de dados de diferentes colunas podem ser diferentes uns dos outros. Você também pode combinar todas as chaves estrangeiras para criar uma chave composta em SQL .
Sintaxe para declarar uma chave composta em SQL:
——Sintaxe para criar uma chave composta——
——combinando 3 colunas: COL1, COL2, COL3—–
CONSTRAINT COMPOSITE_KEY_NAME PRIMARY KEY (COL1, COL2, COL3)
Descrição:
- COMPOSITE_KEY_NAME: Este é o nome da nova chave composta criada pela combinação de duas ou mais colunas.
Observe que o tipo de dados de todas as colunas em uma chave composta pode ser diferente.
- Colunas: A versão mais recente do SQL suporta a combinação de mais de 16 colunas. O tipo de dados das colunas combinadas para formar uma chave composta pode ser diferente para todas as colunas.
Quando a chave composta aparece na imagem?
Você já viu que as chaves compostas são usadas para identificar todas as linhas que estão envolvidas exclusivamente. As chaves compostas em SQL provam ser úteis nos casos em que você tem um requisito de chaves que podem identificar registros de maneira única para melhores propósitos de pesquisa, mas não possui nenhuma coluna única. Nesses casos, você deve combinar várias colunas para criar uma chave exclusiva.
Agora, entenda este conceito com um exemplo para melhor compreensão. Suponha que você esteja lidando com os dados dos funcionários de uma empresa e deseja pesquisar um funcionário chamado Rahul com o nome dele em seu banco de dados. Mas, em tais casos de pesquisa por nome, existe uma grande possibilidade de que mais de um funcionário compartilhe o mesmo nome. Isso também aconteceu neste caso. Você encontrou vários funcionários que compartilham o mesmo nome, Rahul. Agora, para superar esse problema, como você já sabe que os números dos funcionários são sempre únicos, você pode otimizar sua pesquisa considerando a coluna do nome junto com a coluna do número do funcionário como uma única coluna. Este cenário é um dos casos de uso de chaves compostas.
Sintaxe para criar uma chave composta para uma tabela em SQL:
—-Sintaxe para criar uma chave composta para uma tabela
—-combinando algumas colunas
Criar tabela nome_tabela (
COL1 data_type_1 NÃO NULO,
COL2 data_type_2 NOT NULL,
COL3 data_type_3,
COL4 data_type_4,
COLN data_type_n,
—–Declare a chave composta—–
—-aqui COL1, COL3 e COL4 são—-
—-formando a chave composta—-
CHAVE PRIMÁRIA CONSTRAINT COMP_NAME (COL1, COL3, COL4)
);
Considere um exemplo em que você entenderá o conceito de chaves compostas em SQL usando uma tabela STUDENT.
Mesa ALUNO:
S_Name |
S_Class |
Parent_Contact_No |
S_Age |
Mehul |
6 |
8700867330 |
11 |
Rashi |
5 |
8700867330 |
10 |
Mehul |
6 |
9990155289 |
11 |
Vansh |
7 |
9354226009 |
12 |
Ishita |
9 |
8681012213 |
14 |
Na tabela acima, você pode notar que não há uma coluna única com valores exclusivos. Mas, combinando as colunas: S_Name e Parent_Contact_No, você pode realizar a tarefa de obter uma coluna única.
Consultas SQL para criar a tabela acima e declarar uma chave composta usando as colunas dessa tabela.
—-crie uma tabela chamada STUDENT—-
Criar mesa ALUNO
(
—-declarando colunas com diferentes tipos de dados—-
S_Name varchar (30),
S_Class inteiro,
Parent_Contact_No inteiro,
S_Age inteiro,
—-declara a chave composta—-
—-colunas: S_Name e Parent_Contact_No—-
—-são combinados para criar a chave composta—-
—-ambas as colunas têm tipos de dados diferentes—-
CONSTRAINT My_Composite_Key PRIMARY KEY (S_Name, Parent_Contact_No)
);
—-adicione valores à tabela—-
Insira nos valores de ESTUDANTE (‘Mehul’, 6, 8700867330, 11);
Insira nos valores de ESTUDANTE (‘Rashi’, 5, 8700867330, 10);
Insira nos valores de ESTUDANTE (‘Mehul’, 6, 9990155289, 11);
Insira nos valores STUDENT (‘Vansh’, 7, 9354226009, 12);
Insira nos valores de ESTUDANTE (‘Ishita’, 9, 8681012213, 14);
—-selecione todos os valores da tabela—-
—-para exibir o conteúdo—-
Selecione * de ALUNO
Como usar a chave composta em SQL?
A chave composta difere de uma chave primária e é importante saber como as duas variam, tanto na sintaxe quanto no uso. Pode-se dizer que a combinação de um conjunto de múltiplas colunas em uma tabela resulta em uma chave primária, pois terá um valor único em cada linha.
-
Declaração de chave primária
A chave primária é uma restrição que reconhece todas as colunas em uma linha como únicas. Para que uma restrição seja reconhecida como uma chave primária, ela deve conter valores exclusivos em toda a linha e nenhum dos valores deve ser NULL. Em uma tabela, só pode haver uma chave primária. Uma chave primária pode ter uma ou tantas colunas quanto possível.
Sintaxe para criar uma chave primária em SQL:
-
No nível da coluna:
—-criar uma tabela—-
Criar tabela Table_Name
(
COL1 data_type1 NÃO NULO,
COL2 data_type2 NÃO NULO,
COL3 data_type3
—-declara a chave primária—-
—-depois de declarar todas as colunas—-
CHAVE PRIMÁRIA (COL1)
);
-
No nível da linha:
—-criar uma tabela—-
Criar tabela Table_Name
(
—-declara a chave primária—-
—-ao declarar as colunas—-
COL1 data_type1 PRIMARY KEY,
COL2 data_type2 NÃO NULO,
COL3 data_type3,
);
Os exemplos a seguir ilustram dois métodos para criar uma chave primária em SQL.
Método 1:
Após a criação de todas as colunas da tabela.
—-crie uma tabela chamada STUDENT—-
Criar mesa ALUNO
(
—-declarando colunas com diferentes tipos de dados—-
S_ID inteiro NÃO NULO,
S_Name varchar (30) NÃO NULO,
S_Class inteiro,
Parent_Contact_No inteiro,
S_Age inteiro,
—-declara a chave primária—-
CHAVE PRIMÁRIA (S_ID)
);
Método 2:
Ao criar uma coluna na tabela.
—-crie uma tabela chamada STUDENT—-
Criar mesa ALUNO
(
—-declara a chave primária—–
——ao criar a coluna—-
S_ID inteiro PRIMARY KEY,
S_Name varchar (30),
S_Class inteiro NOT NULL,
Parent_Contact_No inteiro,
S_Age inteiro,
);
-
Declaração de chave composta
Quando mais de uma coluna ou campo em uma tabela são combinados para realizar a tarefa de identificar valores de linha com exclusividade, essa chave composta pode ser uma chave primária ou candidata dessa tabela.
Sintaxe para criar uma chave composta em SQL:
—-criar uma tabela—-
Criar tabela nome_tabela (
COL1 data_type_1 NÃO NULO,
COL2 data_type_2 NOT NULL,
COL3 data_type_3,
COLN data_type_n,
—–Declare a chave composta—–
CHAVE PRIMÁRIA CONSTRAINT COMP_NAME (COL1, COL3, COL4)
);
Exemplos de chaves compostas em SQL.
Vamos entender as chaves compostas com a ajuda dos seguintes exemplos:
Exemplo 1: considere as tabelas do comprador e do item:
Tabela COMPRADOR:
B_ID (chave primária) |
B_Name |
B_Contact_No |
B_Address |
101 |
Mohan |
8700867330 |
Delhi |
102 |
Pankaj |
8681012213 |
Noida |
103 |
Diya |
8090100224 |
Saket |
104 |
Rohit |
9354226009 |
Gurugram |
105 |
Gaurav |
9990155289 |
Noida |
Aqui, você pode ver que a coluna B_ID identifica todos os registros da tabela de forma exclusiva, portanto, é a chave primária da tabela BUYER. E esta coluna funcionará como a chave estrangeira de outro ITEM de tabela.
Consultas SQL para a tabela BUYER.
Criar mesa COMPRADOR
(
—-declarando colunas da tabela—-
B_ID int NOT NULL,
B_Name varchar (30),
B_Contact_No int,
B_Address varchar (50),
—-declara a chave primária—-
CHAVE PRIMÁRIA (B_ID)
);
—-adicione valores à tabela—-
Insira os valores do COMPRADOR (101,’Mohan’, 8700867330,’Delhi’);
Insira os valores do COMPRADOR (102,’Pankaj’, 8681012213,’Noida’);
Insira os valores do COMPRADOR (103,’Diya’, 8090100224,’Saket’);
Insira nos valores COMPRADOR (104,’Rohit’, 8090100224,’Gurugram’);
Insira os valores do COMPRADOR (105,’Gaurav’, 9990155289,’Noida’);
—-selecione todos os valores da tabela—-
—-para exibir o conteúdo—-
Selecione * do COMPRADOR
Tabela ITEM:
B_ID (chave estrangeira) |
Order_No |
I_ID |
I_Name |
I_Quantity |
101 |
1 |
201 |
Laptop |
1 |
102 |
2 |
205 |
Fones de ouvido |
2 |
103 |
3 |
202 |
Celular |
2 |
102 |
2 |
202 |
Teclado |
1 |
101 |
1 |
204 |
Palestrante |
4 |
B_ID, Order_No, I_ID são combinados para formar a chave composta.
Na tabela ITEM, a coluna B_ID atua como uma chave estrangeira e não há coluna que possa atuar como chave primária. Isso significa que não há campo que possa ser usado para identificar todos os registros da tabela de forma exclusiva. Portanto, para fazer uma chave primária, você pode criar uma chave composta combinando as colunas: B_ID, Order_No e I_ID. Juntas, essas 3 colunas podem se tornar uma chave primária para a tabela ITEM.3
Consultas SQL para a tabela ITEM.
—-crie uma tabela chamada ITEM—-
Criar tabela ITEM
(
—-declarando colunas da tabela—-
B_ID int NOT NULL,
Order_No int,
I_ID int (10),
I_Name varchar (20),
I_Quantity int,
—-declara a chave composta—-
CONSTRAINT MyCompositeKey PRIMARY KEY (B_ID, Order_No, I_ID)
);
—-adicione valores à tabela—-
Insira nos valores ITEM (101, 1, 201,’Laptop’, 1);
Insira em valores ITEM (102, 2, 205,’HeadPhones’, 2);
Insira em valores ITEM (103, 3, 202,’Celular’, 2);
Insira em valores ITEM (102, 2, 202,’Teclado’, 1);
Insira os valores ITEM (101, 1, 204,’Palestrante’, 4);
—-selecione todos os valores da tabela—-
—-para exibir o conteúdo—-
Selecione * no ITEM
Exemplo 2: Considere o aluno da mesa:
Mesa ALUNO:
S_Name |
S_Class |
Parent_Contact_No |
Payment_Status |
Mehul |
6 |
8700867330 |
Sim |
Rashi |
5 |
8700867330 |
Sim |
Mehul |
6 |
9990155289 |
Não |
Vansh |
7 |
9354226009 |
Sim |
Ishita |
9 |
8681012213 |
Não |
S_Name, S_Class, Parent_Contact_No são combinados para formar a chave composta.
A tabela ilustrada acima representa os registros dos alunos com o status do pagamento das taxas. Aqui, você também pode notar que nenhuma coluna individual pode ser usada para identificar todos os valores da tabela como únicos. No entanto, você pode combinar as três primeiras colunas: S_Name, S_Class e Parent_Contact_No para criar uma chave composta.
Consultas SQL para a tabela ITEM.
—-crie uma tabela chamada STUDENT—-
Criar mesa ALUNO
(
—-declarando colunas com diferentes tipos de dados—-
S_Name varchar (30),
S_Class inteiro,
Parent_Contact_No inteiro,
Payment_Status varchar (4),
—-declara a chave composta—-
—-colunas: S_Name, S_Class e Parent_Contact_No—-
—-são combinados para criar a chave composta—-
—-todas as três colunas têm diferentes tipos de dados—-
CONSTRAINT My_Composite_Key PRIMARY KEY (S_Name, S_Class, Parent_Contact_No)
);
—-adicione valores à tabela—-
Insira nos valores de ESTUDANTE (‘Mehul’, 6, 8700867330,’Sim’);
Insira nos valores de ESTUDANTE (‘Rashi’, 5, 8700867330,’Sim’);
Insira nos valores de ESTUDANTE (‘Mehul’, 6, 9990155289,’Não’);
Insira nos valores STUDENT (‘Vansh’, 7, 9354226009,’Sim’);
Insira nos valores de ESTUDANTE (‘Ishita’, 9, 8681012213,’Não’);
—-selecione todos os valores da tabela—-
—-para exibir o conteúdo—-
Selecione * de ALUNO
Como alterar e descartar chaves compostas?
Como qualquer outra coluna em uma tabela, as chaves compostas também podem ser operadas com os comandos alter. Você pode facilmente executar operações de adição ou remoção em uma tabela usando o comando alter com a chave composta em SQL. Para adicionar colunas adicionais no conjunto de colunas que formam a chave composta, você pode usar o comando alter-add. E para excluir uma coluna do conjunto de colunas combinadas para formar a chave composta, você pode usar o comando alter-drop.
- Comando ALTER-ADD: Para adicionar colunas adicionais ao conjunto existente de colunas que formam a chave composta.
Sintaxe
—-sintaxe para adicionar colunas a uma—-
—-chave composta existente—-
tabela ALTER nome_tabela
ADICIONE CONSTRAINT Constraint_name PRIMARY KEY (COL1, COL2, COLN);
—-isso adicionará COL1, COL2 e COLN—-
—-para a chave composta da tabela—-
Exemplo
—-sintaxe para adicionar colunas a uma—-
—-chave composta existente—-
—-da mesa ALUNO—-
mesa ALTER STUDENT
ADICIONE CONSTRAINT MyCompKey_Scores PRIMARY KEY (pontuações, porcentagem);
—-isso adicionará colunas chamadas—-
—-Pontuações e porcentagem—-
—-para a chave composta da tabela—-
- Comando ALTER-DROP: Para excluir uma coluna do conjunto existente de colunas que formam a chave composta.
Sintaxe
—-sintaxe para excluir uma coluna de uma—-
—-chave composta existente—-
tabela ALTER nome_tabela
DROP CONSTRAINT Constraint_Name;
—-isso irá deletar a restrição—-
—-da chave composta da tabela—-
Exemplo
—-sintaxe para excluir uma coluna de uma—-
—-chave composta existente—-
—-da mesa ALUNO—-
mesa ALTER STUDENT
DROP CONSTRAINT MyCompKey_Scores;
—-isso irá deletar a restrição—-
—-da chave composta da tabela—-
Como criar chaves compostas em Mysql, SQL Server e Postgresql?
MySQL
Sintaxe
—-Sintaxe para criar uma chave composta para uma tabela
—-combinando algumas colunas
Criar tabela nome_tabela (
COL1 data_type_1,
COL2 data_type_2,
COL3 data_type_3,
COLN data_type_n,
—–Declare a chave composta—–
—-aqui COL1 e COL3 são—-
—-formando a chave composta—-
CHAVE PRIMÁRIA (COL1, COL)
);
Exemplo
Criar mesa ALUNO
(
—-declarando colunas com diferentes tipos de dados—-
S_ID inteiro,
S_Class inteiro,
S_Age inteiro,
S_Phone inteiro,
—-declara a chave primária—-
CHAVE PRIMÁRIA (S_ID, S_Phone)
);
SQL Server
Sintaxe
—-Sintaxe para criar uma chave composta para uma tabela
—-combinando algumas colunas
Criar tabela nome_tabela (
COL1 data_type_1,
COL2 data_type_2,
COL3 data_type_3,
COLN data_type_n,
—–Declare a chave composta—–
—-aqui COL1 e COL3 são—-
—-formando a chave composta—-
CHAVE PRIMÁRIA (COL1, COL)
);
Exemplo
Criar mesa ALUNO
(
—-declarando colunas com diferentes tipos de dados—-
S_ID inteiro,
S_Class inteiro,
S_Age inteiro,
S_Phone inteiro,
—-declara a chave primária—-
CHAVE PRIMÁRIA (S_ID, S_Phone)
);
Postgresql
Sintaxe
—-Sintaxe para criar uma chave composta para uma tabela
—-combinando algumas colunas
Criar tabela nome_tabela (
COL1 data_type_1,
COL2 data_type_2,
COL3 data_type_3,
COLN data_type_n,
—–Declare a chave composta—–
—-aqui COL1 e COL3 são—-
—-formando a chave composta—-
CHAVE PRIMÁRIA (COL1, COL)
);
Exemplo
Criar mesa ALUNO
(
—-declarando colunas com diferentes tipos de dados—-
S_ID inteiro,
S_Class inteiro,
S_Age inteiro,
S_Phone inteiro,
—-declara a chave primária—-
CHAVE PRIMÁRIA (S_ID, S_Phone)
);
Ganhe experiência nas mais recentes ferramentas e técnicas de análise de negócios com o Programa de certificação de analista de negócios . Inscreva-se agora!
Concluindo!
Neste artigo, você aprendeu sobre a chave composta em SQL. Este artigo examinou os fundamentos das chaves compostas em SQL e como usá-las. Você mergulhou fundo na chave primária e nas chaves compostas, seu uso e exemplos. Também discutiu exemplos de como criar chaves compostas em MySQL , SQL Server e Postgresql.
Uma das melhores maneiras de aprender os conceitos de SQL de maneira detalhada e prática é usar o Curso de treinamento para certificação em SQL fornecido pela Simplilearn. Com a ajuda deste curso de treinamento, você será capaz de dominar SQL e melhorar seus aspectos profissionais. Este curso cobre tópicos básicos a avançados, como banco de dados, relacionamentos, ferramentas de consulta, comandos SQL, funções agregadas, controles de transação, visualizações, procedimentos, etc. O domínio desses tópicos abrirá portas para carreiras lucrativas, como Analista de negócios , Analista de dados , etc.
Se você tiver alguma pergunta para nós, deixe-a na seção de comentários deste artigo. Nossos especialistas entrarão em contato com você da mesma forma, o mais rápido possível!
Boa aprendizagem!