<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Matheus Camilo</title>
    <description>The latest articles on DEV Community by Matheus Camilo (@matheus-camilo).</description>
    <link>https://dev.to/matheus-camilo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204559%2F6fe06c69-c8bb-472e-b4ae-c7eeaa1c7a45.jpeg</url>
      <title>DEV Community: Matheus Camilo</title>
      <link>https://dev.to/matheus-camilo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/matheus-camilo"/>
    <language>en</language>
    <item>
      <title>SQL - Joins (Tutorial Prático)</title>
      <dc:creator>Matheus Camilo</dc:creator>
      <pubDate>Fri, 08 Dec 2023 01:57:01 +0000</pubDate>
      <link>https://dev.to/matheus-camilo/sql-joins-tutorial-pratico-1p5l</link>
      <guid>https://dev.to/matheus-camilo/sql-joins-tutorial-pratico-1p5l</guid>
      <description>&lt;p&gt;Olá mundo!&lt;/p&gt;

&lt;p&gt;Estamos aqui com a segunda parte do nosso artigo sobre banco de dados, mais especificamente sobre os &lt;code&gt;JOIN&lt;/code&gt;s. No artigo anterior falamos sobre a sua sintaxe, aplicações, vantagens e desvantagens.&lt;/p&gt;

&lt;p&gt;Caso não tenha acompanhado o referido artigo, aqui está o link: &lt;a href="https://dev.to/matheus-camilo/sql-joins-1k79"&gt;SQL - Joins&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas alguns podem pensar: "Certo, aprendi a utilizar os JOINs. Mas onde e como posso usá-los em exemplos mais próximos da realidade?"&lt;/p&gt;

&lt;p&gt;Existem diversar aplicabilidades destes no mercado de trabalho de cada um dos &lt;code&gt;JOIN&lt;/code&gt;s, mas trouxemos 5 estudos de caso, para que possamos juntos ver aplicação de cada um.&lt;/p&gt;

&lt;h1&gt;
  
  
  "Chega de conversa, agora é hora de por a mão na massa!"
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. INNER JOIN
&lt;/h2&gt;

&lt;p&gt;Vamos criar um estudo de caso fictício para demonstrar o uso do INNER JOIN em um cenário prático.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.1. Estudo de Caso:
&lt;/h3&gt;

&lt;p&gt;Sistema de Gerenciamento de Vendas&lt;br&gt;
Suponha que você está desenvolvendo um sistema de gerenciamento de vendas para uma loja online que vende produtos eletrônicos. Você tem duas tabelas principais em seu banco de dados: clientes e pedidos.&lt;/p&gt;

&lt;p&gt;Tabela "clientes":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;clientes&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;cliente_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;nome_cliente&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;clientes&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Ana Silva'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ana@email.com'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Carlos Oliveira'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'carlos@email.com'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Mariana Santos'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'mariana@email.com'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A tabela "clientes" contém informações sobre os clientes, incluindo um identificador único (cliente_id), o nome do cliente (nome_cliente), e o endereço de e-mail (email).&lt;br&gt;
Tabela "pedidos":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;pedidos&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;pedido_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;cliente_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;produto&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;quantidade&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="nb"&gt;DECIMAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;pedidos&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Smartphone'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1200&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;102&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Notebook'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1500&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;103&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Fones de Ouvido'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;104&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Tablet'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;900&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A tabela "pedidos" contém informações sobre os pedidos feitos pelos clientes, incluindo um identificador único (pedido_id), o identificador do cliente que fez o pedido (cliente_id), o produto adquirido (produto), a quantidade adquirida (quantidade), e o total do pedido (total).&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2. Consulta com INNER JOIN para obter detalhes de pedidos e clientes:
&lt;/h3&gt;

&lt;p&gt;Agora, suponha que você queira obter uma lista de todos os pedidos, juntamente com os detalhes do cliente que fez cada pedido. Você pode usar INNER JOIN para combinar as informações das tabelas "pedidos" e "clientes" com base no identificador do cliente (cliente_id).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;pedidos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pedido_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;clientes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nome_cliente&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;pedidos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;produto&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;pedidos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;quantidade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;pedidos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;pedidos&lt;/span&gt;
&lt;span class="k"&gt;INNER&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt;
    &lt;span class="n"&gt;clientes&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;pedidos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cliente_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;clientes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cliente_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esta consulta retorna uma lista que inclui o ID do pedido, o nome do cliente, o produto adquirido, a quantidade e o total do pedido. O INNER JOIN garante que apenas os pedidos associados a clientes existentes na tabela "clientes" sejam incluídos no resultado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P9dZ8V7f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4j6jybehvxsv2z9zixwk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P9dZ8V7f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4j6jybehvxsv2z9zixwk.jpg" alt="cliente x pedido - inner join" width="595" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse é um exemplo simples de como o INNER JOIN pode ser usado para combinar informações de diferentes tabelas com base em chaves relacionadas, proporcionando uma visão abrangente dos dados em um sistema de gerenciamento de vendas.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  2. LEFT JOIN
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1. Estudo de Caso: Sistema de Gerenciamento de Funcionários e Departamentos
&lt;/h3&gt;

&lt;p&gt;Suponha que você esteja desenvolvendo um sistema de gerenciamento de recursos humanos para uma empresa. Você tem duas tabelas principais em seu banco de dados: funcionários e departamentos.&lt;/p&gt;

&lt;p&gt;Tabela "funcionarios":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;funcionarios&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;funcionario_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;nome_funcionario&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;cargo&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;departamento_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;funcionarios&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'João Silva'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Desenvolvedor'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Ana Oliveira'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Designer'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Carlos Santos'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Analista de Negócios'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Mariana Lima'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Desenvolvedor'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A tabela "funcionarios" contém informações sobre os funcionários, incluindo um identificador único (funcionario_id), o nome do funcionário (nome_funcionario), o cargo (cargo), e o identificador do departamento em que trabalham (departamento_id). Note que alguns funcionários podem não ter um departamento atribuído.&lt;/p&gt;

&lt;p&gt;Tabela "departamentos":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;departamentos&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;departamento_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;nome_departamento&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;departamentos&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'TI'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Design'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Recursos Humanos'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A tabela "departamentos" contém informações sobre os departamentos da empresa, incluindo um identificador único (departamento_id) e o nome do departamento (nome_departamento).&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2. Consulta com LEFT JOIN para obter lista de funcionários com ou sem departamento:
&lt;/h3&gt;

&lt;p&gt;Agora, suponha que você queira obter uma lista de todos os funcionários, incluindo aqueles que não têm um departamento atribuído. Você pode usar &lt;code&gt;LEFT JOIN&lt;/code&gt; para garantir que todos os funcionários sejam incluídos na lista, mesmo que não haja uma correspondência no departamento.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;funcionarios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;funcionario_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;funcionarios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nome_funcionario&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;funcionarios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cargo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;departamentos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nome_departamento&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;funcionarios&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt;
    &lt;span class="n"&gt;departamentos&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;funcionarios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;departamento_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;departamentos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;departamento_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Tw-WsDUl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/krzg9g8hn3y6qhnkkiu9.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Tw-WsDUl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/krzg9g8hn3y6qhnkkiu9.jpeg" alt="funcionarios x departamentos - left join" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta consulta retorna uma lista que inclui o ID do funcionário, o nome do funcionário, o cargo e o nome do departamento em que trabalham. Se um funcionário não tiver um departamento atribuído (por exemplo, Carlos Santos), o resultado mostrará o nome do departamento como NULL.&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;LEFT JOIN&lt;/code&gt; é útil quando você deseja incluir todos os registros da tabela à esquerda (tabela "funcionarios" neste caso), mesmo que não haja correspondência na tabela à direita (tabela "departamentos" neste caso). Isso é especialmente útil quando você deseja incluir informações mesmo quando alguns dados relacionados estão ausentes.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  3. RIGHT JOIN
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1. Estudo de Caso: Sistema de Gerenciamento Hospitalar
&lt;/h3&gt;

&lt;p&gt;Suponha que você esteja desenvolvendo um sistema de gerenciamento hospitalar. Você tem duas tabelas principais em seu banco de dados: pacientes e consultas.&lt;/p&gt;

&lt;p&gt;Tabela "pacientes":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;pacientes&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;paciente_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;nome_paciente&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;idade&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;medico_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;pacientes&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Maria Silva'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'José Oliveira'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;102&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Ana Santos'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Carlos Lima'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A tabela "pacientes" contém informações sobre os pacientes, incluindo um identificador único (paciente_id), o nome do paciente (nome_paciente), a idade (idade), e o identificador do médico responsável (medico_id). Note que alguns pacientes podem não ter um médico atribuído.&lt;/p&gt;

&lt;p&gt;Tabela "consultas":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;consultas&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;consulta_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;medico_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;data_consulta&lt;/span&gt; &lt;span class="nb"&gt;DATE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;descricao&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;consultas&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;201&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2023-01-15'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Consulta de rotina'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;102&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2023-02-05'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Avaliação cardíaca'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;203&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2023-03-20'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Exames de sangue'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;204&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;103&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2023-04-10'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Consulta de acompanhamento'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A tabela "consultas" contém informações sobre as consultas realizadas, incluindo um identificador único (consulta_id), o identificador do médico que realizou a consulta (medico_id), a data da consulta (data_consulta), e uma descrição da consulta (descricao).&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2. Consulta com RIGHT JOIN para obter lista de consultas com ou sem pacientes:
&lt;/h3&gt;

&lt;p&gt;Agora, suponha que você queira obter uma lista de todas as consultas, incluindo aquelas que não têm um paciente associado. Você pode usar RIGHT JOIN para garantir que todas as consultas sejam incluídas na lista, mesmo que não haja correspondência na tabela "pacientes".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;consultas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;consulta_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;pacientes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nome_paciente&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;pacientes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;consultas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data_consulta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;consultas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;descricao&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="n"&gt;consultas&lt;/span&gt;
&lt;span class="k"&gt;RIGHT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt;
    &lt;span class="n"&gt;pacientes&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;consultas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;medico_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pacientes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;medico_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8b5rRXqp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vqibr0tpfe8nr90m85za.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8b5rRXqp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vqibr0tpfe8nr90m85za.jpeg" alt="pacientes x consultas - right join" width="800" height="519"&gt;&lt;/a&gt;&lt;br&gt;
Esta consulta retorna uma lista que inclui o ID da consulta, o nome do paciente, a idade do paciente, a data da consulta e a descrição da consulta. Se uma consulta não tiver um paciente associado (por exemplo, consulta realizada por um médico que não está na tabela "pacientes"), o resultado mostrará o nome do paciente como NULL.&lt;/p&gt;

&lt;p&gt;O RIGHT JOIN é útil quando você deseja incluir todos os registros da tabela à direita (tabela "pacientes" neste caso), mesmo que não haja correspondência na tabela à esquerda (tabela "consultas" neste caso). Isso é especialmente útil quando você deseja incluir informações mesmo quando alguns dados relacionados estão ausentes.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  4. Full Join
&lt;/h2&gt;
&lt;h3&gt;
  
  
  4.1. Estudo de Caso: Empresa de Serviços de Streaming
&lt;/h3&gt;

&lt;p&gt;Inicialmente, em uma empresa de serviços de streaming, várias pessoas assinavam vários planos sem precisar se cadastrar no site da empresa para selecionar a plataforma de streaming, apenas com seu cpf e senha.&lt;/p&gt;

&lt;p&gt;Uma pessoa pode assinar vários planos de uma só vez com seus dados.&lt;/p&gt;

&lt;p&gt;Todavia, um tempo se passou, e as políticas de assinatura daquela empresa mudaram, agora fornecendo a possibilidade de cadastro aos novos assinantes em sua base de dados, obtendo assim mais benefícios nas plataformas.&lt;/p&gt;

&lt;p&gt;Com base nos dados, referente á usuários cadastrados e planos escolhidos, a empresa deseja obter informações sobre os planos assinados por usuários cadastrados ou não no sistema, assim como clientes cadastrados que cancelaram algum plano. E assim com esses dados, planejar uma melhor abordagem de marketing.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;
  
  
  4.2. Informações técnicas
&lt;/h3&gt;

&lt;p&gt;Os dados dos clientes está na tabela &lt;code&gt;cliente&lt;/code&gt; e os dados dos planos assinados está na tabela &lt;code&gt;plano&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A tabela &lt;code&gt;cliente&lt;/code&gt; tem os campos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nome&lt;/li&gt;
&lt;li&gt;CPF (Que é a chave primária da tabela)&lt;/li&gt;
&lt;li&gt;Data de Criação&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A tabela &lt;code&gt;plano&lt;/code&gt; tem os campos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nome&lt;/li&gt;
&lt;li&gt;Valor&lt;/li&gt;
&lt;li&gt;Data de Assinatura&lt;/li&gt;
&lt;li&gt;CPF Cliente(Que é a chave estrangeira da tabela &lt;code&gt;cliente&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;
  
  
  4.3. Resolução
&lt;/h3&gt;

&lt;p&gt;Nessa situação, a melhor abordagem a ser utilizada utilizando os recursos de SQL, é utilizar a cláusula de junção &lt;code&gt;FULL JOIN&lt;/code&gt;. Para assim obter todos os dados de todas as tabelas, tanto os relacionados como os que não estão.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cliente&lt;/span&gt;
&lt;span class="k"&gt;FULL&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;plano&lt;/span&gt;
    &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;cliente&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cpf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plano&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cpf_cliente&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2heXBbFu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/onulrssvpw1yj9flod54.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2heXBbFu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/onulrssvpw1yj9flod54.jpeg" alt="cliente x plano - full join" width="745" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aplicando no caso de uso, será possível obter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Os cpf de clientes que não possuem cadastro por meio dos seus plano&lt;/li&gt;
&lt;li&gt;Os clientes que cancelaram seus planos&lt;/li&gt;
&lt;li&gt;Os cliente cadastrados com seus planos assinados &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  5. Cross Join
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1. Estudo de Caso
&lt;/h3&gt;

&lt;p&gt;Um cientista, em seu laboratório, precisa realizar vários experimentos com vários químicos registrados em suas base de dados.&lt;/p&gt;

&lt;p&gt;Ele precisa realizar a mistura de todos os químicos da tabela com os químicos com os mesmos desta tabela. Para isso, ele necessita de uma lista com a combinação de todos os químicos.&lt;/p&gt;

&lt;p&gt;Portanto, se na base dados ele possue 3 registros, então ele terá ao final uma lista com 9 registros.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  5.2. Informações técnicas
&lt;/h3&gt;

&lt;p&gt;Os dados dos químicos estão na tabela &lt;code&gt;quimico&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A tabela &lt;code&gt;quimico&lt;/code&gt; tem os campos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nome&lt;/li&gt;
&lt;li&gt;Identificação do químico (Que é a chave primária)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  5.3. Resolução
&lt;/h3&gt;

&lt;p&gt;Nessa situação, a melhor abordagem a ser utilizada utilizando os recursos de SQL, é utilizar a cláusula de junção &lt;code&gt;CROSS JOIN&lt;/code&gt;. Essa cláusula é raramente utilizada, por sua aplicação para geração do produto cartesiano para cenários específicos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;quimico&lt;/span&gt;
&lt;span class="k"&gt;CROSS&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;quimico&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D3f8fCNy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dxw8irn0vant4zp9kc40.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D3f8fCNy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dxw8irn0vant4zp9kc40.jpeg" alt="quimico x quimico - cross join" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aplicando no caso de uso, será possível obter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A lista com cada quimico com seu "acompanhante" na mistura, considerando a ordem também como fator importante&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusão
&lt;/h1&gt;

&lt;p&gt;Antes de criar uma consulta utilizando as cláusulas JOIN, é necessário ter uma compreensão  da modelagem do banco de dados para entender como as tabelas se relacionam e identificar suas dependências. Essa compreensão é essencial para escolher o tipo adequado de JOIN em uma consulta, alinhando-se aos dados desejados.&lt;/p&gt;

&lt;p&gt;Ao longo destes exemplos citados acima, entendemos a importância de compreender os relacionamentos entre tabelas para a escolha eficaz do JOIN. Além disso, destacamos a notável versatilidade do conjunto de cláusulas SQL JOIN e suas variações. Essa versatilidade oferece a capacidade de criar consultas complexas, combinando dados de maneiras diversas, sem a necessidade de um código extenso.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>oracle</category>
      <category>beginners</category>
      <category>database</category>
    </item>
    <item>
      <title>SQL - Joins</title>
      <dc:creator>Matheus Camilo</dc:creator>
      <pubDate>Tue, 14 Nov 2023 01:19:02 +0000</pubDate>
      <link>https://dev.to/matheus-camilo/sql-joins-1k79</link>
      <guid>https://dev.to/matheus-camilo/sql-joins-1k79</guid>
      <description>&lt;h2&gt;
  
  
  1. Introdução
&lt;/h2&gt;

&lt;p&gt;   Em bancos de dados, a cláusula JOIN em SQL é um recurso fundamental que permite a combinação de informações provenientes de diferentes tabelas. Essa operação é essencial para unir colunas com base em valores comuns, proporcionando a criação de conjuntos de dados mais abrangentes e significativos. &lt;/p&gt;

&lt;p&gt;   O SQL padrão ANSI define cinco tipos principais de JOIN - INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN e CROSS JOIN - cada um desempenhando um papel específico na obtenção de dados conforme as necessidades da consulta. Em um cenário onde os dados são distribuídos em várias tabelas lógicas, o uso eficiente de JOINS é crucial para garantir a integridade e a abrangência das análises realizadas em bancos de dados relacionais. Essa capacidade de unir dados de maneira coesa e eficiente é fundamental para explorar toda a potencialidade dos sistemas de gerenciamento de banco de dados.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  2. Desenvolvimento
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Inner Join&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1.1 Definição
&lt;/h4&gt;

&lt;p&gt;   O &lt;code&gt;INNER JOIN&lt;/code&gt; (ou só apenas join) é uma cláusula utilizada para unir registros que possuem correspondentes em ambas tabelas. Caso formos representar utilizando conceitos de conjutos, o resultado desta junção é a intersecção entre a Tabela A e B. Gera como resultado uma linha da Tabela A para cada registro correspondente da tabela B. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kxjk3ij4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/3g1l8BRbnugGQJpkCkZCnkMy9E1-AG2m2cfJ2gHKHWFjXJUUM7XydhDfLsmiBdrYYYT02IL9gd3wTXh93ckdynOxxZA1bZWaL1KXymSHpjmJ9QzVPxNj45-bOc5tsUrRBmng-zOH" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kxjk3ij4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/3g1l8BRbnugGQJpkCkZCnkMy9E1-AG2m2cfJ2gHKHWFjXJUUM7XydhDfLsmiBdrYYYT02IL9gd3wTXh93ckdynOxxZA1bZWaL1KXymSHpjmJ9QzVPxNj45-bOc5tsUrRBmng-zOH" alt="Inner Join" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1.2 Exemplo
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;tabela_a&lt;/span&gt;
&lt;span class="k"&gt;INNER&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;tabela_b&lt;/span&gt; 
    &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;tabela_a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tabela_b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tabela_a_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h3&gt;
  
  
  2. &lt;strong&gt;Left Join&lt;/strong&gt;
&lt;/h3&gt;
&lt;h4&gt;
  
  
  2.1 Definição
&lt;/h4&gt;

&lt;p&gt;   O &lt;code&gt;LEFT JOIN&lt;/code&gt; é uma cláusula utilizada para unir registros de tabelas, trazendo todos os registros da tabela A e os seus correspondentes da tabela B. Em um registro da tabela A que não haja correspondente da tabela B, os campos da tabela B unidos a este registro aparecem vazios.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0poQjQJA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/XJ9oLbH8TNqV9-G6UojxqbxWgTRLFMl3dOnAkx7yQLzxiLzzo9Is2qbgnzR5uRv_ipkYNWUdMQrAeiD6Pfe2JQWo2PmaVoBrOpvq37s3ShuvQK2wJP18zAdq1OZPYBS3ruEo13d3" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0poQjQJA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/XJ9oLbH8TNqV9-G6UojxqbxWgTRLFMl3dOnAkx7yQLzxiLzzo9Is2qbgnzR5uRv_ipkYNWUdMQrAeiD6Pfe2JQWo2PmaVoBrOpvq37s3ShuvQK2wJP18zAdq1OZPYBS3ruEo13d3" alt="Left Join" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.2 Exemplo
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;tabela_a&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;tabela_b&lt;/span&gt; 
    &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;tabela_a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tabela_b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tabela_a_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h3&gt;
  
  
  3. &lt;strong&gt;Right Join&lt;/strong&gt;
&lt;/h3&gt;
&lt;h4&gt;
  
  
  3.1 Definição
&lt;/h4&gt;

&lt;p&gt;   O &lt;code&gt;RIGHT JOIN&lt;/code&gt; é uma cláusula utilizada para unir registros de tabelas, trazendo todos os registros da tabela B e os seus correspondentes da tabela A. Em um registro da tabela B que não haja correspondente da tabela A, os campos da tabela A deste registro aparecem vazios. Ele é praticamente o inverso do &lt;code&gt;LEFT JOIN&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xwQYyoMs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/-6wZtDliITiZ174AYf9Bcb5df2Y6oupwlWxddEZVsNxNMu32I_m68SYo7ncob8Igf4AjSe6ZRfwmJQOiYcYRoo-MauhjcedNVofCNv7W6NOVQp-Y4RVQRzc8tQn7AIAW05NjWglj" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xwQYyoMs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/-6wZtDliITiZ174AYf9Bcb5df2Y6oupwlWxddEZVsNxNMu32I_m68SYo7ncob8Igf4AjSe6ZRfwmJQOiYcYRoo-MauhjcedNVofCNv7W6NOVQp-Y4RVQRzc8tQn7AIAW05NjWglj" alt="Right Join" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3.2 Exemplo
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;tabela_a&lt;/span&gt;
&lt;span class="k"&gt;RIGHT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;tabela_b&lt;/span&gt; 
    &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;tabela_a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tabela_b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tabela_a_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h3&gt;
  
  
  4. &lt;strong&gt;Full Join&lt;/strong&gt;
&lt;/h3&gt;
&lt;h4&gt;
  
  
  4.1 Definição
&lt;/h4&gt;

&lt;p&gt;   O &lt;code&gt;FULL JOIN&lt;/code&gt; é uma cláusula utilizada para unir registros de tabelas, tanto os correspondentes quanto os que não possuem correspondência alguma de ambas as tabelas. O resultado dessa junção é o resultado do &lt;code&gt;LEFT JOIN&lt;/code&gt; + &lt;code&gt;RIGHT JOIN&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O7EVrJ8H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/FPaG66RF7633vSMy9AKxB2HqU-7qNTLlvLZgiOYwSbVip3D3cdHCGry1-BlCzpWO39h5HSNA_mJBsSGkbBV0HqghYy2pUmDrQTrgfxaijribC88Ml5PXBPPRQvpmbZRF6XJWlIt3" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O7EVrJ8H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/FPaG66RF7633vSMy9AKxB2HqU-7qNTLlvLZgiOYwSbVip3D3cdHCGry1-BlCzpWO39h5HSNA_mJBsSGkbBV0HqghYy2pUmDrQTrgfxaijribC88Ml5PXBPPRQvpmbZRF6XJWlIt3" alt="Full Join" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  4.2 Exemplo
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;tabela_a&lt;/span&gt;
&lt;span class="k"&gt;FULL&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;tabela_b&lt;/span&gt; 
    &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;tabela_a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tabela_b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tabela_a_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h3&gt;
  
  
  5. &lt;strong&gt;Cross Join&lt;/strong&gt;
&lt;/h3&gt;
&lt;h4&gt;
  
  
  5.1 Definição
&lt;/h4&gt;

&lt;p&gt;   O &lt;code&gt;CROSS JOIN&lt;/code&gt; é uma cláusula utilizada para gerar o produto escalar entre as tabelas, ou seja, juntando cada registro da tabela A com cada registro da tabela B. Esta operção tem como resultado todas as probabilidades de junção de registros entre as duas tabelas. Por fim, a quantidade de linhas resultante é dada pela quantidade de linhas da tabela A vezes a quantidade de linhas da tabela B.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QTc_gVi3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/F8Lo1m8vuP4JfJONh5yWj34_U1doOfhZs8kPV8w83IIrUS7T6YB6yCCTjESAoHDkexSK-7orBuiG9XjAI4lfUcoF_jfTu-A18vP7wFJp3g9LBlSVUUdQzy0HYB6RunpTwFlYjvAn" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QTc_gVi3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/F8Lo1m8vuP4JfJONh5yWj34_U1doOfhZs8kPV8w83IIrUS7T6YB6yCCTjESAoHDkexSK-7orBuiG9XjAI4lfUcoF_jfTu-A18vP7wFJp3g9LBlSVUUdQzy0HYB6RunpTwFlYjvAn" alt="Cross Join" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  5.2 Exemplo
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;tabela_a&lt;/span&gt;
&lt;span class="k"&gt;CROSS&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;tabela_b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h3&gt;
  
  
  Vantagens e Desvantagens de se utilizar os JOINs
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Vantagens
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Funciona muito bem com tabelas normalizadas&lt;/li&gt;
&lt;li&gt;Simplificar consultas complexas entre várias tabelas relacionadas&lt;/li&gt;
&lt;li&gt;Melhora no Desempenho caso utilizado de forma correta no cenário adequado&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Desvantagens
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;É mais fácil consultar as informações necessárias em apenas em uma tabela em vez de obter dados de terceiras&lt;/li&gt;
&lt;li&gt;Não é recomendado para tabelas desnormalizadas&lt;/li&gt;
&lt;li&gt;Quanto mais tabelas envolvidas, maior é o impacto em performance da consulta&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Exemplos de aplicações no mercado:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tO-00sg3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fzwv10rybviv72n9tdxv.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tO-00sg3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fzwv10rybviv72n9tdxv.jpeg" alt="Inner Join" width="600" height="774"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3dZQcaVP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4hoqxre2ay078wt5r58.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3dZQcaVP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4hoqxre2ay078wt5r58.jpeg" alt="Left Join" width="739" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bKhwcYzG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amq0d84oiwrky68lzlay.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bKhwcYzG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amq0d84oiwrky68lzlay.jpeg" alt="Right Join" width="734" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HGmrmMLT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iaobo0dkh2qz3kutyqih.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HGmrmMLT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iaobo0dkh2qz3kutyqih.jpeg" alt="Full Join" width="736" height="699"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0N74jIQX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkzuwdj09zifqgyviffx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0N74jIQX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkzuwdj09zifqgyviffx.jpeg" alt="Cross Join" width="600" height="836"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  3. Conclusão
&lt;/h2&gt;

&lt;p&gt;    O JOIN no SQL é uma cláusula importantíssima para manipular dados, fazer a relação entre tabelas e permitir filtragem para entendimento e controle. Assim, é uma forma de gerenciar a complexidade de bancos de dados grandes e gerar insights precisos sobre eles. &lt;/p&gt;

&lt;p&gt;    Os diversos tipos de JOINS fornecem uma maneira poderosa de combinar dados de várias tabelas. O INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN e CROSS JOIN são úteis em diferentes situações, permitindo manipulação e análise eficaz de dados complexos. Dominar esses tipos de JOINS amplia suas habilidades em SQL, tornando suas consultas mais eficientes e precisas.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Imagens dos joins: &lt;a href="https://blog.betrybe.com/sql/sql-join/"&gt;https://blog.betrybe.com/sql/sql-join/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Imagens das aplicações no mercado: &lt;a href="https://www.linkedin.com/pulse/entendendo-e-utilizando-os-tipos-de-joins-em-sql-um-guia-sousa/?originalSubdomain=pt"&gt;https://www.linkedin.com/pulse/entendendo-e-utilizando-os-tipos-de-joins-em-sql-um-guia-sousa/?originalSubdomain=pt&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sql</category>
      <category>beginners</category>
      <category>programming</category>
      <category>database</category>
    </item>
  </channel>
</rss>
