JOIN
SQL
Índice
INNER JOIN ................................................................................................................................. 2
Outer Join ...................................................................................................................................... 3
Left Join ......................................................................................................................................... 4
SQL LEFT OUTER JOIN ............................................................................................................. 5
Syntax: ....................................................................................................................................... 5
Example: .................................................................................................................................... 5
Right Join....................................................................................................................................... 6
RIGHT OUTER JOIN ................................................................................................................... 7
FULL JOIN .................................................................................................................................... 8
Para que serve ................................................................................................................................ 8
Sintaxe ........................................................................................................................................... 8
Exemplo ......................................................................................................................................... 8
Semi Join ..................................................................................................................................... 10
Anti Join ...................................................................................................................................... 12
Sintaxe: .................................................................................................................................... 12
INNER JOIN
INNER JOIN é usada para combinar dados provenientes de duas ou mais tabelas da base de
dados, baseado em um relacionamento entre colunas dessas tabelas. Retorna linhas quando
houver pelo menos uma correspondência entre a duas tabelas.
SELECT coluna FROM tabela1 INNER JOIN tabela2 ON tabela1.coluna = tabela2.coluna
➔ tabela1.coluna é o nome da primeira tabela junto com o nome da coluna chave primária
ou estrangeira , e tabela2.coluna é o nome da segunda tabela junto com a chave estrangeira
ou primária dessa tabela que se relaciona com a chave da primeira tabela.
Exemplo:
SELECT tbl_Livro.Nome_Livro, tbl_Livro.ISBN, tbl_autores.Nome_Autor
FROM tbl_Livro
INNER JOIN tbl_autores
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor.
Outer Join
O Outer Join (também conhecido por Full Outer Join ou Full Join), conforme mostra a Figura 8,
tem como resultado todos os registros que estão na tabela A e todos os registros da tabela B.
SELECT tabela_A.nome
FROM tabela_A
FULL OUTER JOIN tabela_B
On tabela_A.chave = tabela_B.chave
Left Join
O Left Join no SQL basicamente retorna todos os registros da tabela da esquerda e os registros
correspondentes das tabelas da direita. Por exemplo, digamos que temos duas tabelas, Tabela
A e Tabela B. Quando Left Join é aplicado nessas duas tabelas, todos os registros da Tabela A e
apenas os registros correspondentes da Tabela B serão exibidos.
Exemplo de Sintaxe de LEFT JOIN:
SQL LEFT OUTER JOIN
O LEFT OUTER JOIN retorna todos os registos da tabela esquerda e os registos
correspondentes da tabela direita. Quando nenhuma correspondência for encontrada, as
colunas da tabela correta serão retornadas com os valores nulos.
Syntax:
SELECT columnList FROM table1 LEFT OUTER JOIN table2 ON table1.columnName =
table2.columnName;
or
SELECT columnList FROM table1 LEFT JOIN table2 ON table1.columnName =
table2.columnName;
Example:
SELECT P_ID, NAME, AMOUNT
FROM PERSONS
LEFT OUTER JOIN ORDERS
ON PERSONS.P_ID = ORDERS.PERSON_ID;
Right Join
Exemplo de utilização do comando RIGHT JOIN:
SELECT clientes.nome, pedidos.data_pedido, pedidos.quantidade, pedidos.preco FROM
clientes RIGHT JOIN pedidos ON clientes.id_cliente = pedidos.id_cliente;
O comando "RIGHT JOIN" é utilizado em SQL para combinar duas tabelas, retornando todos os
registros da tabela à direita (ou segunda tabela mencionada) e os registros correspondentes da
tabela à esquerda (ou primeira tabela mencionada), caso existam correspondências. Se não
houver correspondências, os campos da tabela à esquerda serão preenchidos com valores
nulos.
RIGHT OUTER JOIN
A sintaxe do RIGHT OUTER JOIN é a seguinte:
Nessa sintaxe, "tabela_esquerda" e "tabela_direita" são os nomes das tabelas que você deseja
juntar, "condição_de_junção" é a expressão que especifica como as duas tabelas devem ser
juntadas e "colunas" são as colunas que você deseja selecionar na consulta.
A cláusula RIGHT OUTER JOIN é usada para retornar todas as linhas da tabela à direita e
apenas as linhas correspondentes da tabela à esquerda, onde a condição de junção é verdadeira.
Se não houver correspondência, a tabela da esquerda ainda será listada, mas com valores nulos
em todas as colunas que correspondem à tabela da direita.
Por exemplo:
Nesse exemplo, estamos selecionando o ID do pedido e o nome do cliente de duas tabelas
diferentes. Estamos juntando as tabelas "orders" e "customers" usando o RIGHT OUTER JOIN
na coluna "customer_id" para obter todas as linhas da tabela "customers" e apenas as linhas
correspondentes da tabela "orders". Se um cliente não tiver nenhum pedido, a coluna order_id
terá valor nulo.
FULL JOIN
Para que serve
Retorna todos os recordes pedidos quando há uma correspondência entre as tabelas.
Sintaxe
SELECT nome_da_coluna
FORM tabela1
FULL JOIN tabela2
ON tabela1.nome_da_coluna = tabela2.nome_da_coluna
WHERE condição;
Exemplo
Tabela “Customers”
Tabela “Orders”
SQL
Resultado
Semi Join
emp_id nome cidade salario
101 John California 50000
102 Tom Mumbai 40000
103 Harry Delhi 80000
104 Rahul Bangalore 60000
105 Sakil Delhi 90000
skill_id Apt_name emp_id
404 Java/J2EE 103
405 Hadoop 101
406 C/C++ 105
407 Oracle 102
408 Spring 101
SELECT *
FROM Empregados
LEFT SEMI JOIN Departmento
ON Empregados.emp_id = Apt.emp_id;
Junção Final
emp_id nome cidade salario
101 John California 50000
102 Tom Mumbai 40000
103 Harry Delhi 80000
105 Sakil Delhi 90000
Anti Join
O Anti-Join é uma operação que retorna registros de uma tabela que não possuem
correspondência com outra tabela.
SELECT colunas
FROM tabela1
WHERE NOT EXISTS (
SELECT 1
FROM tabela2
WHERE tabela2.chave = tabela1.chave
)
Sintaxe:
Nesta sintaxe, "tabela1" é a tabela da qual você deseja retornar os registros que não
correspondem à tabela2, e "tabela2" é a tabela com a qual você deseja comparar. A condição
WHERE NOT EXISTS retorna todos os registros da tabela1 que não possuem uma
correspondência na tabela2 com base na coluna de chave comum entre as tabelas.
Substitua "colunas" pelos nomes das colunas que você deseja selecionar da tabela1.
Existem dois tipos de Anti Join, o Left Anti Join e o Right Anti Join (Esquerda ou Direita).
No exemplo abaixo, temos o LEFT ANTI JOIN.