loading...
Cover image for [PT-BR] Join SQL, quando usar?

[PT-BR] Join SQL, quando usar?

mgabrielacuenca profile image Maria Gabriela Cuenca Updated on ・2 min read

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 :)

Posted on by:

mgabrielacuenca profile

Maria Gabriela Cuenca

@mgabrielacuenca

DBA e Analista de Dados, também desenvolvo uns dashboards

Discussion

pic
Editor guide
 

Simples e direto, parabéns!

 

obrigada ❤️

 

Conteúdo simples e objetivo. Obrigada por postar!

 

Obrigada Bruna :)

 

Bem direto ao ponto e resume bem o que tentamos entender nas documentações extensas. Gostei muito do formato de perguntas e respostas ali!

Ansioso por mais artigos nesse formato :)

 

Obrigada pelo feedback, Leo <3

 

Bem elaborado e objetivo 👍

 

obrigada Felipe 😊

 

Parabéns pelo artigo, sua didática é muito boa e obrigado por compartilhar com a comunidade!

 

Muito obrigada :)

 

Excelente dona MariaDB, a didática ta boa e o conteúdo é bom tbm!

 

muito obrigada João ♥️