Logo

dev-resources.site

for different kinds of informations.

[PT-BR] Join SQL, quando usar?

Published at
8/27/2020
Categories
sql
dml
database
join
Author
Maria Gabriela Oliva
Categories
4 categories in total
sql
open
dml
open
database
open
join
open
[PT-BR] Join SQL, quando usar?

Hello pessoas, como vão? Nesse post eu irei falar sobre os tipos de joins (junções) existentes no SQL e qual cenário usar cada um deles. Na maioria das vezes estou sempre esquecendo até como faz um update e corro para o Google. Bom, vamos lá.

O que é o Join?

Basicamente, o join é a combinação de tabelas através de colunas em comum nessas tabelas (Primary Keys e Foreign Keys, prometo um dia falar disso).

Tipos de Joins

Existem três tipos de junções:

  • Inner Join: busca os dados se estiverem presentes nas duas tabelas.
  • Outer Join: aqui, são de três tipos.
    • Left Outer Join: busca os dados se estiverem presentes na tabela da esquerda.
    • Right Outer Join: busca os dados se estiverem presentes na tabela da direita.
    • Full Outer Join: busca os dados se estiverem presentes em qualquer uma das duas tabelas.
  • Cross Join: um produto cartesiano de ambas tabelas, cruzamento de tabelas.

Tabela Pessoa

Imgur

Tabela Endereço

Imgur

Sintaxe

Inner Join

SELECT * FROM pessoa p
INNER JOIN endereco e on p.idpessoa = e.idpessoa

Imgur

Um detalhe aqui, o inner é opcional. Isso de acordo com a documentação, ok? O legal é sempre especificar qual tipo de junção está fazendo, caso faça apenas join, o padrão é inner.

Left Outer Join

SELECT * FROM pessoa p
LEFT OUTER JOIN endereco e on p.idpessoa = e.idpessoa

Imgur

Right Outer Join

SELECT * FROM pessoa p
RIGHT OUTER JOIN endereco e on p.idpessoa = e.idpessoa

Imgur

Full Outer Join

SELECT * FROM pessoa p
FULL OUTER JOIN endereco e on p.idpessoa = e.idpessoa

Imgur

Gente, outro detalhe aqui: o outer também é opcional, tá bom?
Left Join e Left Outer Join, são a mesma coisa.

-- uma observação, eu fiz os exemplos no MySQL e ele não suporta o FULL JOIN, então tive que fazer um UNION (falarei sobre isso em outro post) para poder simular o Full Join, sorry.

Cross Join

SELECT * FROM pessoa p
CROSS JOIN endereco e

Imgur

Mas Gabriela, o que é esses p, esses e, que você está colocando em frente ao nome das tabelas?
Bom, isso são os alias (apelidos) que dei as tabelas para que não seja necessário estar sempre digitando o nome inteiro da tabela.

Tá, e esse idpessoa, por que você usou ele?
idpessoa é a chave primária da tabela pessoa. Na tabela endereço, o idpessoa é uma chave estrangeira que faz referência a tabela de pessoa, sendo assim, usado para fazer as junções entre as tabelas.

Gabi, quando eu devo usar cada um desse ai?
Tudo vai depender dos dados que você quer buscar e onde você vai buscar esses dados.

Então, até o momento é isso. Dúvidas, sugestões fiquem sempre à vontade para falar :)

Featured ones: