Pré-requisitos para o aparecimento do operador JOIN
Conforme a quantidade de dados nas tabelas cresce, valores duplicados costumam aparecer nelas. Por exemplo, a tabela de produtos tem nomes de marcas. que às vezes se repetem. Seria útil ter uma tabela de marcas separada para eles, que conteria, por exemplo, esses dados:
- id - id da marca;
- nome – nome da marca;
- company_owner - o nome da empresa proprietária da marca;
- company_contacts - contatos da empresa do proprietário da marca.
Então gostaríamos de criar uma tabela de endereços na qual poderíamos colocar todos os endereços:
- id – endereços de identificação;
- país;
- região;
- cidade;
- rua;
- casa;
- fecho eclair.
Além disso, nesta tabela seria possível armazenar não apenas os endereços de empresas detentoras de marcas, mas também os endereços de clientes e funcionários. E essa abordagem é simplesmente uma consequência do crescimento da quantidade de dados (o número de linhas nas tabelas). Isso facilita a manipulação de dados em tabelas e a manutenção de sua integridade.
Quando você tem 5 funcionários, basta inserir a ocupação deles na coluna de ocupação . Se você tem 5 mil funcionários em sua empresa, então precisa de uma tabela com uma lista de x profissões e suas responsabilidades.
Na linguagem Java, aliás, existe algo parecido. Se você tiver muito código em um método, haverá o desejo de dividi-lo em vários métodos. Se houver muitos métodos em uma classe, quero dividi-la em várias classes.
É por isso que grandes bancos de dados possuem milhares de tabelas. E quase todas as consultas são executadas em várias tabelas ao mesmo tempo. E o produto cartesiano das linhas de três tabelas em cada uma das quais tem mil registros já é um bilhão de linhas.
Mas apenas filtrar um bilhão de linhas usando WHERE pode levar horas. Portanto, os criadores da linguagem SQL ofereceram sua solução - o operador JOIN.
Introdução ao operador JOIN
O operador JOIN é usado para informar explicitamente ao servidor SQL que não precisamos de um produto cartesiano de todas as linhas de tabelas para todos, mas de uma colagem inteligente de linhas de tabelas diferentes que se referem umas às outras usando um ID (ou de outra forma) . O servidor possui um algoritmo separado para processar junções de tabelas usando o operador JOIN, que permite que essas operações sejam executadas com muito mais rapidez. A forma geral do operador JOIN é a seguinte:
table 1 JOIN table 2 ON condition
Diz aqui que você precisa combinar as tabelas table1 e table2 em uma tabela e usar a condição como critério de junção .
Vamos pegar nosso antigo exemplo:
SELECT * FROM employee, task WHERE emploee.id = task.emploee_id
E reescreva-o usando o operador JOIN:
SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id
Ambas as consultas darão o mesmo resultado em nosso caso, mas isso ocorre apenas porque as consultas são muito simples. No futuro, WHERE permite que você crie exatamente o filtro de linha, e aquele especificado após ON permite que você escreva scripts complexos para vincular tabelas. Você também pode usar aliases (aliases de tabela) ao usar a instrução JOIN. Exemplo:
SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id
GO TO FULL VERSION