Olá, Bruno, Tudo bem?
Na verdade, o INNER JOIN
é utilizado para unir duas tabelas a partir de uma condição em comum, que no caso da consulta apresentada é a coluna "MATRICULA". Não há obrigatoriedade de serem chave primária e estrangeira. Normalmente, essas chaves são usadas como as colunas de junção porque têm um relacionamento definido entre as tabelas e garantem que cada linha na tabela de origem possa ser correspondida a uma única linha na tabela de destino. Mas reforço que não é obrigatório.
É possível usar outras colunas além da chave primária e estrangeira para definir a condição de junção, desde que as colunas tenham um relacionamento definido entre as tabelas.
Por exemplo, suponha que temos duas tabelas: "produtos" e "vendas", com a seguinte estrutura:
CREATE TABLE produtos (
id INT,
nome VARCHAR(50),
preco DECIMAL(10,2)
);
CREATE TABLE vendas (
id INT,
produto VARCHAR(50),
data_venda DATE,
valor DECIMAL(10,2)
);
Para obter uma lista de todas as vendas de produtos, podemos unir as duas tabelas usando a coluna "nome" da tabela "produtos" e a coluna "produto" da tabela "vendas", e ambas não são chaves primárias e nem estrangeiras. A consulta pode ser escrita assim:
SELECT p.nome, v.data_venda, v.valor
FROM produtos p
INNER JOIN vendas v ON p.nome = v.produto;
Essa consulta retorna uma tabela resultante que contém as informações dos produtos vendidos e suas respectivas datas e valores de venda.
Espero ter ajudado a esclarecer suas dúvidas. Qualquer outra questão, é só perguntar!
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!