JOIN SQL
- Página anterior Aliases SQL
- Próxima página Inner Join SQL
O join SQL é usado para consultar dados dessas tabelas com base na relação entre as colunas de duas ou mais tabelas.
Join e Chave
Às vezes, para obter resultados completos, precisamos obter resultados de duas ou mais tabelas. Nesse caso, precisamos executar um join.
As tabelas no banco de dados podem ser ligadas entre si por meio de chaves. A chave primária (Primary Key) é uma coluna, onde cada valor da linha é único. Em uma tabela, cada valor da chave primária é único. O objetivo disso é cruzar e amarrar os dados entre as tabelas sem repetir todos os dados de cada tabela.
Vamos ver a tabela "Persons":
Id_P | LastName | FirstName | Endereço | Cidade |
---|---|---|---|---|
1 | Adams | John | Oxford Street | Londres |
2 | Bush | George | Fifth Avenue | Nova York |
3 | Carter | Thomas | Changan Street | Pequim |
Por favor, note que a coluna "Id_P" é a chave primária da tabela "Persons". Isso significa que nenhuma linha pode ter o mesmo Id_P. Mesmo que os nomes de duas pessoas sejam completamente iguais, o Id_P pode distingui-las.
Vamos ver a tabela "Orders":
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
Por favor, note que a coluna "Id_O" é a chave primária da tabela "Orders", além disso, a coluna "Id_P" na tabela "Orders" é usada para referenciar a tabela "Persons" sem a necessidade de usar seus nomes exatos.
Atenção, a coluna "Id_P" liga as duas tabelas acima.
Referência a duas tabelas
Podemos obter dados de duas tabelas através de referência a duas tabelas:
Quem comprou o produto e o que comprou?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
Conjunto de resultados:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
SQL JOIN - Uso de Join
Além do método acima, também podemos usar a palavra-chave JOIN para obter dados de duas tabelas.
Se quisermos listar todas as encomendas das pessoas, podemos usar a seguinte sentença SELECT:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
Conjunto de resultados:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Diferentes JOIN SQL
Além do INNER JOIN (conexão interna) que usamos no exemplo acima, também podemos usar outros tipos de conexão.
A seguir está listado os tipos de JOIN que você pode usar, bem como as diferenças entre eles.
- JOIN: Retorna linhas se houver pelo menos uma correspondência na tabela
- LEFT JOIN: Mesmo que não haja correspondência na tabela direita, retorna todas as linhas da tabela esquerda
- RIGHT JOIN: Mesmo que não haja correspondência na tabela esquerda, retorna todas as linhas da tabela direita
- FULL JOIN: Retorna linhas se houver correspondência em qualquer uma das tabelas
- Página anterior Aliases SQL
- Próxima página Inner Join SQL