Qual é a diferença entre INNER JOIN e OUTER JOIN?

INNER JOIN e OUTER JOIN são operações utilizadas em consultas SQL para combinar dados de duas ou mais tabelas com base em uma condição específica.

A diferença entre INNER JOIN e OUTER JOIN é a maneira como lidam com linhas que não correspondem entre as tabelas.

INNER JOIN retorna apenas as linhas que têm correspondência nas duas tabelas. Se não houver correspondência, essas linhas não aparecerão no resultado final. Por exemplo, se você tiver uma tabela de “Clientes” e uma tabela de “Pedidos”, usando INNER JOIN você obterá apenas os clientes que fizeram pedidos.

Já OUTER JOIN retorna todas as linhas de ambas as tabelas, mesmo que não haja correspondência entre elas. Se não houver correspondência, as colunas correspondentes à tabela que não possui correspondência terão valores nulos no resultado final. Existem três tipos de OUTER JOIN: LEFT JOIN, RIGHT JOIN e FULL JOIN.

  • LEFT JOIN retorna todas as linhas da tabela da esquerda (a primeira tabela na cláusula JOIN) e as correspondentes da tabela da direita. Se não houver correspondência na tabela da direita, as colunas dessa tabela terão valores nulos.

  • RIGHT JOIN retorna todas as linhas da tabela da direita e as correspondentes da tabela da esquerda. Se não houver correspondência na tabela da esquerda, as colunas dessa tabela terão valores nulos.

  • FULL JOIN retorna todas as linhas de ambas as tabelas, independentemente de haver correspondência ou não. Se não houver correspondência, as colunas correspondentes terão valores nulos.

Por exemplo, suponha que você tenha uma tabela de “Clientes” e uma tabela de “Pedidos”. Usando LEFT JOIN, você terá todos os clientes, independentemente de eles terem feito pedidos ou não. As colunas relacionadas aos pedidos dos clientes que não fizeram nenhum terão valores nulos.

Em resumo, INNER JOIN retorna apenas as linhas com correspondência, enquanto OUTER JOIN retorna todas as linhas, mesmo as sem correspondência, preenchendo-as com valores nulos.