Curso
Entender as sutilezas dos joins em SQL é essencial para quem trabalha com bancos de dados relacionais. Neste tutorial, vamos analisar de perto o LEFT JOIN e o LEFT OUTER JOIN em SQL.
E se você quer dominar SQL e levar suas consultas para o próximo nível, inscreva-se em um curso como Joining Data in SQL que vai ajudar muito a entender as diferenças sutis, mas importantes, entre joins de uma e de duas tabelas.
Aprimoramento de SQL para iniciantes
LEFT JOIN vs. LEFT OUTER JOIN
Não há diferença entre LEFT JOIN e LEFT OUTER JOIN. Elas são funções SQL intercambiáveis. Ambas fazem exatamente o mesmo trabalho: retornar todas as linhas da tabela da esquerda e as linhas correspondentes da tabela da direita.
Vamos ver um exemplo prático para confirmar que LEFT JOIN e LEFT OUTER JOIN são a mesma coisa. Para isso, vamos criar e usar duas tabelas de exemplo: Employees e Departments.
CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName VARCHAR(50)
);
INSERT INTO Departments (DepartmentID, DepartmentName) VALUES
(1, 'HR'),
(2, 'IT'),
(3, 'Finance'),
(4, 'Marketing');
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName VARCHAR(50),
DepartmentID INT,
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);
INSERT INTO Employees (EmployeeID, EmployeeName, DepartmentID) VALUES
(1, 'Alice', 1),
(2, 'Bob', 2),
(3, 'Charlie', NULL),
(4, 'David', 3);
LEFT JOIN
Com as duas tabelas prontas, vamos executar uma consulta com LEFT JOIN.
SELECT Employees.EmployeeID, Employees.EmployeeName,
Departments.DepartmentName
FROM Employees
LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

Saída da função LEFT JOIN. Imagem do autor
Nossa consulta com LEFT JOIN retorna todas as linhas da tabela da esquerda, Employees, e as correspondentes da tabela da direita, Departments. Se não houver correspondência, são retornados valores NULL (ou ausentes) para as colunas da tabela Departments, que é a da direita.
LEFT OUTER JOIN
Agora vamos testar com LEFT OUTER JOIN:
SELECT Employees.EmployeeID, Employees.EmployeeName, Departments.DepartmentName
FROM Employees
LEFT OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

Saída da função LEFT OUTER JOIN. Imagem do autor
Você pode ver que as duas consultas produziram a mesma saída.
Casos de uso para LEFT JOIN ou LEFT OUTER JOIN
LEFT JOIN / LEFT OUTER JOIN é extremamente útil em vários cenários. Aqui vão alguns exemplos.
-
Identificar registros sem correspondência: Você pode usar
LEFT JOINouLEFT OUTER JOINpara encontrar registros em uma tabela que não têm correspondência em outra. Na consulta acima, dá para ver que nosso amigo, Charlie, não foi associado a nenhum departamento. -
Verificações de integridade de dados: Você pode usar
LEFT JOINouLEFT OUTER JOINpara garantir consistência entre tabelas, checando registros ausentes ou divergentes. Por exemplo, poderíamos usar uma cláusulaWHEREpara filtrar o resultado e manter apenas as linhas em que oDepartments.DepartmentIDestáNULL(ou ausente). -
Combinação de dados relacionados: Use
LEFT JOINouLEFT OUTER JOINpara reunir dados de tabelas relacionadas em um único relatório completo. Essa abordagem agrega informações de várias fontes e oferece uma visão mais completa dos seus dados.
Desempenho e técnicas avançadas
Embora LEFT JOIN e LEFT OUTER JOIN sejam simples de usar, há considerações de desempenho e técnicas avançadas importantes.
Impacto no desempenho da consulta
LEFT JOIN/LEFT OUTER JOIN pode impactar o desempenho com conjuntos de dados grandes. À medida que o número de linhas aumenta, o tempo para processar o join e trazer os resultados também cresce. Por isso, é essencial considerar o tamanho das tabelas envolvidas e otimizar suas consultas para ganhar eficiência.
Estratégias de indexação para melhorar o desempenho
Usar índices nas colunas envolvidas nas condições do join pode reduzir significativamente o tempo de processamento. Um índice ajuda o banco a localizar e casar linhas entre tabelas com mais rapidez. Por exemplo, se você frequentemente faz joins por DepartmentID, criar um índice na coluna DepartmentID em ambas as tabelas acelera o processo, deixando suas consultas mais eficientes e responsivas.
Comparando com outros tipos de join
Entender quando usar diferentes joins (INNER JOIN, RIGHT JOIN, FULL OUTER JOIN) é importante para otimizar consultas. LEFT JOIN ou LEFT OUTER JOIN é especialmente útil quando você precisa de todos os registros da tabela da esquerda. Se não precisar de todos os registros da esquerda, considere outra opção.
Uso com subconsultas
Subconsultas, também chamadas de consultas internas ou aninhadas, ajudam em cenários complexos de recuperação de dados. Quando usadas com LEFT JOIN ou LEFT OUTER JOIN, elas permitem filtrar e agregar dados, fazer joins condicionais e dividir consultas complexas em partes mais gerenciáveis.
Considerações finais
Entender as funções LEFT JOIN e LEFT OUTER JOIN em SQL é fundamental para gestão, relatórios e análise de dados eficientes. Embora tenham funcionalidade idêntica, conhecer os casos de uso, impactos de desempenho e técnicas avançadas ajuda você a tirar melhor proveito de qualquer uma delas. Para continuar aprendendo, explore as fontes abaixo:
- Introduction to SQL: aprenda a criar e consultar bancos de dados relacionais usando SQL.
- SQL Fundamentals: desenvolva as habilidades fundamentais de SQL para interagir e consultar seus dados.
- Learn SQL: adquira conhecimentos práticos de uma linguagem em alta demanda para gerenciar dados em bancos relacionais.
- Reporting in SQL: neste curso mão na massa, você vai aprender a criar seus próprios relatórios e dashboards em SQL e aprimorar suas habilidades de exploração, limpeza e validação de dados.
Obtenha uma das melhores certificações em SQL
Profissional experiente em funções de ciência de dados, inteligência artificial, análise e estratégia, com mais de 18 anos de experiência nas áreas de -: Ciência de dados, ML e IA ~ Ciência de dados, machine learning supervisionado e não supervisionado, aprendizagem profunda, modelagem preditiva, processamento de linguagem natural (NLP), modelagem e análise estatística, otimização, estratégia de negócios e análise ~ desenvolvimento e avaliação de modelos de negócios, análise descritiva e diagnóstica, EDA, visualização, análise de causa raiz, análise de sensibilidade e cenário.
Perguntas frequentes sobre SQL
Qual é a diferença entre LEFT JOIN e LEFT OUTER JOIN?
Não há diferença; LEFT JOIN e LEFT OUTER JOIN fazem a mesma coisa e podem ser usados de forma intercambiável.
Quando devo usar um LEFT JOIN?
Use LEFT JOIN quando você precisar de todos os registros da tabela da esquerda e os registros correspondentes da tabela da direita. Registros sem correspondência na tabela da direita terão valores NULL.
LEFT JOIN retorna mais linhas do que a tabela da esquerda?
Não. LEFT JOIN retorna todas as linhas da tabela da esquerda e as correspondentes da tabela da direita. Ele não aumenta a contagem de linhas da tabela da esquerda.
Como lidar com valores NULL nos resultados de um LEFT JOIN?
Você pode usar a função COALESCE para substituir valores ausentes por um valor padrão no conjunto de resultados.
Quais são os casos de uso mais comuns de LEFT JOIN?
Casos comuns incluem identificar registros sem correspondência, realizar verificações de integridade de dados e combinar conjuntos de dados em processos de ETL.

