Introdução às junções no Oracle

As junções no Oracle são usadas para acessar os dados de várias tabelas. Uma junção no oracle é usada em um local onde mais de duas tabelas devem ser unidas para coletar as informações úteis na instrução Oracle SQL. Em outras palavras, a consulta de junção usada para recuperar as linhas de mais de duas tabelas ou visualizações com base nas condições de junção. A condição de junção pode ser especificada na cláusula FROM ou na cláusula where. A condição de junção compara as colunas das diferentes tabelas e recupera as linhas para as quais a condição de junção é verdadeira.

Tipos de junções no Oracle

No Oracle, existem dez tipos diferentes de junções, conforme abaixo:

  • Junções internas (também conhecidas como Junções simples)
  • Equi Joins
  • Junções externas
  • Junções Externas Esquerdas (também chamadas de Junções Esquerdas)
  • Junções externas à direita (também chamadas de Junções à direita)
  • Junções externas completas (também chamadas de Junções completas)
  • Auto-junções
  • Junções cruzadas (também chamadas de produtos cartesianos)
  • Anti Junções
  • Semi Joins

Em seguida, entendemos cada união em detalhes com a sintaxe e os exemplos.

1. INNER JOIN (também conhecido como Simple Join)

Junções internas juntam-se a várias tabelas e retornam as linhas para as quais a condição de junção é verdadeira. A junção interna é a junção mais comum entre os tipos de junção.

Sintaxe:

SELECT column (, column ) FROM t1
INNER JOIN t2
ON t1.column = t2.column;

O diagrama abaixo representa a representação visual da junção interna, pois no diagrama a área sombreada retorna como resultado do Oracle INNER JOIN:

O Oracle INNER JOIN retorna os registros de interseção de t1 e t2 como resultado.

Exemplo:

SELECT employee.employee _id, employee.employee_name, department. department_name
FROM employee
INNER JOIN department
ON employee.employee _id = department.employee _id;

O exemplo acima do Oracle INNER JOIN retornará todas as linhas das tabelas de funcionários e departamentos em que o valor de empregado _id nas tabelas de funcionários e departamentos são correspondentes.

2. Equi Joins

O Oracle Equi Joins recupera os valores da coluna correspondente das várias tabelas. A condição de junção ou o operador de comparação presente na cláusula WHERE da instrução select.

Sintaxe:

SELECT column (, column ) FROM t1, t2
where t1.column = t2.column;

O diagrama abaixo representa a representação visual do equijoin, pois no diagrama a área sombreada retorna como resultado do Oracle Equi Join.

O Oracle Equijoin retorna os registros de interseção de t1 e t2 como resultado.

Exemplo:

SELECT employee.employee _id, employee.employee_name, department. department_name
FROM employee, department
where employee.employee _id = department.employee _id;

O exemplo acima do Oracle Equijoin retornará todas as linhas das tabelas de funcionários e departamentos em que o valor de _id empregado nas tabelas de funcionários e departamentos são correspondentes.

3. Junções externas

Outro tipo de junções é uma junção externa que retorna o resultado de uma junção interna mais todas as linhas de uma tabela para as quais a condição de junção não é verdadeira.

Sintaxe:

SELECT column (, column ) FROM t1
LEFT | RIGHT | FULL (OUTER) JOIN t2
ON t1.column = t2.column;

Existem três tipos de junção externa, conforme indicado abaixo:

  • Junções Externas Esquerdas (também chamadas de Junções Esquerdas)
  • Junções externas à direita (também chamadas de Junções à direita)
  • Junções externas completas (também chamadas de Junções completas)

4. Junção externa esquerda

Os retornos de associação externa esquerda contêm todas as linhas da tabela ESQUERDA (de acordo com o especificado na condição ON) e da outra tabela apenas as linhas em que a condição associada é verdadeira.

Sintaxe:

SELECT column (, column ) FROM t1
LEFT (OUTER) JOIN t2
ON t1.column = t2.column;

A palavra-chave LEFT OUTER JOIN, use LEFT JOIN em alguns outros bancos de dados.

O diagrama abaixo representa a representação visual da junção externa esquerda, como no diagrama, a área sombreada retorna como resultado da junção externa esquerda da Oracle:

O Oracle LEFT OUTER JOIN retorna todos os registros de t1 e os registros de interseção de t1 e t2 como resultado.

Exemplo:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
LEFT OUTER JOIN department
ON employee.employee _id = department.employee _id;

O exemplo acima do Oracle LEFT OUTER JOIN retornará todas as linhas da tabela de funcionários e da tabela de departamentos somente aquelas em que a condição de junção for verdadeira. As tabelas de departamento em que o empregado _id valor nas tabelas de funcionário e departamento são correspondentes.

Se o valor de _id empregado na tabela de funcionários corresponder na tabela de departamento, os campos da tabela de departamento serão nulos no resultado.

5. Junção externa direita

Os retornos RIGHT OUTER JOIN contêm todas as linhas da tabela RIGHT (de acordo com o especificado na condição ON) e da outra tabela apenas as linhas em que a condição unida é verdadeira.

Sintaxe:

SELECT column (, column ) FROM t1
RIGHT (OUTER) JOIN t2
ON t1.column = t2.column;

A palavra-chave RIGHT OUTER JOIN, use como RIGHT JOIN em alguns outros bancos de dados.

O diagrama abaixo representa a representação visual do RIGHT OUTTER JOIN, pois no diagrama a área sombreada retorna como resultado do RIGHT OUTER JOIN do Oracle.

O Oracle RIGHT OUTER JOIN retorna todos os registros de t2 e os registros de interseção de t1 e t2 como resultado.

Exemplo:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
RIGHT OUTER JOIN department
ON employee.employee _id = department.employee _id;

O exemplo acima do Oracle LEFT OUTER JOIN retornará todas as linhas da tabela de departamentos e da tabela de funcionários apenas aquelas em que a condição de junção for verdadeira. As tabelas de funcionários em que o valor _id empregado nas tabelas de funcionários e departamentos são correspondentes.

Se o valor de _id empregado na tabela de funcionários corresponder na tabela de departamento, os campos da tabela de funcionários serão nulos no resultado.

6. Junção externa completa

Os retornos da Junção Externa Completa contêm todas as linhas da tabela ESQUERDA e DIREITA com nulo nos campos em que a condição de junção não é verdadeira.

Sintaxe:

SELECT column (, column ) FROM t1
FULL (OUTER) JOIN t2
ON t1.column = t2.column;

A palavra-chave FULL OUTER JOIN, use como FULL JOIN em alguns outros bancos de dados.

O diagrama abaixo representa a representação visual da junção externa completa, pois no diagrama a área sombreada retorna como resultado da junção externa completa da Oracle.

O Oracle FULL OUTER JOIN retorna todos os registros das tabelas t1 e t2 como resultado.

Exemplo:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
FULL OUTER JOIN department
ON employee.employee _id = department.employee _id;

Este exemplo acima do Oracle FULL OUTER JOIN retornará todas as linhas da tabela de funcionários e da tabela de departamento com valores nulos em que a condição de junção não é verdadeira.

7. Auto-ingresso no Oracle

Na junção automática, a tabela usa duas vezes na cláusula FROM com a ajuda do nome de alias da tabela. Em outras palavras, o eu se une, se junta a uma tabela. O Oracle Self Join combina e retorna linhas da tabela onde a condição de associação é verdadeira.

Exemplo:

SELECT emp1.employee_name || 'works for' || emp2.employee_name
FROM employees emp1, employees emp2
WHERE emp1.manager_id = emp2.employee_id
ORDER BY emp1.employee_name;

O exemplo acima do Oracle self JOIN retornará todas as linhas da tabela de funcionários em que a condição de junção é verdadeira.

8. Oracle Cross Joins (também chamado de produtos cartesianos)

A junção cruzada se aplica onde as duas tabelas não têm condição de junção. A junção cruzada retorna o produto cartesiano das duas tabelas, produto cartesiano em que cada linha de uma tabela combina com cada linha da outra tabela. Suponha que a tabela1 contenha 100 linhas e a tabela2 contenha 10 linhas; o resultado da junção conterá 1000 linhas.

Exemplo;

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
CROSS JOIN department

O exemplo acima de JOIN cruzado retornará todas as linhas da tabela de funcionários combinadas com todas as linhas da tabela de departamento.

9. Oracle Anti Joins

Os retornos antijoin contêm linhas da tabela ESQUERDA (de acordo com o especificado na condição ON) onde a condição unida é verdadeira.

Exemplo:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
WHERE department_id NOT IN (SELECT department_id from department
WHERE department_name = 'sales';

O exemplo acima do Oracle ANTI JOIN retornará linhas da tabela de funcionários e onde a condição de junção é verdadeira.

10. Semi-junções Oracle

Os retornos semijoin contêm linhas exclusivas da tabela LEFT (de acordo com o especificado na condição ON), onde a correspondência com uma subconsulta EXISTS é verdadeira.

Exemplo:

SELECT employee.employee _id, employee.employee_name
FROM employee
WHERE EXISTS (SELECT department_id FROM department
WHERE department_name = 'sales');

O exemplo acima do Oracle SEMI JOIN retornará linhas da tabela de funcionários se EXISTS retornar true.

Conclusão

É usado para acessar os dados de várias tabelas. Existem sete tipos diferentes de junções em um Oracle.

Artigos recomendados

Este é um guia para Associações no Oracle. Aqui discutimos uma introdução sobre Joins no Oracle e seus 10 tipos diferentes de Joins no Oracle. Você também pode consultar nossos outros artigos relacionados para saber mais -

  1. Tipos de junções no SQL
  2. Associações do Tableau
  3. Oracle Warehouse Builder
  4. Funções de String do Oracle
  5. O que é uma consulta e tipos de consultas Oracle
  6. Os 6 principais tipos de junções no MySQL com exemplos
  7. Guia para as 9 principais cláusulas do Oracle (exemplo) l
  8. SELECT no MySQL | Exemplos para SELECT no MySQL

Categoria: