DEV Community

Cover image for [PT-BR] Join SQL, quando usar?
Maria Gabriela Oliva
Maria Gabriela Oliva

Posted on • Updated on

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

Discussion (12)

Collapse
guiggs13 profile image
Guilherme Rocha

Simples e direto, parabéns!

Collapse
mgabrielacuenca profile image
Maria Gabriela Oliva Author

obrigada ❤️

Collapse
brunarafaela profile image
Bruna

Conteúdo simples e objetivo. Obrigada por postar!

Collapse
mgabrielacuenca profile image
Maria Gabriela Oliva Author

Obrigada Bruna :)

Collapse
leonardossev profile image
Leonardo Santos

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

Collapse
mgabrielacuenca profile image
Maria Gabriela Oliva Author

Obrigada pelo feedback, Leo <3

Collapse
felipepodesta profile image
Felipe Podestá • Edited

Bem elaborado e objetivo 👍

Collapse
mgabrielacuenca profile image
Maria Gabriela Oliva Author

obrigada Felipe 😊

Collapse
telles profile image
Telles (@UnicornCoder)

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

Collapse
mgabrielacuenca profile image
Maria Gabriela Oliva Author

Muito obrigada :)

Collapse
joaofds profile image
João Ferreira

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

Collapse
mgabrielacuenca profile image
Maria Gabriela Oliva Author

muito obrigada João ♥️