Você se junta a duas tabelas no MySQL usando a cláusula `junção` em uma instrução` select`. Existem vários tipos de junções, cada um com um comportamento ligeiramente diferente:
1. `Interno junção` (mais comum): Retorna linhas apenas quando houver uma correspondência nas duas tabelas com base na condição de junção. Se não houver correspondência na tabela, a linha será excluída do resultado.
`` `SQL
Selecione Column_Names
Da Tabela 1
JONE INNER Tabela 2 na tabela1.column_name =tabela2.column_name;
`` `
* `tabela1` e` tabela2`:as tabelas que você deseja participar.
* `column_name`:as colunas usadas para combinar linhas entre as tabelas. Essas colunas devem ter tipos de dados compatíveis.
Exemplo: Digamos que você tenha duas mesas:
*
`clientes`: `CustomerId`,` name`, `City`
*
`ordens`: `OrderId`,` CustomerId`, `OrderDate`,` TotalAmount '
Para obter o nome do cliente e os detalhes do pedido para todos os pedidos:
`` `SQL
Selecione clientes.name, orders.orderid, orders.orderdate, orders.totalamount
De clientes
Ordens de junção interna em clientes.customerId =orders.customerId;
`` `
Isso retornará apenas clientes que fizeram pedidos e pedidos que pertencem aos clientes existentes.
2. `Esquerda junção` (ou` junta externa esquerda`): Retorna todas as linhas da tabela esquerda (`Tabela1`), mesmo que não haja correspondência na tabela direita (` tabela2`). Se não houver correspondência na tabela certa, as colunas da tabela certa terão valores `null '.
`` `SQL
Selecione Column_Names
Da Tabela 1
Junção esquerda Tabela 2 na tabela1.column_name =tabela2.column_name;
`` `
Exemplo: Para obter todos os clientes e seus pedidos (incluindo clientes sem pedidos):
`` `SQL
Selecione clientes.name, orders.orderid, orders.orderdate, orders.totalamount
De clientes
Pedidos de junção de esquerda em clientes.customerId =orders.customerId;
`` `
3. `Junção direita` (ou` junta externa direita`): Retorna todas as linhas da tabela direita (`Tabela2`), mesmo que não haja correspondência na tabela esquerda (` Tabela1`). Se não houver correspondência na tabela esquerda, as colunas da tabela esquerda terão valores `null '.
`` `SQL
Selecione Column_Names
Da Tabela 1
Junção direita Tabela 2 na tabela1.column_name =tabela2.column_name;
`` `
Exemplo: (Menos comum, mas útil em cenários específicos) Isso é funcionalmente equivalente a uma `junta à esquerda 'com as tabelas trocadas.
4. `Junção externa completa`: Retorna todas as linhas de ambas as tabelas. Se houver uma partida, a linha correspondente será retornada. Se não houver correspondência em uma tabela, as colunas da outra tabela terão valores `null '.
mysql não suporta diretamente `junto externo completo` . Você precisa simulá -lo usando `união 'de` `esquerda junção` e` junção direita'.
`` `SQL
Selecione Column_Names
Da Tabela 1
Junção esquerda Tabela 2 na tabela1.column_name =tabela2.column_name
UNIÃO
Selecione Column_Names
Da Tabela 1
Junção direita Tabela 2 na tabela1.column_name =tabela2.column_name;
`` `
Escolhendo a junção correta: A escolha do tipo de junção depende de quais dados você precisa. `Inner Junção` é a opção mais frequente, mas a` `esquerda junção` e` junção direita 'são cruciais quando você precisa preservar todas as linhas de uma das tabelas. Simular `junção externa completa 'quando precisar de todas as linhas de ambas as tabelas. Lembre -se de usar aliases (`tabela1`,` tabela2`) para obter clareza e evitar a ambiguidade quando os nomes das colunas são iguais nas duas tabelas.